MediaWikiの基本と応用

MediaWikiの基本と応用をサクッと紹介。
## 基本
### メインページを違う名前に変更する
<code>MediaWiki:Mainpage</code>を開き、「メインページ」の文字列を新ページ名に変更する。

<code>メインページ</code>を開き、内容を<code>#REDIRECT [[新ページ名]]</code>に書き換える。

### サイドバーを編集する
<code>MediaWiki:Sidebar</code>を編集する

### スタイルシートを変更したい
<code>MediaWiki:Common.css</code>または<code>MediaWiki:Vector.css(MediaWiki:<スキンID>)</code>を編集する。

### Javascriptを追加したい
<code>MediaWiki:Common.js</code>を編集する。

※複雑で巨大なスクリプトはcssも同時に設定できる[拡張機能 Gadgets](https://www.mediawiki.org/wiki/Extension:Gadgets)を利用するほうがよい。

### 略称や別名で目的のページを開くようにする
リダイレクトページを利用する。

略称のページ名を新規作成して<code>#REDIRECT [[目的ページ名]]</code>で保存する。

### 別のページをインクルードする
テンプレート呼び出しと同じ書き方で先頭にコロンをつける。

<code>{{:ページ名}}</code>

### インストールしたスキンをユーザー全員のデフォルトにしたい
スキンをインストール後、まず「個人設定」-「表示」タブ で「外装」とのところで目的のスキンを有効にします。
スキンが変更されたら、ブラウザのデバッグコンソールに<code>mw.config.get('skin')</code>と打ち込んで<key>Enter</key>すると、<code>スキンID</code>が得られます。
<code>LocalSettings.php</code>の<code>$wgDefaultSkin</code>を検索し、新しいスキンIDに変更します。
<code>$wgDefaultSkin = "スキンID";</code>


### 編集画面の注意書きを変更したい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102207/4c419e21-20a4-7555-e3fb-6fa99a9a6292.png)
<code>MediaWiki:copyrightwarning</code>、<code>MediaWiki:copyrightwarning2</code>を編集する。

### アップロード画面の注意書きを変更したい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102207/1a58faf7-6a1b-93e8-05db-e67c5993e7ff.png)
<code>MediaWiki:uploadtext</code>を編集する。

### 画面下のライセンス表示を変更したい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102207/4035e0c2-5e51-987a-56db-8828a495676a.png)
<code>MediaWiki:copyright</code>を編集する。

### ページ上部に告知文を表示する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102207/567c65eb-bd29-b12b-c7cd-e47291f0c65e.png)
**方法 1**
<code>MediaWiki:Sitenotice</code>を「-」以外に編集します。
ユーザーがメッセージを読んだ後に非表示できるようにするには、[拡張機能 DismissableSiteNotice](https://www.mediawiki.org/wiki/Extension:DismissableSiteNotice) を使用します。
<code>MediaWiki:Sitenotice_id</code>を変更することでユーザーが非表示にしたメッセージを再度表示させることができます。
非ログインユーザーのみに表示する<code>MediaWiki:Anonnotice</code>もあります。ただしこちらはDismissableSiteNoticeが有効の場合でも[非表示]ボタンを表示しません。

**方法 2**
[拡張機能 CentralNotice](https://www.mediawiki.org/wiki/Extension:CentralNotice) を使用する。
期間指定やアイコン、表示するユーザーなど、細かい設定が可能な特別ページ<code>Special:CentralNotice</code>を追加します。
ただし大手のWikiポータルでは運営がわが使用しており、Wikiの管理者には権限が与えられていない場合があります。

## 応用
### テンプレートの機能を拡張したい
- [拡張機能 ParserFunctions](https://www.mediawiki.org/wiki/Extension:ParserFunctions) - 条件分岐や計算など様々な機能を追加する。参照：[Help:Extension:ParserFunctions/ja](https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions/ja)

### Wikipediaみたいなインフォボックスを追加したい
Fandomで標準となっている[拡張機能 PortableInfobox](https://www.mediawiki.org/wiki/Extension:PortableInfobox)がおすすめ。

Wikipediaの書式よりもシンプルで、導入も簡単。

別途、[拡張機能 TabberNeue](https://www.mediawiki.org/wiki/Extension:TabberNeue)を追加するとFandomのように画像を切り替えたりすることもできる。

### WikipediaやMediaWiki.orgなどのテンプレートをインポートしたい
<code>Special:Import</code>を使う。

- https://en.wikipedia.org/wiki/Special:Export
- https://www.mediawiki.org/wiki/Special:Export
これらのページから欲しいページのダンプをダウンロードして自分のWikiにインポートすると良い。

ただし、cssは別途コピペする必要があるので足りないcssは<code>MediaWiki:Common.css</code>などから探す必要がある。

### 編集画面を便利にしたい
- [拡張機能 CodeEditor](https://www.mediawiki.org/wiki/Extension:CodeEditor) - JavaScript/CSS の構文ハイライト機能付きのページ編集。
- [拡張機能 CodeMirror](https://www.mediawiki.org/wiki/Extension:CodeMirror) - ウィキテキストエディターに構文強調の機能を追加する。
- [拡張機能 VisualEditor](https://www.mediawiki.org/wiki/Extension:VisualEditor) - 見た目そのままで編集できるヴィジュアルエディターを追加する。
- [拡張機能 WikiEditor](https://www.mediawiki.org/wiki/Extension:WikiEditor) - 拡張可能なウィキテキスト編集インターフェイスと多数の機能モジュールを提供する。
- [拡張機能 TemplateWizard](https://www.mediawiki.org/wiki/Extension:TemplateWizard) - ビジュアルエディタにテンプレートの追加機能を追加する。

### 「新規ページの作成」「新規リダイレクトの作成」ページを導入する
[拡張機能 CreatePageUw](https://www.mediawiki.org/wiki/Extension:CreatePageUw)、[拡張機能 CreateRedirect](https://www.mediawiki.org/wiki/Extension:CreateRedirect)を追加する。

それぞれ便利な特別ページが追加されます。
- <code>Special:CreatePage</code>
- <code>Special:CreateRedirect</code>

### 編集画面から画像をドラッグアンドドロップでアップロードできるようにする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102207/1866924d-3b80-4d3e-d84f-56305c2b01bd.png)

[拡張機能 MsUpload](https://www.mediawiki.org/wiki/Extension:MsUpload)を利用する。

### リンクにカーソルを合わせるとポップアップする機能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102207/afeac93d-607e-5b51-417d-37171cab9698.png)

[拡張機能 Popups](https://www.mediawiki.org/wiki/Extension:Popups)

「ヘルプ」名前空間や「プロジェクト」[名前空間](https://www.mediawiki.org/wiki/Extension_default_namespaces)のページにもポップアップを有効にさせたい場合は、以下のようにそれらのページを記事ページ扱いにするように変更します。
`$wgContentNamespaces = [ NS_MAIN, NS_HELP, NS_PROJECT, NS_CUSTOMNAMESPACE ];`

### &lt;ref>...&lt;/ref>の部分にカーソルを合わせるとポップアップする機能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102207/8294e5ad-1d7c-da3c-96f8-87a243a0bed8.png)

最新の[拡張機能 Popups](https://www.mediawiki.org/wiki/Extension:Popups)ではリファレンスポップアップ機能が標準で追加されました。`$wgPopupsReferencePreviews`を有効にすると適用されます。
以下の内容は古い情報となります。

[拡張機能 Cite](https://www.mediawiki.org/wiki/Extension:Cite) + ガジェットの[Reference Tooltips](https://www.mediawiki.org/wiki/Reference_Tooltips)

常にポップアップを有効化させたい場合、以下のように一部コメントアウトさせるとポップアップを強制させることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102207/422d80c4-bda1-3118-4f6d-d1a7362e8bc9.png)

### テンプレートにプレビュー機能を追加したい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102207/1def3141-1b42-990a-25ab-5d29b5555779.png)
[拡張機能 TemplateSandbox](https://www.mediawiki.org/wiki/Extension:TemplateSandbox)を使う。
このプレビュー機能を有効にする[名前空間ID](https://www.mediawiki.org/wiki/Extension_default_namespaces)を追加するには以下のように設定する。デフォルトは`NS_TEMPLATE`のみ。

```php:LocalSettings.php
$wgTemplateSandboxEditNamespaces = [
    8, // NS_MEDIAWIKI
    10, // NS_TEMPLATE
    828 // NS_MODULE
];
```

### 特定のテンプレートやページをインクルードしているページを知る方法
<code>Special:WhatLinksHere</code> を使う

### MSUploadのデフォルトコメントを変更する
<code>MediaWiki:Msu-comment</code>を書き換える。
「MSUpload」となっているのでこれを変更する。

### テンプレート用のcssをいちいちCommon.cssに追加するのが面倒
[拡張機能 TemplateStyles](https://www.mediawiki.org/wiki/Extension:TemplateStyles)＋[拡張機能 TemplateStylesExtender](https://www.mediawiki.org/wiki/Extension:TemplateStylesExtender)を使用する。

スタイルを適用するだけのテンプレートも作成できる優れもの。

### アップロードしたビデオや音声ファイルを再生するには
- [拡張機能 TimedMediaHandler](https://www.mediawiki.org/wiki/Extension:TimedMediaHandler)

### 動画サイトのプレイヤーを埋め込みたい
- [拡張機能 Youtube](https://www.mediawiki.org/wiki/Extension:Youtube)

### 数式を使いたい
- [拡張機能 Math](https://www.mediawiki.org/wiki/Extension:Math)

### FontAwesomeのアイコンを使いたい
- [拡張機能 FontAwesome](https://www.mediawiki.org/wiki/Extension:FontAwesome)

### Discordのガジェットを使いたい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102207/9028f2bc-99c3-369e-8efa-6908b5db0533.png)

[Fandom Devs - DiscordIntegrator](https://dev.fandom.com/wiki/DiscordIntegrator)を使う。
ただしFandomのものは実装がやや難しい

その他のMediaWikiでは [こちら](https://dev.miraheze.org/wiki/Replacements_for_the_Widgets_extension) の方法が優しい。

## トラブルシューティング

### コピーしてきたテンプレートが動かない
- Luaモジュールが使用されている可能性がある → [拡張機能 Scribunto](https://www.mediawiki.org/wiki/Extension:Scribunto)を追加する。

### cssのbackground-imageが表示できない
セキュリティのためurlの中身を外部URLにすると無視されます。

Wiki上の画像を使用する場合は、<code>Special:FilePath</code>で実URLを調べてそのURLを使いましょう。

TemplateStylesではbodyやサイドバーなど記事内以外の部分のスタイルは変更できません。
TemplateStyles用のcss保存時にエラーが表示される場合は[拡張機能 TemplateStylesExtender](https://www.mediawiki.org/wiki/Extension:TemplateStylesExtender)を有効にするとエラーにならなくなります。
どうしても一部のページの背景にスタイルを適用したい場合は<code>{{#css:}}</code>というパーサー関数を追加する[拡張機能 CSS](https://www.mediawiki.org/wiki/Extension:CSS)を使ったほうがいいでしょう。

### JavaScriptがエラーになる
MediaWikiのJavascriptにはLinter制限があり、ES6(ECMAScript2015)までの構文しか許可されていません。

<code>let</code> や <code>export</code>、<code>class</code> などを使用していませんか？

## 上級者向け

### 別のMediaWikiサイトに使用されている拡張機能が知りたい
そのWikiの<code>Special:Version</code>を開いてみましょう。

### 別のMediaWikiサイトに使用されているガジェットが知りたい
そのWikiの<code>Special:Gadgets</code>か<code>MediaWiki:Gadgets-definition</code>を開いてみましょう。