使用筆記/預備篇
在閱讀這篇教學之前,你需要:
- 擁有一定的電腦操作水平
- 擁有一定的網際網路搜尋能力
- 接觸過前端(HTML/CSS/JS,只是知道也可)
- 參與過一個MediaWiki網站
缺乏一些條件可能會使得閱讀體驗變得很吃力。
什麼是MediaWiki
MediaWiki是一款自由的基於伺服器的wiki系統,而wiki是指內容可以直接在瀏覽器中編輯,並且每個可編輯頁面的版本歷史都會被記錄下來的網站。MediaWiki被設計用於像維基百科、萌娘百科和Fandom這樣的大型協同運作網站,具有優秀的國際化和在地化機制,擴充性和可客製化性極強,且自由免費。
MediaWiki使用Wikitext(維基文字)作為其儲存內容的主要格式,這使得一般的編輯者不需要學習HTML或CSS就能快速上手,同時由於其支援嵌入極具擴充性的「模板」「解析器函數」等,Wikitext也可以在不改動其解析器代碼的同時設計出非常複雜的頁面(相對於Markdown這類更輕量的純文字標記式語言)。
你可以隨便點開一個頁面,然後點擊「檢視/編輯原始碼」。一般情況下,這個頁面所使用的Wikitext就會展示在彈出的頁面上。這也使得借鑑變得十分方便。
基礎語法
這個頁面列出了一些基本的用法。
很多wiki也會有自己的一個類似於這樣的頁面,甚至比它還詳細。
以下我們略去一些基礎格式(粗體斜體標題這類)的介紹。編輯幫助裡面寫得還算清楚。
模板
模板(Template)是一類可以在頁面內重複使用且可以在裡面挖空以在使用時自行填寫內容的頁面。
比如,建立一個頁面Template:Test,內容為:
Hello,{{{1}}},现在是{{{time}}}。{{{2}}}
在某個頁面內(就比如沙盒)輸入以下內容:
{{Test|time=21:34|远星|今天也要加油呀!}}
儲存後,頁面裡面就會顯示:
這裡面,{{{time}}}
、{{{1}}}
和{{{2}}}
就是空(稱為一個參數)。一般情況下,以數字為名的參數在使用時可以省去參數名,就像上面那樣,第一個不寫名字的就會填到{{{1}}}
裡面,以此類推。除非你的內容裡面有等於號(這樣會導致系統認為出現的等於號前面的是參數名),否則匿名參數的名都可以不寫出來。
魔術字與解析器函數
主條目介紹了很多魔術字與解析器函數。
這些東西有幾種形式:__FOO__
、{{FOO}}
以及{{#foo:}}
或{{foo:}}
。
總之,遇到一個記一個。這些東西功能不一,沒法一下子講完。
比如這個頁面上面的時間,就是用了{{CURRENTTIME}}
。
此外還有一類解析器函數標籤,等價於{{#tag: <tag name> | <content> }}
。如果你發現解析器函數標籤裡面沒法放置參數的話,就用這個去代替。
前端技術
除此之外,了解一些前端技術也是必要的。
除了網上的Runoobs啊,W3School啊等,我更推薦MDN Web Docs(簡稱MDN,全稱為Mozilla開發者網路)。點擊這裡檢視MDN學習區。
一個事實是,Wikitext最終還是要被解析成HTML的。因此,你有可能可以在你寫的一大堆HTML裡面塞上一個以Wikitext語法寫的列表而無需使用<ul>
和<li>
。同樣的,如果在某些模板參數中傳入列表語法反而出了點問題(比如頭一個星號沒被解析),那麼你寫一個HTML無序列表可能就好了。
另一個事實是,大部分的模板編寫都需要你掌握前端技術。對於更複雜的模板來說,除了使用擴充提供的一部分解析器函數以外,更有可能的情況是你需要使用模組(這一部分和lua有關,不算在前端必備之內但是如果你要編寫複雜模板的話還是要掌握的),而模組的本質大體上也還是文字拼接和生成HTML。生成完HTML了就得要寫樣式讓他長得好看一些,就得寫CSS,如果需要一些可互動的功能甚至又需要寫點JS。
當然啦,如果只是針對MediaWiki的模板編寫的話,你只需要了解如何編寫HTML片段而不是一整個HTML文件。對於站長來說的話,知道HTML文件的哪些部分是被MediaWiki的哪些東西控制的是很有必要的。比如<title>
的內容由MediaWiki:Pagetitle控制。
如果你本身就很了解HTML、CSS和JS(包括jQuery)的話,你可以去看看MediaWiki的JS有哪些輪子⸺比如mw對象,比如OOUI,這些。
邊用邊探索,越用就越會。
參與一個MediaWiki站台
參與一個MediaWiki站台的建設有助於你深入了解MediaWiki軟體所支撐起的社群是怎麼運作的。如果你打算自代管或者成為某個MediaWiki農場的某站台的主人,這是有必要的。
當然,只是看一看維基百科方針與論述也有所幫助,如果你沒有時間/意願去參與其他社群的話。
主要頁面 | |
---|---|
正文 | |
外部連結 |