Mediawiki 設定:修訂版本之間的差異

出自六年制學程
跳轉到: 導覽搜尋
預設使用者選項($wgDefaultUserOptions)
自訂javascript
 
(未顯示2位用戶所作出之68次版本)
第 1 行: 第 1 行:
 
[[分類:Mediawiki]]
 
[[分類:Mediawiki]]
 +
[https://www.mediawiki.org/wiki/Manual:FAQ/zh MediaWiki常見問題解答]
 
==網站無法正常顯示==
 
==網站無法正常顯示==
 +
===重刷畫面===
 +
<strong>注意:</strong>頁面儲存後,您可能必須繞過瀏覽器的快取才能看到更改。
 +
<ul>
 +
<li>網址列加「?action=purge」</li>
 +
<li><strong>Firefox / Safari:</strong> 按 <em>Shift</em> 同時點擊 <em>Reload</em> ,或按 <em>Ctrl-F5</em> 或 <em>Ctrl-R</em> (麥金塔要按 <em>⌘-R</em> )</li>
 +
<li><strong>Google Chrome:</strong> 按 <em>Ctrl-Shift-R</em> (麥金塔要按 <em>⌘-Shift-R</em> )</li>
 +
<li><strong>Internet Explorer:</strong> 按 <em>Ctrl</em> 同時點擊 <em>Refresh</em> ,或按 <em>Ctrl-F5</em></li>
 +
<li><strong>Opera:</strong> 至 <em>Menu → Settings</em> (麥金塔要選 <em>Opera → Preferences</em> ) 然後 <em>Privacy &amp; security → Clear browsing data → Cached images and files</em>。</li>
 +
</ul>
 +
===個人化時區設定===
 +
#登入 → 我的偏好設定 → 顯示 → 時差 → 時區
 +
#會改變 user_properties 資料表,然後表現在「近期變動」、「檢視歷史」等的時間顯示
 +
#預設時區是 UTC(世界協調時間,Coordinated Universal Time)
 +
 
===修改 mediawiki 所在資料夾名稱===
 
===修改 mediawiki 所在資料夾名稱===
 
*當修改 mediawiki 所在資料夾名稱,須同步改 LocalSettings.php 中的 $wgScriptPath 。但此時 mediawiki 仍會從快取中取得包含舊資料夾名稱的許多快取頁,導致網站完全無法運作。請依畫面指示,在相關的檔案中加一行「echo __FILE__;」,使網頁內容發生變化,導致產生新的快取,問題即可逐步排除。例如在 includes/Defines.php 中加「echo __FILE__;」。
 
*當修改 mediawiki 所在資料夾名稱,須同步改 LocalSettings.php 中的 $wgScriptPath 。但此時 mediawiki 仍會從快取中取得包含舊資料夾名稱的許多快取頁,導致網站完全無法運作。請依畫面指示,在相關的檔案中加一行「echo __FILE__;」,使網頁內容發生變化,導致產生新的快取,問題即可逐步排除。例如在 includes/Defines.php 中加「echo __FILE__;」。
第 18 行: 第 33 行:
 
);
 
);
 
</pre>
 
</pre>
 +
===打開簡繁互轉功能===
 +
*設 $wgLanguageCode = "zh"
 +
*#Mediawiki 已經內建了轉換表 ZhConversion.ph
 +
*#最新版 MediaWiki 安裝配置時,語言選擇「中文(zh)」即可自動啟用
 
===啟用HTML可以使用img(預設關閉)===
 
===啟用HTML可以使用img(預設關閉)===
 
  $wgAllowImageTag = true;
 
  $wgAllowImageTag = true;
 
這是唯一可以在 wiki 頁表現 SVG 動畫功能的方法
 
這是唯一可以在 wiki 頁表現 SVG 動畫功能的方法
 +
 +
===可以使用維基共享資源的圖===
 +
$wgUseInstantCommons = true;
 +
 +
===啟用跨維基嵌入(預設關閉)===
 +
$wgEnableScaryTranscluding = true;
 +
而 wiki_interwiki 表中,想要嵌入的外部 wiki ,其 iw_local,iw_trans 兩欄的欄值須設為 1
 +
 +
===取消頁面監視(預設打開)===
 +
$wgDefaultUserOptions['watchcreations'] = 0;
 +
$wgDefaultUserOptions['watchdefault'] = 0;
 
===啟用上傳功能(預設關閉)===
 
===啟用上傳功能(預設關閉)===
 
  $wgEnableUploads = true;
 
  $wgEnableUploads = true;
第 28 行: 第 58 行:
 
===預設使用者選項($wgDefaultUserOptions)===
 
===預設使用者選項($wgDefaultUserOptions)===
 
