Mediawiki/Extensions
目次 |
MediaWiki の extension は、Category:All_extensions (www.mediawiki.org) に数多く紹介されている。
インストール済み extension は、特別ページ の バージョン情報 で確認できる。
ほとんどの extension は、ソースコードを extensions ディレクトリに配置し、LocalSettings.php に require_once('extensions/foo/foo.php');
のように記述すれば有効になる。
extension名 | 簡単な説明 |
---|---|
Lockdown | 名前空間と特別ページへのアクセス制限を追加する。 |
ConfirmEdit | アカウントの追加時や、ページ編集時にキャプチャ(CAPTCHA)による質問を追加する。 |
Renameuser | ユーザー名を変更するユーザーを、利用者グループで制限する。 |
UserPageEditProtection | 利用者ページ(利用者:maruko2 など)を、別のユーザーが編集できないようにする。 |
SpecialInterwiki | インターウィキの編集ページ 特別:インターウィキ (Special:Interwiki) を追加する。 |
DynamicPageList_(third-party) | カテゴリ名、名前空間、ページ名のパターン、編集日など様々な条件でページのリストを作成することができる。リストのフォーマットもいろいろと指定することができる。 |
SyntaxHighlight_GeSHi | ソースコードなどの構文に色付けするシンタックスハイライト機能を追加する。 |
Cite | ページに脚注を追加するための機能拡張。 |
ToggleDisplay2 | ページの一部分を表示/非表示させるようにする。 |
HTMLets | サーバ内の HTML ファイルを、MediaWiki のページ内にインクルードする機能を追加する。 |
Widgets | ページ内に様々なウィジェット(Widget)を追加する機能を追加する。 |
Vector | MediaWiki 1.16 から採用された Vector スキンのインターフェイスに付加機能を追加する。 |
Lockdown
- Website
- Lockdown
名前空間と特別ページへのアクセス権限を、利用者グループごとに設定することができる。
設定例
- LocalSettings.php
- 特別ページ の ページの書き出し(Special:Export) と ブロック中の利用者(Special:Ipblocklist) ページへのアクセスを user (利用者) に限定する。
require_once('extensions/Lockdown/Lockdown.php'); $wgSpecialPageLockdown['Export'] = $wgSpecialPageLockdown['Ipblocklist'] = array('user');
ConfirmEdit
- Website
- ConfirmEdit
アカウントの追加時や、ページ編集時にキャプチャ(CAPTCHA)による質問を追加する。
キャプチャの種類は複数用意されている。
- SimpleCaptcha : 簡単な計算を質問するキャプチャ。(デフォルト)
- MathCaptcha : Tex で画像を生成し、計算を質問するキャプチャ。
- FancyCaptcha : 画像に書かれている文字を入力させるキャプチャ。
- QuestyCaptcha : 質問と答えを予め設定しておき、答えを入力させるキャプチャ。
- ReCaptcha : ReCaptcha を利用するキャプチャ。
- VisualMathCaptcha : 画像に書かれた計算を質問する、より強度のあるキャプチャ。
- Asirra : 犬と猫の画像の中から、猫の画像を選ぶキャプチャ。ASIRRA - Microsoft Research
FancyCaptcha の設定例
- キャプチャ画像の生成に Python Imaging Library が必要。
yum install python-imaging
- 文字列データとして words パッケージを利用する。
yum install words
- フォントも必要
yum install ipa-gothic-fonts
次のようなコマンドで、キャプチャ画像を生成する。あらかじめ画像を保存するディレクトリを作っておく。
python captcha.py \ --key=foo \ --wordlist=/usr/share/dict/words \ --font=/usr/share/fonts/ipa-gothic/ipag.ttf \ --output=../../images/captcha/
--key |
必須 | LocalSettings.php の $wgCaptchaSecret に記述する任意のパスフレーズを指定する。
|
--wordlist |
必須 | 文字列リストのファイルを指定する。 |
--font |
必須 | 使用するフォントファイルを指定する。 |
--output |
必須 | キャプチャ画像を保存するディレクトリを指定する。 |
--count |
デフォルト値: 20 | 生成するキャプチャ画像の個数を指定する。 |
--font-size |
デフォルト値: 40 | フォントサイズを指定する。大きくするとキャプチャ画像が大きくなる。 |
- LocalSettings.php
基本設定
require_once('extensions/ConfirmEdit/ConfirmEdit.php'); require_once('extensions/ConfirmEdit/FancyCaptcha.php'); $wgCaptchaClass = 'FancyCaptcha'; $wgCaptchaDirectory = '/var/www/mediawiki/images/captcha/'; $wgCaptchaSecret = 'foo';
利用者グループごとに、キャプチャをスキップするかどうか設定する
$wgGroupPermissions['*' ]['skipcaptcha'] = false; //デフォルト false $wgGroupPermissions['user' ]['skipcaptcha'] = true; //デフォルト false $wgGroupPermissions['autoconfirmed']['skipcaptcha'] = true; //デフォルト false $wgGroupPermissions['bot' ]['skipcaptcha'] = true; //デフォルト true $wgGroupPermissions['sysop' ]['skipcaptcha'] = true; //デフォルト true
キャプチャを必要とする操作を指定する(デフォルト設定)
$wgCaptchaTriggers = array(); $wgCaptchaTriggers['edit'] = false; // Would check on every edit $wgCaptchaTriggers['create'] = false; // Check on page creation. $wgCaptchaTriggers['addurl'] = true; // Check on edits that add URLs $wgCaptchaTriggers['createaccount'] = true; // Special:Userlogin&type=signup $wgCaptchaTriggers['badlogin'] = true; // Special:Userlogin after failure
設定内容の説明や、その他の設定($wgCaptchaWhitelistIP
など)は ConfirmEdit.php に書かれている。
Renameuser
- Website
- Renameuser
ユーザーアカウントの利用者名を変更する権限を、どの利用者グループに割り当てるか指定する。
変更権限のある利用者グループで 特別:利用者名変更 (Special:Renameuser) ページにアクセスすると、任意の利用者名を変更することができる。
設定例
- LocalSettings.php
利用者グループ "ビューロクラット" に利用者名変更権限を割り当てる例。
require_once('extensions/Renameuser/Renameuser.php'); $wgGroupPermissions['bureaucrat']['renameuser'] = true; //デフォルト値
UserPageEditProtection
- Website
- UserPageEditProtection
ユーザーの利用者ページ(利用者:maruko2 など)を、ユーザーのみが編集できるようにする。
設定例
- LocalSettings.php
sysop 利用者グループは全ユーザーの利用者ページを編集できるよう設定する。
$wgOnlyUserEditUserPage = true; $wgGroupPermissions['sysop']['editalluserpages'] = true; require_once('extensions/UserPageEditProtection.php');
SpecialInterwiki
- Website
- SpecialInterwiki
登録済みのインターウィキを表示・編集したり、新規登録する 特別:インターウィキ (Special:Interwiki) ページを追加する。
設定例
- LocalSettings.php
sysop 利用者グループのみ、特別:インターウィキ ページでインターウィキの編集・新規追加ができるようにする。
require_once('extensions/Interwiki/Interwiki.php'); $wgGroupPermissions['*']['interwiki'] = false; $wgGroupPermissions['sysop']['interwiki'] = true;
DynamicPageList_(third-party)
- Website
- DynamicPageList_(third-party)
カテゴリ名、名前空間、ページ名のパターン、編集日など様々な条件でページのリストを作成することができる。リストのフォーマットもいろいろと指定することができる。
設定例
- LocalSettings.php
require_once('extensions/DynamicPageList/DynamicPageList2.php');
DynamicPageList の Wiki文法マニュアル
非常に多くのパラメータが用意されているので、DPL:Manual (semeb.com) ページを参照。
Controlling output format: | 出力フォーマットを指定するパラメータ |
Controlling output order: | 出力順を指定するパラメータ |
Controlling output volume: | 情報を付加して出力するパラメータ |
Criteria for page selection: | ページを選び出す条件を指定するパラメータ |
Other parameters: | デバッグ情報など。 |
Wiki文法記述例
例えば、Mac OS X というカテゴリに含まれるページのうち、ページ更新順に並べ、更新の新しい 3ページだけリストするには、次のように書く。
Wiki文法
<dpl> category = Mac OS X ordermethod = lastedit order = descending count = 3 </dpl>
表示結果
|
SyntaxHighlight_GeSHi
- Website
- SyntaxHighlight_GeSHi
ソースコードなどの構文に色付けするシンタックスハイライト機能を追加する。
設置例
svn
を使うと楽に設置できる。GeSHi も同時にダウンロードできる。
cd extensions svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi
svn
が利用できない場合は、SyntaxHighlight_GeSHi ディレクトリ内に GeSHi のソースコードを配置する。
extensions/ ├── SyntaxHighlight_GeSHi/ │ ├── SyntaxHighlight_GeSHi.class.php │ ├── SyntaxHighlight_GeSHi.i18n.php │ ├── SyntaxHighlight_GeSHi.php │ └── geshi/ │ ├── contrib │ ├── docs │ ├── geshi │ ├── contrib │ └── geshi.php
- LocalSettings.php
require_once('extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php');
Wiki文法記述例
Wiki文法
<source lang="php" line start="100" highlight="3"> <?php if($true) echo "true"; else echo "false"; ?> </source>
表示結果
<?php
if($true)
echo "true";
else
echo "false";
?>
|
Cite
- Website
- Cite
ページに脚注を追加するための機能拡張。
設置例
- LocalSettings.php
require_once( 'extensions/Cite/Cite.php' );
Wiki文法記述例
ガリレオは1597年にケプラーに宛てた手紙の中で既に地動説を信じていると記して いる<ref>青木靖三『ガリレオ・ガリレイ』岩波新書、1965年</ref>。 その他には、天の川が無数の恒星の集合であることなども発見した<ref>マクラクラ ン (2007) p51など</ref>。 == 脚注 == <references />
ToggleDisplay2
- Website
- ToggleDisplay2
設置例
- LocalSettings.php
require_once('extensions/ToggleDisplay2.php');
Wiki文法記述例
Wiki文法
<toggledisplay> 非表示にする内容 </toggledisplay>
表示結果
[表示する]HTMLets
- Website
- HTMLets
サーバ内の HTML ファイルを、MediaWiki のページ内にインクルードできるようになる。
設置例
- LocalSettings.php
$wgHTMLetsDirectory
で指定したディレクトリ内の HTML ファイルのみインクルードすることができる。
require_once('extensions/HTMLets/HTMLets.php'); $wgHTMLetsDirectory = "htmlets";
Wiki文法記述例
foo.html というファイルをインクルードする場合、拡張子を除いた foo という名前で指定する。
<htmlet>foo</htmlet> <htmlet nocache="yes">foo</htmlet>
Widgets
- Website
- Widgets
設置例
ソースコードを extensions フォルダに解凍。
あるいは svn
を使う。
cd extensions svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/Widgets
Widgets/compiled_templates ディレクトリを apache ユーザで書き込めるようにする。
chown -R apache Widgets/compiled_templates
- LocalSetting.php
require_once('extensions/Widgets/Widgets.php'); $wgGroupPermissions['sysop']['editwidgets'] = true;
Widget名前空間ができるので、Widget名前空間にページを作成する。(MediaWiki のテンプレート機能を使う。)
例えば、Widget:Ustream を利用する場合、Widget:Ustream のページを作り、Widget:Ustream の full source code をコピペする。
このWikiサイトの Widget 一覧
- Widget:AdSense
- Widget:DISQUS
- Widget:Google Documents
- Widget:Google Spreadsheet
- Widget:HatenaCount
- Widget:SlideShare
- Widget:Twitter
- Widget:Ustream
- Widget:YouTube
- Widget:hatena
- Widget:nicovideo
- Widget:yourls
Vector
- Website
- Vector
設置例
- LocalSettings.php
$wgVectorUseSimpleSearch
右上にある検索ボックスを、シンプルな検索ボックスにする。
require_once ("extensions/Vector/Vector.php" ); $wgDefaultUserOptions['vector-collapsiblenav'] = 1; $wgVectorUseSimpleSearch = true;