MediaWiki
About
MediaWikiはWikipediaで採用されている世界一有名なWikiソフトだ。
GNU social JP WikiもMediaWikiを採用している (告知: 自由な分散SNSのWiki「GNU social JP Wiki」の開始とサービス名の改名 | GNU social JP Web)。
「WordPress Wikiの作成方法(徹底解説)」にあるように、WordPressでも似たようなWikiサイトの構築は可能。
Install
- 設置: MediaWiki | Wikipediaで採用された世界一有名な情報集約のWikiソフト | GNU social JP Web
- 設置: MediaWikiのindex.phpを省く短縮URL設定 | GNU social JP Web
- 設置: MediaWikiのホーム画面 (メインページ/Man_Page) の変更方法 | GNU social JP Web
Operation
Manual:Administrators - MediaWiki
Protection
- MediaWiki Administrator's Handbook/Page Protection - Wikibooks, open books for an open world
- Manual:Autoconfirmed users - MediaWiki
荒らしや編集合戦対策で、ページを保護することで、編集を権限者に限定できる。
Block
Ref:
- Manual:Block and unblock - MediaWiki - MediaWiki Administrator's Handbook/User Block - Wikibooks, open books for an open world
サイトが悪党に荒らされた場合の対策。該当アカウントをブロックできる。
ブロックの効果: 編集軽作業が不能になる。
荒らされたページや、新規作成されたページは、復元か削除で対応する。
方法。
- Special:Blockにアクセス。IPアドレスかユーザー名を指定。
- 他に、利用者か利用者トークページを開くと、サイドバーにブロックのリンクがあり、そこからも実施可能。
オプション
- アカウント作成をブロック: そのIPアドレスから新規登録を不能にする。
- 最後の使用IPアドレスと編集アドレスをブロック (ハードブロック):
Revert/Rollback
Ref: Manual:Reverts - MediaWiki
MediaWikiで誰かの編集を打ち消したり元に戻す機能。基本的に、復元用の履歴を作って元に戻す。
Revert (undo) は、ページを任意の履歴に戻す。現在のページからその履歴までの変更点を逆に適用して、新しい履歴を作る。基本的に誰でもできる。
Rollback/ロールバックは、ページに対して、同じユーザーによる最後の編集をまとめて巻き戻す。rollback権限が必要。シナリオとしては、同一ユーザーにより荒らしなどで大量に編集、破壊された場合に一括で戻せる。
なお、ページが誕生して以来1名のユーザーしか編集していない場合、ページの作成時点まで戻るので使用できない。
ロールバックを実行すると、「Ctkpaarr964565498 (トーク) による編集を Gnusocialjp による直前の版へ差し戻しました」のメッセージで、変更を打ち消し履歴が作られる。
Right
- Manual:User rights - MediaWiki
- Manual:Preventing access - MediaWiki
- Manual:$wgGroupPermissions - MediaWiki
- MediaWikiの設定 - すだちWiki
アクセス管理がユーザーやグループ単位でできる。
$wgGroupPermissions[グループ名][権限] で制御する。いくつか便利な設定、よくやる設定がある。
# Prevent new user registrations except by sysops $wgGroupPermissions['*']['createaccount'] = false;
Spam
「Manual:Combating spam - MediaWiki」にMediaWikiのスパム対策の基本がまとまっている。
ページ分類方法
world-walker スタッフ ブログ:MediaWikiのページ分類方法についての考察
- 名前空間(Namespace)
- カテゴリ(Category)
- サブページ(Subpage)
MediaWikiでは上記の3種類のページ分類方法がある。それぞれ一長一短。
だが、基本的にはCategoryでやるのが一番汎用的。1個のページが複数の分類にしたいということがよくある。名前空間とサブページだとそれができない。親は常に1個。住所のような完全に上下関係が一致するなら問題ないが、後で変えるのもたいへん。
Category
ページをグループ化する機能。重要。
カテゴリーへのページの追加は、追加対象ページに [[Category:カテゴリ名]] を追加するだけ。どこでもいい。最下部が一般的。
カテゴリーページ自体へのリンクを張る場合、[[:Category:カテゴリー名]] のように、先頭に:を付与する。
カテゴリーが未作成なら、同時にカテゴリーの未作成ページができる。カテゴリーページはカテゴリーページで、作成が必要。カテゴリー自体も作成はできる。通常のページ同様に、 [Category:カテゴリー名] で検索して、新規作成する。
新規作成すると、CategoryTree拡張機能で、自動的にカテゴリー一覧が末尾に表示される。
カテゴリー自体も別のカテゴリーに属すことができる。ページ同様に、カテゴリーページに [[Category:カテゴリ名]] を追加するだけ。
カテゴリーの階層の保守としては、カテゴリーでツリー構造になっているときれい。サブページに近い。カテゴリーでWiki全体を分類してまとめられる。Category:Mainをカテゴリーのルートにするときれいかもしれない。
Markup
Transclusion
MeidaWikiでは他のページの内容を埋め込むことが可能で、この機能を [Transclusion/参照読み込み](https://www.mediawiki.org/wiki/Transclusion) と呼んでいる。
{{<page name>}} のように、二重波括弧でページ名を指定すると埋め込める。埋め込み元で、埋め込みの許可・禁止ブロックをマークアップで指定することもできる。
参照読み込み可能な特別ページは限定されていて、以下となる。
- Special:AllPages
- Special:PrefixIndex
- Special:NewFiles
- Special:NewPages
- Special:RecentChanges
- Special:RecentChangesLinked.
トップページでの埋め込み表示などで便利なものがある。AllPages/NewPages/RecentChangesあたりが特に便利そうだ。
テンプレート的な使い方などで、駆使できると便利だろう。
HTML
MediaWikiでHTMLの要素をいくつか使用できる。
LocalSetting.phpで$wgRawHtml = true (デフォルトfalse) にすれば、html要素内でHTMLを無制限で使用可能になる。
Page
Ref: How to Embed List of All Namespace-Pages in a Wiki Page? on Project:Support desk
カスタム名前空間Privateで非公開ページを作ったら、Privateのページ一覧をメインページに表示させたくなった。若干工夫がいる。
{{Special:Prefixindex/<custom namespace>:}}
<custom namespace>部分にカスタム名前空間を指定する。これで一覧ページを開ける。大事なのは末尾の:。これで先頭一致でページ一覧のページになっている。これをtransclusionする形。
Setting
Private
特定ページを非公開にすることができる。後日方法を精査する。
全体設定としては以下がある。基本非公開で一部公開の場合に使える。
# Disable reading by anonymous users $wgGroupPermissions['*']['read'] = false; # Disable anonymous editing $wgGroupPermissions['*']['edit'] = false; # Prevent new user registrations except by sysops $wgGroupPermissions['*']['createaccount'] = false;
今回は基本公開で一部非公開。
- ユーザー属性での管理。
- 名前空間での管理 (LockDown拡張機能)。
Lockdownを試す。
「機能: MediaWikiでのLockdown拡張を用いた名前空間単位の非公開ページ | GNU social JP Web」に記した。
$wgCapitalLinks
出典: Manual:$wgCapitalLinks - MediaWiki。
MediaWikiはデフォルトでページ名やページURLの先頭1文字目が大文字になる。
$wgCapitalLinks = falseにするとこれを無効にできる。大文字小文字を完全に区別する。例えば、iPhoneなどのように、大文字小文字が重要なことがあるので、falseにしておくのがよいと思う。リンク切れにも影響するので最初の方で設定するとよい。
Other
Analytics
サイトのアクセス分析のためにGoogle Analyticsを設置したい。いくつか拡張機能がある。GA4対応が重要な項目。
- Extension:Google Analytics Integration - MediaWiki: 翻訳は更新されているがベースコードは2017年のv3.0.1で古い。
- Extension:GoogleAnalyticsMetrics - MediaWiki: 2023-01 v1.0.2。Google Analyticsからメトリクスを取得して挿入する。アクセスカウンター的な拡張機能な模様 (関連: Extension:HitCounters - MediaWiki)。
- Extension:Google Analytics Links - MediaWiki: 2009年v1.2。古い。MediaWiki v1.39以上で動作しない。
- Extension:GoogleAnalyticsTopPages - MediaWiki: 2014年v0.0.1。アクセス上位ページのリストを生成する。
- Extension:GoogleTagManager - MediaWiki: 2023年v.1.1。Google Tag Managerを設置する。
- Extension:GTag - MediaWiki、MediaWikiでGoogle AnalyticsのGA4を使う - ミルクPCのブログ (GTag): 2023 v1.3.0。新しいGoogle Analyticsのトラッキングタグに対応している。
- GitHub - harugon/Gtm: MediaWikiにGoogle Tag Managerを追加します: Google Tag Manager。
- Extension:Matomo - MediaWiki: Google Analyticsではない分析サービスの拡張機能。
公式プラグインを優先したい。
GTag、GoogleTagManager。これらが設置用にみえる。詳細に検討してみる。Google Tag ManagerはAnalyticsを含めて汎用的なことができる。ひとまずよくわからないので、シンプルなGTagを使ってみるとよさそう。
「拡張: MediaWikiのGoogle Analytics追跡拡張機能GTag | GNU social JP Web」で設置した。
Advertise
広告ブロッカー対策
出典: 【PukiWiki編】広告ブロッカーからサイトコンテンツと収益を守る! | SEの良心。
MediaWikiでも同様の方法で広告ブロッカー対策を導入できそう。
Adsense
Google Adsense設置用のプラグインがいくつかある。
- Extension:Google AdSense - MediaWiki: MediaWiki v1.37以上で非互換。
- Extension:ShoutWiki Ads - MediaWiki
- Extension:Widgets - MediaWiki
- MediaWikiにGoogle AdSenseを追加してみた - とある社畜の頭脳整理、MediawikiでGoogle Adsenseを表示させる方法 - dococo wiki、MediaWikiでGoogle Adcence - dococo wiki: HTMLetsを使うらしい。
ShoutWiki AdsかWidgetsで設置する模様。基本はJavaScriptコードの設置。