取代匿名者及未客製化偏好設定使用者的使用者設定。是一個陣列,陣列元素請參考:[https://www.mediawiki.org/wiki/Manual:$wgDefaultUserOptions 手冊英文說明]。其中重要者如下:
 
取代匿名者及未客製化偏好設定使用者的使用者設定。是一個陣列,陣列元素請參考:[https://www.mediawiki.org/wiki/Manual:$wgDefaultUserOptions 手冊英文說明]。其中重要者如下:
*watchcreations:建立頁面時預設監視
+
*watchcreations:建立頁面時預設監視。
*watchdefault:修改頁面時預設監視
+
*watchdefault:修改頁面時預設監視。
 
其他次要元素如下:
 
其他次要元素如下:
*fancysig:預設 0 ,用戶使用自訂簽名
+
*fancysig:預設 0 ,用戶使用自訂簽名。
*nickname:預設空字串,暱稱
+
*nickname:預設空字串,暱稱。
*rememberpassword:預設 0 ,記住密碼
+
*rememberpassword:預設 0 ,記住密碼。
*gender:預設 unknown ,性別
+
*gender:預設 unknown ,性別。
*realname:使用實名
+
*realname:使用實名。
*imagesize:預設 2 ,即 800*600 ,受限於 $wgImageLimits
+
*imagesize:預設 2 ,即 800*600 ,受限於 $wgImageLimits。
*thumbsize:預設 2 ,即 180px ,受限於 $wgThumbLimits
+
*thumbsize:預設 2 ,即 180px ,受限於 $wgThumbLimits。
 +
*stubthreshold:預設 0 ,短條目顯示基本限制,單位為位元組。如果您輸入一個數值,所有低於此數值的條目在顯示為內部連結(又稱「維基連結」)時會呈現淡紅色。譬如說,如果您輸入200,所有小於200位元組的條目在顯示為內部連結時將呈現暗紅色。
 +
*underline:預設 2 ,連結畫不畫底線,0 不畫, 1 畫, 2 依瀏覽器預設。
 +
*justify:段落對齊。
 +
*language:指定的界面語言,這不是設置wiki的預設語言。
 +
*numberheadings:預設 0 ,標題自動編號,每個標題將擁有專屬的標號。
 +
*showtoc:1 秀, 0 不秀。
 +
*nocache:取消快取。
 +
*showhiddencats:預設 0 ,顯示隱藏分類,「隱藏分類」主要用於維護用途。
 +
*showjumplinks:啟用「跳轉到」訪問連結
 +
*diffonly:比對版本差異時下面不顯示頁面內容。針對長條目,此選項可以減少載入頁面差異的時間。
  
 
===啟用svg===
 
===啟用svg===
第 46 行: 第 86 行:
  
 
==外觀==
 
==外觀==
 +
===皮膚===
 +
共有四種:
 +
#Cologne Blue(科隆香水藍):2002到2003年間的標準皮膚,1.31版起已從安裝包移除。
 +
#MonoBook:1.13版以來的官方皮膚
 +
#Modern(現代):由MonoBook皮膚衍生而來,2008年被創建,1.31版起已從安裝包移除。
 +
#Vector:1.17版(2010.5.13)以後的官方皮膚
 +
1.24以前,安裝皮膚用 require_once "$IP/skins/皮膚名/皮膚名.php";
 +
 +
1.25以後,安裝皮膚用 wfLoadSkin('皮膚名');
 +
 +
===重要的 CSS===
 
*共筆頁用
 
*共筆頁用
 
*# skins/common/shared.css
 
*# skins/common/shared.css
 
*# skins/monobook/main.css
 
*# skins/monobook/main.css
 
*可列印版 skins/common/commonPrint.css
 
*可列印版 skins/common/commonPrint.css
*HTML載入指令為 &lt;link rel="stylesheet" href="/wiki1232/load.php?debug=false&amp;lang=zh-tw&amp;modules=mediawiki.legacy.commonPrint,shared|skins.vector&amp;only=styles&amp;skin=vector&amp;*" /&gt;
+
*HTML載入指令為 &lt;link rel="stylesheet" href="/wiki1231/load.php?debug=false&amp;lang=zh-tw&amp;modules=mediawiki.legacy.commonPrint,shared|skins.vector&amp;only=styles&amp;skin=vector&amp;*" /&gt;
 
*丁丁在上述兩個 css 均加入:
 
*丁丁在上述兩個 css 均加入:
 
  table.nicetable {border:1px solid black;border-collapse:collapse;}
 
  table.nicetable {border:1px solid black;border-collapse:collapse;}
 
  table.nicetable td {border:1px solid black;border-collapse:collapse;padding: 0.3em 0.5em;}
 
  table.nicetable td {border:1px solid black;border-collapse:collapse;padding: 0.3em 0.5em;}
 
  table.nicetable th {border:1px solid black;border-collapse:collapse;font-weight:normal;}
 
  table.nicetable th {border:1px solid black;border-collapse:collapse;font-weight:normal;}
 +
===設定 CSS===
 +
====(一)最早的操作設計====
 +
透過改 shared.css 和 commonPrint.css 即可生效
 +
 +
====(二)對所有頁生效====
 +
在較新的版本中改 shared.css 和 commonPrint.css 沒用,要編輯頁:MediaWiki:Common.css 才有用。
 +
#起先 wiki_page 表中沒有這一頁。
 +
#但仍可編頁:MediaWiki:Common.css,其預設內容為「/* 此 CSS 會套用至所有的介面外觀 */」。
 +
#一旦儲存變更後, wiki_page 表中即新增此頁,且套用到介面上。其名字空間為「8」。
 +
#可使用「@import url(http://jendo.org/mm/treestyles.css);」載入外部的 css
 +
#上述指示也可改為「mw.loader.load('http://jendo.org/mm/treestyles.css','text/css');」用資源載入方法(javascript全域函式)載入外部的 css
 +
進一步請參考:[https://www.mediawiki.org/wiki/Manual:CSS/zh 手冊:樣式表]
 +
 +
====(三)使用個別使用者的 CSS====
 +
須設「$wgAllowUserCss = true;」
 +
 +
當設定為「true」時,使用者可以通過建立一個名為"User:Username/skinname.css"的頁面,來建立他們自己的[https://meta.wikimedia.org/w/index.php?title=Help:User_style/zh&uselang=zh 使用者樣式]。
 +
 +
當啟用時,使用者可以在其「偏好設定」中選擇外觀並進行個性化客製化。
 +
 +
這可能會增加使用者的安全風險,以及引起通常是會被忽略的額外伺服器負載。
 +
 +
====(四)對特定頁生效====
 +
參考[[Mediawiki 外掛]]中的設定方法,完成 CSS 外掛設定之後,在該頁中加:
 +
*&#123;{#css:MyStyles.css}&#125; 或 &#123;{#css:/skins/MyStyles.css}&#125; ;
 +
*或直接在解析器函數中寫入 CSS 規則,如下例所示:
 +
<pre>&#123;{#css:
 +
  body {
 +
    background: yellow;
 +
    font-size: 20pt;
 +
    color: red;
 +
  }
 +
}&#125;</pre>
 +
 +
===設訂javascript===
 +
====(一)使用個別使用者的 js====
 +
要使用戶能夠使用自己的 JavaScript ,請將下列一行附加在 LocalSettings.php 中:
 +
<pre>$wgAllowUserJs = true;</pre>
 +
要禁用這個功能,請將 $wgAllowUserJs 設置為「false」或刪除這一行。
 +
 +
IExplorer 和 Firefox 允許使用 HTC 或 XBL 將 JavaScript 嵌入到樣式表中。 所以為了防止用戶定義 JavaScript ,您需要禁用 $wgAllowUserCss 。
 +
 +
====(二)對所有頁生效====
 +
#起先 wiki_page 表中沒有這一頁。
 +
#但仍可編頁:MediaWiki:Common.js,其預設內容為「/* 此 JavaScript 會用於使用者載入的每一個頁面。 */」。
 +
#一旦儲存變更後, wiki_page 表中即新增此頁,且套用到介面上。其名字空間為「8」。
 +
#可使用「mw.loader.load('http://jendo.org/mm/marktree.js');」來載入外部的 javascrip 。
 +
進一步請參考:[https://www.mediawiki.org/wiki/Manual:Interface/JavaScript JavaScript英文說明]
 +
 +
透過在 MediaWiki 命名空間中使用 JavaScript 文件並在 Template 命名空間中使用允許的 HTML ,可以將任何 HTML 和 JavaScript 安全地添加到 Wiki 頁面。
 +
 +
為了防止攻擊 Wiki ,常規的 Wiki 文本中禁用了多數 HTML 標籤和所有 JavaScript 。所以無法將 Google AdSense 標語, Disqus 註釋框,類似 Facebook 按鈕或任何其他可嵌入物件複製到頁面的原始碼中。由於存在嚴重的安全漏洞,您也不應該允許任何 HTML 或 JavaScript 使用於頁面原始碼中,其中包括允許攻擊者收集所有 Wiki 用戶使用的每個密碼。
 +
 +
====透過 MediaWiki:Common.js 直接放入任意的 HTML====
 +
mw-mywiki-example 代表 wiki 頁中以 id 屬性標示的某標籤,any HTML 代表任何要插入的 HTML 或 JavaScript 。
 +
 +
非 jQuery 用法:
 +
<pre>$(function () {
 +
var myElement = document.getElementById('mw-mywiki-example');
 +
myElement.innerHTML = 'any HTML';
 +
}());</pre>
 +
用 jQuery (內建)可將上述再濃縮為:
 +
<pre>$(function () {
 +
$('#mw-mywiki-example').html('any HTML');
 +
}());</pre>
 +
 +
====載入單獨的腳本====
 +
可以在 MediaWiki 名稱空間中創建一個新文件(以.js結尾),例如 MediaWiki:Example.js。 然後指示 MediaWiki 導入該腳本。為此,在 MediaWiki:Common.js 添加導入腳本指令:
 +
<pre>mw.loader.load( '/w/index.php?title=MediaWiki:Example.js&action=raw&ctype=text/javascript' );</pre>
 +
 +
====在指定的 wiki 頁中生效====
 +
上述的腳本,通常是定義了函式,備在哪裡等待呼叫。 wiki 頁中則使用&lt;div&gt;加以呼叫:
 +
<pre>&lt;div id='與腳本匹配的id'&gt;&lt;/div&gt;</pre>
 +
 +
確保&lt;div&gt;的ID與先前在腳本中指定的ID匹配。
 +
 +
由於一個 HTML 頁只能有一個元素匹配這個唯一的 ID ,所以若想要避免 ID 重複,可以使用模板。如你可以創建一個模板「Template:Advertisement」,然後在模板頁中寫下:
 +
<pre>&lt;div id='與腳本匹配的id'&gt;&lt;/div&gt;</pre>
 +
 +
然後在 wiki 頁中引用:
 +
<pre>{{Advertisement}}</pre>
 +
 +
====參考資料====
 +
#[https://www.mediawiki.org/w/index.php?title=Adding_JavaScript_to_Wiki_Pages 在 wiki 頁中加入 JavaScript(精華已翻譯在本段中)]
 +
#[https://www.mediawiki.org/wiki/Manual:Interface/JavaScript/zh 手册:界面/JavaScript]
 +
 +
===[https://www.mediawiki.org/wiki/Help:Templates/zh 模板]===
  
 
==更改某帳號密碼==
 
==更改某帳號密碼==
[http://www.mediawiki.org/wiki/Manual:FAQ/zh-hans#.E6.88.91.E5.A6.82.E4.BD.95.E6.89.8D.E8.83.BD.E9.87.8D.E7.BD.AE.E5.AF.86.E7.A0.81.EF.BC.9F 參考FAQ]
+
請參考:
===使用腳本檔===
+
#[https://www.mediawiki.org/w/index.php?title=Manual:FAQ/zh&variant=zh-tw#如何重置密码? FAQ]
 +
#[https://www.mediawiki.org/w/index.php?title=Manual:Resetting_passwords/zh&variant=zh-tw 重設密碼]
 +
#[https://www.mediawiki.org/w/index.php?title=Manual:$wgPasswordDefault/zh&variant=zh-tw $wgPasswordDefault 解說]
 +
 
 +
<p style='color:brown'>Mediawiki 的帳號可以接受「含空白」的密碼(如洪榮良在福留子孫中的密碼)。</p>
 +
 
 +
但是 MediaWiki 的帳號名稱不能包含空白,它會被視為非法字元。如果您試圖在帳號名稱中使用空白, MediaWiki 會拒絕創建該帳號。建議使用字母、數字和底線來創建帳號名稱,以確保其有效性和可讀性。
 +
 
 +
===一、自架伺服器,能進到伺服器的作業系統:使用腳本檔===
 
*得到的密碼和 web 介面「建立新帳號」時所產生的密碼格式相同。但同一個人兩次執行的結果並不相同。
 
*得到的密碼和 web 介面「建立新帳號」時所產生的密碼格式相同。但同一個人兩次執行的結果並不相同。
 
*執行步驟:
 
*執行步驟:
 
*#進到伺服器的作業系統,並有執行  php 腳本的權限。
 
*#進到伺服器的作業系統,並有執行  php 腳本的權限。
*#進入某 mediawiki 的maintenance子目錄。運行下列命令:<pre>php changePassword.php --user=someuser --password=somepass</pre>其中的「somepass」就是您將要設置的密碼,而「someuser」就是您將修改其密碼的用戶名,該用戶名應出現在數據庫的「user」表中。
+
*#進入某 mediawiki 的 maintenance 子目錄。運行下列命令:<pre>/usr/local/bin/php74 changePassword.php --user=someuser --password=somepass</pre>其中的「somepass」就是您將要設置的密碼,而「someuser」就是您將修改其密碼的用戶名,該用戶名應出現在數據庫的「user」表中。帳號名和密碼都不要加引號。
 +
 
 +
====(一)不要改「帳號名稱」====
 +
alWiki 因為「鄭少銘」改名「鄭昱翎」,丁丁從後台改 wiki_user 表 user_id=52 的資料 ,從此「鄭昱翎」「使用者名稱無效」。
 +
#請參考 [https://github.com/wikimedia/mediawiki/blob/master/languages/i18n/zh-hant.json wikimedia zh-hant.json] 使用者名稱無效的常數為 noname 。
 +
#請參考 [http://51.103.53.242/html/mediawiki/mantis/lang/strings_chinese_traditional.txt strings_chinese_traditional] 使用者名稱無效的變數為 $MANTIS_ERROR[ERROR_USER_NAME_INVALID] 。
 +
#在 maintenance 子目錄中執行「/usr/local/bin/php73 changePassword.php --user=鄭昱翎 --password=xxxxxxxx」得到的回應為「No such user: 鄭昱翎」
 +
#使用「UPDATE USER SET user_password = concat(':B:鹽:',MD5(CONCAT('鹽-',MD5(<span style='color:red'>'somepass'</span>)))) WHERE user_name=<span style='color:red'>'someuser'</span>;」還是無法解決</span>;
 +
#但明明 user_id=52 的 user_name 就是「鄭昱翎」
 +
#此問題待解
 +
 
 +
===二、租賃伺服器,無法進到伺服器的作業系統,或助理資訊能力有限:===
 +
====(一)使用 wiki 預設功能====
 +
'''A.已知某帳號的舊密碼'''
 +
#以舊帳密「登入」
 +
#進入「偏好設定」
 +
#*從各頁頁首「偏好設定」(與「登入」同一排)進入
 +
#*從「特殊頁面 / 使用者與權限 / 偏好設定」進入
 +
#點擊「變更密碼」(Special:ResetPassword)
 +
#有須要時再驗證一次帳密
 +
#輸入兩次新帳密
 +
 
 +
'''B.已丟失某帳號的密碼'''
 +
#安裝並啟用「[[mw:Extension:ChangeUserPasswords/zh|ChangeUserPasswords]]」擴展,該擴展:
 +
#*允許管理員一次更改多個用戶的密碼。
 +
#*密碼隨機生成並以表格形式顯示給管理員。
 +
#*除管理員之外的任何其他用戶都無法訪問或查看該頁面。
 +
#以管理員身份進入「特殊頁面 / 使用者與權限 / 更改使用者密碼」
 +
#核取要更改密碼的一個或多個帳號,點擊「更改使用者密碼」
 +
#之後會更改密碼,並報告各帳號的新密碼。
 +
#以新密碼登入,依上一段的步驟修改密碼
 +
 
 +
使用時機:當wiki應該被新用戶使用並且舊用戶不再需要訪問wiki時,管理員可以在不創建新用戶的情況下將新密碼共享給新用戶。所以新用戶可以直接登錄並開始使用wiki。這在每學期都有新生的大學非常有用。
 +
 
 +
 
 +
無法使用 Special:PasswordReset(特殊頁面 / 重新設定密碼),因為這個方法須要由 mediawiki 將新密碼寄給使用者,而我們一般不開設郵件伺服器。
 +
 
 +
====(二)直接在 MySQL 中修改====
 +
戰國策無法透過 adminer-x.x.x-mysql.php 修改;須透過 :8443 port 的後台管理,再用 phpMyAdmin 進去,才能修改資料表。
 +
 
 +
如果您使用了一種與目前密碼編製不同的格式,它會在用戶下一次登入時自動變成正確的格式。如果您正在使用更改了身份驗證流程的擴展程序(例如 LDAPAuth),下列方法可能不起作用。
  
===直接在 MySQL 中修改===
 
 
*可通過 MediaWiki 認證的密碼有四種:
 
*可通過 MediaWiki 認證的密碼有四種:
 
*#UPDATE USER SET user_password = concat(':B:鹽:',MD5(CONCAT('鹽-',MD5(<span style='color:red'>'somepass'</span>)))) WHERE user_name=<span style='color:red'>'someuser'</span>;
 
*#UPDATE USER SET user_password = concat(':B:鹽:',MD5(CONCAT('鹽-',MD5(<span style='color:red'>'somepass'</span>)))) WHERE user_name=<span style='color:red'>'someuser'</span>;
第 70 行: 第 255 行:
 
*#UPDATE USER SET user_password = MD5(CONCAT(user_id,'-',MD5(<span style='color:red'>'somepass'</span>)))  WHERE user_name=<span style='color:red'>'someuser'</span>;
 
*#UPDATE USER SET user_password = MD5(CONCAT(user_id,'-',MD5(<span style='color:red'>'somepass'</span>)))  WHERE user_name=<span style='color:red'>'someuser'</span>;
 
*#UPDATE USER SET user_password = MD5(<span style='color:red'>'somepass'</span>) WHERE user_name=<span style='color:red'>'someuser'</span>;
 
*#UPDATE USER SET user_password = MD5(<span style='color:red'>'somepass'</span>) WHERE user_name=<span style='color:red'>'someuser'</span>;
*$wgPasswordSalt已被設為true值(預設),使用上述的 1,3 ,設為 false 使用上述的 2,4 。
+
*$wgPasswordSalt(自1.34.0.版後移除) 已被設為 true 值(預設),使用上述的 1,3 ,設為 false 使用上述的 2,4 。
* changePassword.php 產生的密碼是上述的 1 。
+
*changePassword.php 產生的密碼以前是上述的 1 ,現在密碼字首是 pbkdf2:sha512
 +
 
 +
==更改條目頁頁名==
 +
#先在 MySQL ,wiki(資料庫)的wiki_page資料表中搜尋原頁名,直接進行頁名修改。
 +
#再到前台維基預修改條目頁名的頁面進行'''編輯'''異動後,該頁名即可同步修改。

2023年9月9日 (六) 14:40的最新修訂版本

MediaWiki常見問題解答

網站無法正常顯示

重刷畫面

注意:頁面儲存後,您可能必須繞過瀏覽器的快取才能看到更改。

  • 網址列加「?action=purge」
  • Firefox / Safari:Shift 同時點擊 Reload ,或按 Ctrl-F5Ctrl-R (麥金塔要按 ⌘-R )
  • Google Chrome:Ctrl-Shift-R (麥金塔要按 ⌘-Shift-R )
  • Internet Explorer:Ctrl 同時點擊 Refresh ,或按 Ctrl-F5
  • Opera:Menu → Settings (麥金塔要選 Opera → Preferences ) 然後 Privacy & security → Clear browsing data → Cached images and files

個人化時區設定

  1. 登入 → 我的偏好設定 → 顯示 → 時差 → 時區
  2. 會改變 user_properties 資料表,然後表現在「近期變動」、「檢視歷史」等的時間顯示
  3. 預設時區是 UTC(世界協調時間,Coordinated Universal Time)

修改 mediawiki 所在資料夾名稱

  • 當修改 mediawiki 所在資料夾名稱,須同步改 LocalSettings.php 中的 $wgScriptPath 。但此時 mediawiki 仍會從快取中取得包含舊資料夾名稱的許多快取頁,導致網站完全無法運作。請依畫面指示,在相關的檔案中加一行「echo __FILE__;」,使網頁內容發生變化,導致產生新的快取,問題即可逐步排除。例如在 includes/Defines.php 中加「echo __FILE__;」。

LocalSettings.php

權限

$wgGroupPermissions['*']['createaccount'] = false;	// 禁止路人建帳號
$wgGroupPermissions['*']['edit'] = false;		// 禁止路人編頁面
$wgGroupPermissions['user']['edit'] = true;		// 允許註冊者編頁面,預設值不必再另設
$wgGroupPermissions['*']['read'] = false;		// 禁止路人讀頁面
$wgWhitelistRead=array(					// 在上列前提下允許路人可讀的有限頁面
	"Main Page", 
	"Special:Userlogin",
	"Wikipedia:Help",
	urldecode("%E9%A6%96%E9%A0%81")   //正體中文的首頁
);

打開簡繁互轉功能

  • 設 $wgLanguageCode = "zh"
    1. Mediawiki 已經內建了轉換表 ZhConversion.ph
    2. 最新版 MediaWiki 安裝配置時,語言選擇「中文(zh)」即可自動啟用

啟用HTML可以使用img(預設關閉)

$wgAllowImageTag = true;

這是唯一可以在 wiki 頁表現 SVG 動畫功能的方法

可以使用維基共享資源的圖

$wgUseInstantCommons = true;

啟用跨維基嵌入(預設關閉)

$wgEnableScaryTranscluding = true;

而 wiki_interwiki 表中,想要嵌入的外部 wiki ,其 iw_local,iw_trans 兩欄的欄值須設為 1

取消頁面監視(預設打開)

$wgDefaultUserOptions['watchcreations'] = 0;
$wgDefaultUserOptions['watchdefault'] = 0;

啟用上傳功能(預設關閉)

$wgEnableUploads = true;

images chmod 777 (或允許帳號 apache 寫入內容)

預設使用者選項($wgDefaultUserOptions)

取代匿名者及未客製化偏好設定使用者的使用者設定。是一個陣列,陣列元素請參考:手冊英文說明。其中重要者如下:

  • watchcreations:建立頁面時預設監視。
  • watchdefault:修改頁面時預設監視。

其他次要元素如下:

  • fancysig:預設 0 ,用戶使用自訂簽名。
  • nickname:預設空字串,暱稱。
  • rememberpassword:預設 0 ,記住密碼。
  • gender:預設 unknown ,性別。
  • realname:使用實名。
  • imagesize:預設 2 ,即 800*600 ,受限於 $wgImageLimits。
  • thumbsize:預設 2 ,即 180px ,受限於 $wgThumbLimits。
  • stubthreshold:預設 0 ,短條目顯示基本限制,單位為位元組。如果您輸入一個數值,所有低於此數值的條目在顯示為內部連結(又稱「維基連結」)時會呈現淡紅色。譬如說,如果您輸入200,所有小於200位元組的條目在顯示為內部連結時將呈現暗紅色。
  • underline:預設 2 ,連結畫不畫底線,0 不畫, 1 畫, 2 依瀏覽器預設。
  • justify:段落對齊。
  • language:指定的界面語言,這不是設置wiki的預設語言。
  • numberheadings:預設 0 ,標題自動編號,每個標題將擁有專屬的標號。
  • showtoc:1 秀, 0 不秀。
  • nocache:取消快取。
  • showhiddencats:預設 0 ,顯示隱藏分類,「隱藏分類」主要用於維護用途。
  • showjumplinks:啟用「跳轉到」訪問連結
  • diffonly:比對版本差異時下面不顯示頁面內容。針對長條目,此選項可以減少載入頁面差異的時間。

啟用svg

實體化時是依 svg 指示繪出 png 。

  • 先檢查 apache 中的 mime.types (DSM 在 /usr/syno/apache/conf/mime.types)是否含:
image/svg+xml					svg svgz
  • PHP支援的轉圖模組

外觀

皮膚

共有四種:

  1. Cologne Blue(科隆香水藍):2002到2003年間的標準皮膚,1.31版起已從安裝包移除。
  2. MonoBook:1.13版以來的官方皮膚
  3. Modern(現代):由MonoBook皮膚衍生而來,2008年被創建,1.31版起已從安裝包移除。
  4. Vector:1.17版(2010.5.13)以後的官方皮膚

1.24以前,安裝皮膚用 require_once "$IP/skins/皮膚名/皮膚名.php";

1.25以後,安裝皮膚用 wfLoadSkin('皮膚名');

重要的 CSS

  • 共筆頁用
    1. skins/common/shared.css
    2. skins/monobook/main.css
  • 可列印版 skins/common/commonPrint.css
  • HTML載入指令為 <link rel="stylesheet" href="/wiki1231/load.php?debug=false&lang=zh-tw&modules=mediawiki.legacy.commonPrint,shared|skins.vector&only=styles&skin=vector&*" />
  • 丁丁在上述兩個 css 均加入:
table.nicetable {border:1px solid black;border-collapse:collapse;}
table.nicetable td {border:1px solid black;border-collapse:collapse;padding: 0.3em 0.5em;}
table.nicetable th {border:1px solid black;border-collapse:collapse;font-weight:normal;}

設定 CSS

(一)最早的操作設計

透過改 shared.css 和 commonPrint.css 即可生效

(二)對所有頁生效

在較新的版本中改 shared.css 和 commonPrint.css 沒用,要編輯頁:MediaWiki:Common.css 才有用。

  1. 起先 wiki_page 表中沒有這一頁。
  2. 但仍可編頁:MediaWiki:Common.css,其預設內容為「/* 此 CSS 會套用至所有的介面外觀 */」。
  3. 一旦儲存變更後, wiki_page 表中即新增此頁,且套用到介面上。其名字空間為「8」。
  4. 可使用「@import url(http://jendo.org/mm/treestyles.css);」載入外部的 css
  5. 上述指示也可改為「mw.loader.load('http://jendo.org/mm/treestyles.css','text/css');」用資源載入方法(javascript全域函式)載入外部的 css

進一步請參考:手冊:樣式表

(三)使用個別使用者的 CSS

須設「$wgAllowUserCss = true;」

當設定為「true」時,使用者可以通過建立一個名為"User:Username/skinname.css"的頁面,來建立他們自己的使用者樣式

當啟用時,使用者可以在其「偏好設定」中選擇外觀並進行個性化客製化。

這可能會增加使用者的安全風險,以及引起通常是會被忽略的額外伺服器負載。

(四)對特定頁生效

參考Mediawiki 外掛中的設定方法,完成 CSS 外掛設定之後,在該頁中加:

  • {{#css:MyStyles.css}} 或 {{#css:/skins/MyStyles.css}} ;
  • 或直接在解析器函數中寫入 CSS 規則,如下例所示:
{{#css:
  body {
    background: yellow;
    font-size: 20pt;
    color: red;
  }
}}

設訂javascript

(一)使用個別使用者的 js

要使用戶能夠使用自己的 JavaScript ,請將下列一行附加在 LocalSettings.php 中:

$wgAllowUserJs = true;

要禁用這個功能,請將 $wgAllowUserJs 設置為「false」或刪除這一行。

IExplorer 和 Firefox 允許使用 HTC 或 XBL 將 JavaScript 嵌入到樣式表中。 所以為了防止用戶定義 JavaScript ,您需要禁用 $wgAllowUserCss 。

(二)對所有頁生效

  1. 起先 wiki_page 表中沒有這一頁。
  2. 但仍可編頁:MediaWiki:Common.js,其預設內容為「/* 此 JavaScript 會用於使用者載入的每一個頁面。 */」。
  3. 一旦儲存變更後, wiki_page 表中即新增此頁,且套用到介面上。其名字空間為「8」。
  4. 可使用「mw.loader.load('http://jendo.org/mm/marktree.js');」來載入外部的 javascrip 。

進一步請參考:JavaScript英文說明

透過在 MediaWiki 命名空間中使用 JavaScript 文件並在 Template 命名空間中使用允許的 HTML ,可以將任何 HTML 和 JavaScript 安全地添加到 Wiki 頁面。

為了防止攻擊 Wiki ,常規的 Wiki 文本中禁用了多數 HTML 標籤和所有 JavaScript 。所以無法將 Google AdSense 標語, Disqus 註釋框,類似 Facebook 按鈕或任何其他可嵌入物件複製到頁面的原始碼中。由於存在嚴重的安全漏洞,您也不應該允許任何 HTML 或 JavaScript 使用於頁面原始碼中,其中包括允許攻擊者收集所有 Wiki 用戶使用的每個密碼。

透過 MediaWiki:Common.js 直接放入任意的 HTML

mw-mywiki-example 代表 wiki 頁中以 id 屬性標示的某標籤,any HTML 代表任何要插入的 HTML 或 JavaScript 。

非 jQuery 用法:

$(function () {
	var myElement = document.getElementById('mw-mywiki-example');
	myElement.innerHTML = 'any HTML';
}());

用 jQuery (內建)可將上述再濃縮為:

$(function () {
	$('#mw-mywiki-example').html('any HTML');
}());

載入單獨的腳本

可以在 MediaWiki 名稱空間中創建一個新文件(以.js結尾),例如 MediaWiki:Example.js。 然後指示 MediaWiki 導入該腳本。為此,在 MediaWiki:Common.js 添加導入腳本指令:

mw.loader.load( '/w/index.php?title=MediaWiki:Example.js&action=raw&ctype=text/javascript' );

在指定的 wiki 頁中生效

上述的腳本,通常是定義了函式,備在哪裡等待呼叫。 wiki 頁中則使用<div>加以呼叫:

<div id='與腳本匹配的id'></div>

確保<div>的ID與先前在腳本中指定的ID匹配。

由於一個 HTML 頁只能有一個元素匹配這個唯一的 ID ,所以若想要避免 ID 重複,可以使用模板。如你可以創建一個模板「Template:Advertisement」,然後在模板頁中寫下:

<div id='與腳本匹配的id'></div>

然後在 wiki 頁中引用:

{{Advertisement}}

參考資料

  1. 在 wiki 頁中加入 JavaScript(精華已翻譯在本段中)
  2. 手册:界面/JavaScript

模板

更改某帳號密碼

請參考:

  1. FAQ
  2. 重設密碼
  3. $wgPasswordDefault 解說

Mediawiki 的帳號可以接受「含空白」的密碼(如洪榮良在福留子孫中的密碼)。

但是 MediaWiki 的帳號名稱不能包含空白,它會被視為非法字元。如果您試圖在帳號名稱中使用空白, MediaWiki 會拒絕創建該帳號。建議使用字母、數字和底線來創建帳號名稱,以確保其有效性和可讀性。

一、自架伺服器,能進到伺服器的作業系統:使用腳本檔

  • 得到的密碼和 web 介面「建立新帳號」時所產生的密碼格式相同。但同一個人兩次執行的結果並不相同。
  • 執行步驟:
    1. 進到伺服器的作業系統,並有執行 php 腳本的權限。
    2. 進入某 mediawiki 的 maintenance 子目錄。運行下列命令:
      /usr/local/bin/php74 changePassword.php --user=someuser --password=somepass
      其中的「somepass」就是您將要設置的密碼,而「someuser」就是您將修改其密碼的用戶名,該用戶名應出現在數據庫的「user」表中。帳號名和密碼都不要加引號。

(一)不要改「帳號名稱」

alWiki 因為「鄭少銘」改名「鄭昱翎」,丁丁從後台改 wiki_user 表 user_id=52 的資料 ,從此「鄭昱翎」「使用者名稱無效」。

  1. 請參考 wikimedia zh-hant.json 使用者名稱無效的常數為 noname 。
  2. 請參考 strings_chinese_traditional 使用者名稱無效的變數為 $MANTIS_ERROR[ERROR_USER_NAME_INVALID] 。
  3. 在 maintenance 子目錄中執行「/usr/local/bin/php73 changePassword.php --user=鄭昱翎 --password=xxxxxxxx」得到的回應為「No such user: 鄭昱翎」
  4. 使用「UPDATE USER SET user_password = concat(':B:鹽:',MD5(CONCAT('鹽-',MD5('somepass')))) WHERE user_name='someuser';」還是無法解決</span>;
  5. 但明明 user_id=52 的 user_name 就是「鄭昱翎」
  6. 此問題待解

二、租賃伺服器,無法進到伺服器的作業系統,或助理資訊能力有限:

(一)使用 wiki 預設功能

A.已知某帳號的舊密碼

  1. 以舊帳密「登入」
  2. 進入「偏好設定」
    • 從各頁頁首「偏好設定」(與「登入」同一排)進入
    • 從「特殊頁面 / 使用者與權限 / 偏好設定」進入
  3. 點擊「變更密碼」(Special:ResetPassword)
  4. 有須要時再驗證一次帳密
  5. 輸入兩次新帳密

B.已丟失某帳號的密碼

  1. 安裝並啟用「ChangeUserPasswords」擴展,該擴展:
    • 允許管理員一次更改多個用戶的密碼。
    • 密碼隨機生成並以表格形式顯示給管理員。
    • 除管理員之外的任何其他用戶都無法訪問或查看該頁面。
  2. 以管理員身份進入「特殊頁面 / 使用者與權限 / 更改使用者密碼」
  3. 核取要更改密碼的一個或多個帳號,點擊「更改使用者密碼」
  4. 之後會更改密碼,並報告各帳號的新密碼。
  5. 以新密碼登入,依上一段的步驟修改密碼

使用時機:當wiki應該被新用戶使用並且舊用戶不再需要訪問wiki時,管理員可以在不創建新用戶的情況下將新密碼共享給新用戶。所以新用戶可以直接登錄並開始使用wiki。這在每學期都有新生的大學非常有用。


無法使用 Special:PasswordReset(特殊頁面 / 重新設定密碼),因為這個方法須要由 mediawiki 將新密碼寄給使用者,而我們一般不開設郵件伺服器。

(二)直接在 MySQL 中修改

戰國策無法透過 adminer-x.x.x-mysql.php 修改;須透過 :8443 port 的後台管理,再用 phpMyAdmin 進去,才能修改資料表。

如果您使用了一種與目前密碼編製不同的格式,它會在用戶下一次登入時自動變成正確的格式。如果您正在使用更改了身份驗證流程的擴展程序(例如 LDAPAuth),下列方法可能不起作用。

  • 可通過 MediaWiki 認證的密碼有四種:
    1. UPDATE USER SET user_password = concat(':B:鹽:',MD5(CONCAT('鹽-',MD5('somepass')))) WHERE user_name='someuser';
    2. UPDATE USER SET user_password = concat(':A:',MD5('somepass')) WHERE user_name='someuser';
    3. UPDATE USER SET user_password = MD5(CONCAT(user_id,'-',MD5('somepass'))) WHERE user_name='someuser';
    4. UPDATE USER SET user_password = MD5('somepass') WHERE user_name='someuser';
  • $wgPasswordSalt(自1.34.0.版後移除) 已被設為 true 值(預設),使用上述的 1,3 ,設為 false 使用上述的 2,4 。
  • changePassword.php 產生的密碼以前是上述的 1 ,現在密碼字首是 pbkdf2:sha512 。

更改條目頁頁名

  1. 先在 MySQL ,wiki(資料庫)的wiki_page資料表中搜尋原頁名,直接進行頁名修改。
  2. 再到前台維基預修改條目頁名的頁面進行編輯異動後,該頁名即可同步修改。