「MediaWiki」の版間の差分
Gnusocialjp (トーク | 投稿記録) (List) |
Gnusocialjp (トーク | 投稿記録) (Other Conflict) |
||
(同じ利用者による、間の14版が非表示) | |||
54行目: | 54行目: | ||
ロールバックを実行すると、「Ctkpaarr964565498 (トーク) による編集を Gnusocialjp による直前の版へ差し戻しました」のメッセージで、変更を打ち消し履歴が作られる。 | ロールバックを実行すると、「Ctkpaarr964565498 (トーク) による編集を Gnusocialjp による直前の版へ差し戻しました」のメッセージで、変更を打ち消し履歴が作られる。 | ||
=== RevisionDelete === | |||
* [[mediawikiwiki:Help:RevisionDelete/ja|Help:版指定削除 - MediaWiki]] | |||
* [[mediawikiwiki:Manual:RevisionDelete/ja|Manual:版指定削除 - MediaWiki]] | |||
* [https://design.kyusan-u.ac.jp/OpenSquareJP/?MediaWiki/Customize MediaWiki/Customize - OpenSquareJP|井上貢一研究室] | |||
秘匿情報を誤って公開した場合など、特定の変更履歴を非表示にできる。 | |||
LocalSettings.phpに以下を追記すると有効になる。 | |||
$wgGroupPermissions['sysop']['deletelogentry'] = true; | |||
$wgGroupPermissions['sysop']['deleterevision'] = true; | |||
=== Right === | === Right === | ||
103行目: | 115行目: | ||
カテゴリーの階層の保守としては、カテゴリーでツリー構造になっているときれい。サブページに近い。カテゴリーでWiki全体を分類してまとめられる。Category:Mainをカテゴリーのルートにするときれいかもしれない。 | カテゴリーの階層の保守としては、カテゴリーでツリー構造になっているときれい。サブページに近い。カテゴリーでWiki全体を分類してまとめられる。Category:Mainをカテゴリーのルートにするときれいかもしれない。 | ||
==== | ==== CategoryTree ==== | ||
===== About ===== | |||
カテゴリーの一覧表示は、標準拡張機能の「[[mediawikiwiki:Extension:CategoryTree/ja|Extension:CategoryTree - MediaWiki]]」で可能になる。transclude (参照読込) ではできない ([https://stackoverflow.com/questions/1050853/transclude-a-category-in-mediawiki Transclude a category in MediaWiki - Stack Overflow])。 | カテゴリーの一覧表示は、標準拡張機能の「[[mediawikiwiki:Extension:CategoryTree/ja|Extension:CategoryTree - MediaWiki]]」で可能になる。transclude (参照読込) ではできない ([https://stackoverflow.com/questions/1050853/transclude-a-category-in-mediawiki Transclude a category in MediaWiki - Stack Overflow])。 | ||
113行目: | 127行目: | ||
categorytree要素は以下のような形式で使う。 | categorytree要素は以下のような形式で使う。 | ||
<nowiki><categorytree showcount="on">Main</categorytree></nowiki> | <nowiki><categorytree showcount="on" mode="all">Main</categorytree></nowiki> | ||
重要なオプションがある。 | 重要なオプションがある。 | ||
* mode: | * mode: 初期値が複雑。namespacesで上書き。なければ、項目が有無で決まる。pages (上限200ページ) かallを指定しておけばいいと思われる。ページ数が膨大ならpages。 | ||
** categories (0): サブカテゴリーのみ。 | |||
** pages (10): 画像を除いた、サブカテゴリーとページ。上限200ページ。 | |||
** all (20): 全部。 | |||
** parents (100): 親のカテゴリーを表示。インバース操作用。 | |||
* showcount: "on"でカテゴリーの記事数表示。categorytree要素でのみデフォルトoff。 | * showcount: "on"でカテゴリーの記事数表示。categorytree要素でのみデフォルトoff。 | ||
===== デフォルト展開 ===== | |||
CategoryTreeのcategorytree要素を使うと、カテゴリー一覧を表示できる。が、クリックしないと展開されないのが、余計なクリックが必要で嫌。<blockquote> | |||
; depth | |||
: determines how many levels of the tree are shown initially. Default is 1. 0 means only the root node. The maximum value depends on the mode specified, and on the <code>$wgCategoryTreeMaxDepth</code> option. (Introduced between [[/static-codereview.wikimedia.org/MediaWiki/20410.html|r20410]] and [[/static-codereview.wikimedia.org/MediaWiki/20840.html|r20840]], Mar 30 2007; fully functional even with <code>$wgCategoryTreeDynamicTag</code> since [[/static-codereview.wikimedia.org/MediaWiki/36864.html|r36864]], July 2008.) | |||
; $wgCategoryTreeMaxDepth | |||
: an array defining the maximum depth for each [[/www.mediawiki.org/wiki/Extension:CategoryTree#Modes|mode]], to which the tree may be expanded initially using the depth parameter in a <category> tag. By default, this is set to 2 for the "categories" mode, and 1 for other modes. To set it to 3 for categories and 2 for other modes, for example, you can use <code>$wgCategoryTreeMaxDepth = [10 => 2, 20 => 2, 0 => 3, 100 => 2];</code>. | |||
</blockquote>このあたりの、オプションと設定を使うと、うまくできる。 | |||
基本はdepthで最大展開表示数を制御する。ただし、性能の制御のために$wgCategoryTreeMaxDepthで上限が決まっている。デフォルトで、mode="categories"=2、他は1になっている。 | |||
$wgCategoryTreeMaxDepth = [20 => 9]; | |||
そんなに階層が何重にもなることは想定していないが、上記のようにLocalSettings.phpでallの最大を1から9に変更する。 | |||
<nowiki><categorytree showcount="on" mode="all" depth="9">Main</categorytree></nowiki> | |||
加えて、上記のようにdepth="9"を指定すると反映される。膨大なWikiで9が重いなら、上限を変える。これで一括管理できる仕組みな模様。 | |||
「[https://stackoverflow.com/questions/37348060/mediawiki-category-tree-expand-all-by-default MediaWiki Category Tree expand all by default - Stack Overflow]」が関連Q&Aだが、回答が的外れになっている。 | |||
=== Language === | |||
日本語にすると、ヘルプとか特別とかが日本語のURLになるのが嫌。 | |||
「[[mediawikiwiki:Manual:Language/en|Manual:Language - MediaWiki]]」 | |||
Page content languageで変更できる? | |||
「[[mediawikiwiki:Manual:FAQ|Manual:FAQ - MediaWiki]]」 | |||
Special:Allmessagesにシステムメッセージのリストがある。例えば、「特別ページ」は「specialpage 」が対応している。[Special:AllMessages] は「システムメッセージの一覧」 で対応している。 | |||
[MediaWiki:Allmessages] のページでシステムメッセージが格納されている。[MediaWiki:Allmessages/ja] で言語対応が出る。 | |||
「[[mediawikiwiki:Manual:$wgUseDatabaseMessages|Manual:$wgUseDatabaseMessages - MediaWiki]]」で選択できる。falseにするとwpLanguageCodeで強制指定。trueだと自分で変更できる。 | |||
「[https://github.com/wikimedia/mediawiki/blob/1.42.1/languages/i18n/en.json mediawiki/languages/i18n/en.json at 1.42.1 · wikimedia/mediawiki]」が言語対応の一覧。ここから探すとよい。 | |||
特に重要なもの。 | |||
* nstab: 名前空間類のプレフィクスの模様。 | |||
* nstab-special Special | |||
* specialpage | |||
* specialpages 特別ページ一覧 | |||
* nstab- | |||
* mainpage | |||
Special:の扱いがよくわからない。カテゴリーじゃなくて名前空間。 | |||
* [[mediawikiwiki:Manual:Configuration_settings|Manual:Configuration settings - MediaWiki]] | |||
* [[mediawikiwiki:Manual:Special_pages|Manual:Special pages - MediaWiki]] | |||
The Special pseudo namespace can be translated in other languages. 翻訳可能。「[[mediawikiwiki:Manual:Namespace|Manual:Namespace - MediaWiki]]」によると、「[[mediawikiwiki:Manual:$wgNamespaceAliases|Manual:$wgNamespaceAliases - MediaWiki]]」で翻訳可能? | |||
「[[mediawikiwiki:Manual:Namespace_constants|Manual:Namespace constants - MediaWiki]]」が定数。 | |||
NS_SPECIALを指定すると、翻訳が無効になる? | |||
$wgNamespaceAliases['特別'] = NS_SPECIAL; | |||
「[[mediawikiwiki:Topic:T9rltht3umy9zj8c|How to switch from german namespace to english? on Project:Support desk]]」これが近い。 | |||
/jaなど言語ページもあって、変更できる。が、パーマリンクは変わらない。別のところ。<blockquote>[[/www.mediawiki.org/wiki/User:Ciencia Al Poder|<bdi>Ciencia Al Poder</bdi>]] ([[/www.mediawiki.org/wiki/User talk:Ciencia Al Poder|talk]][[/www.mediawiki.org/wiki/Special:Contributions/Ciencia Al Poder|contribs]]) | |||
What you can control in the MediaWiki namespace is the text of the tab, not the namespace itself (eg: when linking to pages in that namespace or the displayed URL). See [[/www.mediawiki.org/wiki/Manual:Using custom namespaces|Manual:Using custom namespaces]]</blockquote>nstab系はタブテキストなどで、URLは変わらない。 | |||
Special:AllMessagesからnstab-category nstab-category/jaをCategoryに直したがパーマリンクは反映されず。 | |||
「[[mediawikiwiki:Help:System_message|Help:System message - MediaWiki]]」にシステムメッセージの変更方法がある。 | |||
まず、Special:AllMessagesのページに、システムメッセージの全リストがある。「[https://github.com/wikimedia/mediawiki/blob/1.42.1/languages/i18n/en.json mediawiki/languages/i18n/en.json at 1.42.1 · wikimedia/mediawiki]」がソースコードの対応。 | |||
en.jsonのja.jsonを変更する? | |||
この画面から編集できる。変更方法が一応2種類ある。 | |||
# [MediaWiki:メッセージキー] のページの値を変更。 | |||
# Special:AllMessagesの左側のリンクで上記ページにアクセス (既定のメッセージ文が使用されている場合、ページが不在というわけではなく、編集ページが空のためリンクが赤色になっている)。 | |||
nstab-categoryを変更しても、URLは変わらない。 | |||
ChatGPTへの質問。 | |||
MediaWikiの名前空間の翻訳を無効にする方法を教えてください。 | |||
====== ChatGPT: ====== | |||
MediaWikiで名前空間の翻訳を無効にするには、以下の手順を実行します: | |||
# '''<code>LocalSettings.php</code> ファイルの編集''': MediaWikiの設定ファイルである <code>LocalSettings.php</code> を開きます。このファイルは、MediaWikiインストールディレクトリにあります。 | |||
# '''翻訳を無効にする設定の追加''': <code>LocalSettings.php</code> に以下の設定を追加します。この設定により、指定した名前空間の翻訳を無効にすることができます。 | |||
// 名前空間の翻訳を無効にする | |||
$wgTranslateLinks = false; | |||
# この設定を追加することで、すべての名前空間の翻訳が無効になります。 | |||
# '''特定の名前空間の翻訳を無効にする''': 特定の名前空間だけ翻訳を無効にしたい場合は、より具体的な設定を追加する必要があります。たとえば、「ユーザー」名前空間(<code>User</code>)の翻訳を無効にするには、以下のように設定を追加します。 | |||
$wgNamespaceAliases = array( | |||
NS_USER => 'User' | |||
); | |||
$wgTranslateLinks = false; | |||
# これにより、「ユーザー」名前空間の翻訳が無効になります。必要に応じて、他の名前空間も設定できます。 | |||
# '''設定の保存''': <code>LocalSettings.php</code> を保存し、MediaWikiを再起動する必要があります。これにより、新しい設定が適用されます。 | |||
# '''確認''': 設定が正しく適用されているか確認するため、MediaWikiのインターフェースを確認し、指定した名前空間で翻訳が無効になっていることを確認します。 | |||
この手順で、MediaWikiで名前空間の翻訳を無効にすることができます。必要に応じて、設定を調整してください。 | |||
wgTranslateLinksは存在しない嘘だが、「[[mediawikiwiki:Manual:$wgNamespaceAliases/ja|Manual:$wgNamespaceAliases - MediaWiki]]」は使えそう。 | |||
[https://www.hostknox.com/knowledgebase/686/How-to-add-namespace-aliases-in-MediaWiki.html HostKnox :: ナレッジベース :: MediaWiki に名前空間エイリアスを追加する方法] | |||
* 「[https://vanguardflight.xii.jp/wp/2014/03/30/313/ MediaWikiにExtension:Scribuntoをインストール – Remove Before Flight]」 | |||
* [https://vanguardflight.xii.jp/wp/2014/03/26/300/ MediaWikiのインストール手順 – Remove Before Flight] | |||
エイリアスを追加するか、ソースコードの変更がやはり必要だと思われる。 | |||
「[[mediawikiwiki:Manual:$wgNamespaceAliases/ja|Manual:$wgNamespaceAliases - MediaWiki]]」を見ていたら、[[mediawikiwiki:Manual:$wgExtraNamespaces|Manual:$wgExtraNamespaces - MediaWiki]]が登場して、既定の名前空間の改名にも使えるらしい。「[[mediawikiwiki:Manual:Using_custom_namespaces|Manual:Using custom namespaces - MediaWiki]]」を見ると。 | |||
define("NS_FOO", 3000); | |||
$wgExtraNamespaces[NS_FOO] = "Foo"; | |||
以下のように名前を変更すると、改名できるらしい。 | |||
define("NS_FOO", 3000); | |||
$wgExtraNamespaces[NS_FOO] = "New"; | |||
$wgNamespaceAliases['Foo'] = NS_FOO; | |||
本当かな? | |||
[[mediawikiwiki:Manual:Namespace_constants|Manual:Namespace constants - MediaWiki]] | |||
以下のコードでうまくいった。 | |||
// Rename namespace to keep English | |||
$wgExtraNamespaces[NS_USER] = "User"; | |||
$wgNamespaceAliases['利用者'] = NS_USER; | |||
$wgExtraNamespaces[NS_CATEGORY] = "Category"; | |||
$wgNamespaceAliases['カテゴリ'] = NS_CATEGORY; | |||
$wgExtraNamespaces[NS_SPECIAL] = "Special"; | |||
$wgNamespaceAliases['特別'] = NS_SPECIAL; | |||
特別など他のページもこれで全部英語に戻す。 | |||
=== Other === | |||
==== Conflict ==== | |||
複数のタブで同じページをGUIで編集して、更新すると、後の更新で前の更新が上書きされる。順番に注意する。 | |||
GUIじゃなくて、ソースエディットで節単位だと問題ないのかもしれない。 | |||
== Markup == | == Markup == | ||
151行目: | 308行目: | ||
Ref: [[mediawikiwiki:Topic:Ua1cqlfd07kyvd8p|How to Embed List of All Namespace-Pages in a Wiki Page? on Project:Support desk]] | Ref: [[mediawikiwiki:Topic:Ua1cqlfd07kyvd8p|How to Embed List of All Namespace-Pages in a Wiki Page? on Project:Support desk]] | ||
カスタム名前空間Privateで非公開ページを作ったら、Privateのページ一覧をメインページに表示させたくなった。若干工夫がいる。< | カスタム名前空間Privateで非公開ページを作ったら、Privateのページ一覧をメインページに表示させたくなった。若干工夫がいる。 | ||
{{Special:Prefixindex/<custom namespace>:}} | <nowiki>{{Special:Prefixindex/<custom namespace>:}}</nowiki> | ||
</ | <custom namespace>部分にカスタム名前空間を指定する。これで一覧ページを開ける。大事なのは末尾の:。これで先頭一致でページ一覧のページになっている。これをtransclusionする形。 | ||
==Setting== | |||
===Private=== | |||
=== Private === | |||
特定ページを非公開にすることができる。後日方法を精査する。 | 特定ページを非公開にすることができる。後日方法を精査する。 | ||
* [https://irineko.hatenablog.com/entry/2021/01/06/194908 mediawiki 特定のページの閲覧制限をしたい。 - 人狼wiki更新情報] | *[https://irineko.hatenablog.com/entry/2021/01/06/194908 mediawiki 特定のページの閲覧制限をしたい。 - 人狼wiki更新情報] | ||
* [[mediawikiwiki:Manual:Preventing_access/ja|Manual:アクセス制限 - MediaWiki]] | *[[mediawikiwiki:Manual:Preventing_access/ja|Manual:アクセス制限 - MediaWiki]] | ||
全体設定としては以下がある。基本非公開で一部公開の場合に使える。 | 全体設定としては以下がある。基本非公開で一部公開の場合に使える。 | ||
# Disable reading by anonymous users | # Disable reading by anonymous users | ||
173行目: | 329行目: | ||
今回は基本公開で一部非公開。 | 今回は基本公開で一部非公開。 | ||
* ユーザー属性での管理。 | *ユーザー属性での管理。 | ||
* 名前空間での管理 (LockDown拡張機能)。 | *名前空間での管理 (LockDown拡張機能)。 | ||
Lockdownを試す。 | Lockdownを試す。 | ||
180行目: | 336行目: | ||
「[https://web.gnusocial.jp/post/2024/02/03/10009/ 機能: MediaWikiでのLockdown拡張を用いた名前空間単位の非公開ページ | GNU social JP Web]」に記した。 | 「[https://web.gnusocial.jp/post/2024/02/03/10009/ 機能: MediaWikiでのLockdown拡張を用いた名前空間単位の非公開ページ | GNU social JP Web]」に記した。 | ||
=== $wgCapitalLinks === | === $wgCapitalLinks=== | ||
出典: [[mediawikiwiki:Manual:$wgCapitalLinks|Manual:$wgCapitalLinks - MediaWiki]]。 | 出典: [[mediawikiwiki:Manual:$wgCapitalLinks|Manual:$wgCapitalLinks - MediaWiki]]。 | ||
187行目: | 343行目: | ||
$wgCapitalLinks = falseにするとこれを無効にできる。大文字小文字を完全に区別する。例えば、iPhoneなどのように、大文字小文字が重要なことがあるので、falseにしておくのがよいと思う。リンク切れにも影響するので最初の方で設定するとよい。 | $wgCapitalLinks = falseにするとこれを無効にできる。大文字小文字を完全に区別する。例えば、iPhoneなどのように、大文字小文字が重要なことがあるので、falseにしておくのがよいと思う。リンク切れにも影響するので最初の方で設定するとよい。 | ||
== Other == | ==Other== | ||
=== Analytics === | ===Analytics=== | ||
サイトのアクセス分析のためにGoogle Analyticsを設置したい。いくつか拡張機能がある。GA4対応が重要な項目。 | サイトのアクセス分析のためにGoogle Analyticsを設置したい。いくつか拡張機能がある。GA4対応が重要な項目。 | ||
* [[mediawikiwiki:Extension:Google_Analytics_Integration|Extension:Google Analytics Integration - MediaWiki]]: 翻訳は更新されているがベースコードは2017年のv3.0.1で古い。 | *[[mediawikiwiki:Extension:Google_Analytics_Integration|Extension:Google Analytics Integration - MediaWiki]]: 翻訳は更新されているがベースコードは2017年のv3.0.1で古い。 | ||
* [[mediawikiwiki:Extension:GoogleAnalyticsMetrics|Extension:GoogleAnalyticsMetrics - MediaWiki]]: 2023-01 v1.0.2。Google Analyticsからメトリクスを取得して挿入する。アクセスカウンター的な拡張機能な模様 (関連: [[mediawikiwiki:Extension:HitCounters|Extension:HitCounters - MediaWiki]])。 | *[[mediawikiwiki:Extension:GoogleAnalyticsMetrics|Extension:GoogleAnalyticsMetrics - MediaWiki]]: 2023-01 v1.0.2。Google Analyticsからメトリクスを取得して挿入する。アクセスカウンター的な拡張機能な模様 (関連: [[mediawikiwiki:Extension:HitCounters|Extension:HitCounters - MediaWiki]])。 | ||
* [[mediawikiwiki:Extension:Google_Analytics_Links|Extension:Google Analytics Links - MediaWiki]]: 2009年v1.2。古い。MediaWiki v1.39以上で動作しない。 | *[[mediawikiwiki:Extension:Google_Analytics_Links|Extension:Google Analytics Links - MediaWiki]]: 2009年v1.2。古い。MediaWiki v1.39以上で動作しない。 | ||
* [[mediawikiwiki:Extension:GoogleAnalyticsTopPages|Extension:GoogleAnalyticsTopPages - MediaWiki]]: 2014年v0.0.1。アクセス上位ページのリストを生成する。 | *[[mediawikiwiki:Extension:GoogleAnalyticsTopPages|Extension:GoogleAnalyticsTopPages - MediaWiki]]: 2014年v0.0.1。アクセス上位ページのリストを生成する。 | ||
* [[mediawikiwiki:Extension:GoogleTagManager|Extension:GoogleTagManager - MediaWiki]]: 2023年v.1.1。Google Tag Managerを設置する。 | *[[mediawikiwiki:Extension:GoogleTagManager|Extension:GoogleTagManager - MediaWiki]]: 2023年v.1.1。Google Tag Managerを設置する。 | ||
* [[mediawikiwiki:Extension:GTag|Extension:GTag - MediaWiki]]、[https://mirukupc.com/2022/04/01/?p=169 MediaWikiでGoogle AnalyticsのGA4を使う - ミルクPCのブログ] (GTag): 2023 v1.3.0。新しいGoogle Analyticsのトラッキングタグに対応している。 | *[[mediawikiwiki:Extension:GTag|Extension:GTag - MediaWiki]]、[https://mirukupc.com/2022/04/01/?p=169 MediaWikiでGoogle AnalyticsのGA4を使う - ミルクPCのブログ] (GTag): 2023 v1.3.0。新しいGoogle Analyticsのトラッキングタグに対応している。 | ||
* [https://github.com/harugon/Gtm GitHub - harugon/Gtm: MediaWikiにGoogle Tag Managerを追加します]: Google Tag Manager。 | *[https://github.com/harugon/Gtm GitHub - harugon/Gtm: MediaWikiにGoogle Tag Managerを追加します]: Google Tag Manager。 | ||
* [[mediawikiwiki:Extension:Matomo|Extension:Matomo - MediaWiki]]: Google Analyticsではない分析サービスの拡張機能。 | *[[mediawikiwiki:Extension:Matomo|Extension:Matomo - MediaWiki]]: Google Analyticsではない分析サービスの拡張機能。 | ||
公式プラグインを優先したい。 | 公式プラグインを優先したい。 | ||
207行目: | 363行目: | ||
「[https://web.gnusocial.jp/post/2024/01/04/9756/ 拡張: MediaWikiのGoogle Analytics追跡拡張機能GTag | GNU social JP Web]」で設置した。 | 「[https://web.gnusocial.jp/post/2024/01/04/9756/ 拡張: MediaWikiのGoogle Analytics追跡拡張機能GTag | GNU social JP Web]」で設置した。 | ||
=== Advertise === | === Advertise=== | ||
==== 広告ブロッカー対策 ==== | ====広告ブロッカー対策==== | ||
出典: [https://dajya-ranger.com/pukiwiki/defend-site-content-for-pukiwiki/ 【PukiWiki編】広告ブロッカーからサイトコンテンツと収益を守る! | SEの良心]。 | 出典: [https://dajya-ranger.com/pukiwiki/defend-site-content-for-pukiwiki/ 【PukiWiki編】広告ブロッカーからサイトコンテンツと収益を守る! | SEの良心]。 | ||
MediaWikiでも同様の方法で広告ブロッカー対策を導入できそう。 | MediaWikiでも同様の方法で広告ブロッカー対策を導入できそう。 | ||
==== Adsense ==== | ====Adsense==== | ||
Google Adsense設置用のプラグインがいくつかある。 | Google Adsense設置用のプラグインがいくつかある。 | ||
* [[mediawikiwiki:Extension:Google_AdSense|Extension:Google AdSense - MediaWiki]]: MediaWiki v1.37以上で非互換。 | *[[mediawikiwiki:Extension:Google_AdSense|Extension:Google AdSense - MediaWiki]]: MediaWiki v1.37以上で非互換。 | ||
* [[mediawikiwiki:Extension:ShoutWiki_Ads|Extension:ShoutWiki Ads - MediaWiki]] | *[[mediawikiwiki:Extension:ShoutWiki_Ads|Extension:ShoutWiki Ads - MediaWiki]] | ||
* [[mediawikiwiki:Extension:Widgets|Extension:Widgets - MediaWiki]] | *[[mediawikiwiki:Extension:Widgets|Extension:Widgets - MediaWiki]] | ||
* [https://knowledge.rinpress.com/index.php/MediaWiki%E3%81%ABGoogle_AdSense%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F MediaWikiにGoogle AdSenseを追加してみた - とある社畜の頭脳整理]、[https://dococo.jp/index.php/Mediawiki%E3%81%A7Google_Adsense%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%95%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95 MediawikiでGoogle Adsenseを表示させる方法 - dococo wiki]、[https://dococo.jp/index.php?title=MediaWiki%E3%81%A7Google_Adcence MediaWikiでGoogle Adcence - dococo wiki]: HTMLetsを使うらしい。 | *[https://knowledge.rinpress.com/index.php/MediaWiki%E3%81%ABGoogle_AdSense%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F MediaWikiにGoogle AdSenseを追加してみた - とある社畜の頭脳整理]、[https://dococo.jp/index.php/Mediawiki%E3%81%A7Google_Adsense%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%95%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95 MediawikiでGoogle Adsenseを表示させる方法 - dococo wiki]、[https://dococo.jp/index.php?title=MediaWiki%E3%81%A7Google_Adcence MediaWikiでGoogle Adcence - dococo wiki]: HTMLetsを使うらしい。 | ||
ShoutWiki AdsかWidgetsで設置する模様。基本はJavaScriptコードの設置。 | ShoutWiki AdsかWidgetsで設置する模様。基本はJavaScriptコードの設置。 | ||
[[Category:Other]] |
2024年10月7日 (月) 09:12時点における最新版
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 による直前の版へ差し戻しました」のメッセージで、変更を打ち消し履歴が作られる。
RevisionDelete
秘匿情報を誤って公開した場合など、特定の変更履歴を非表示にできる。
LocalSettings.phpに以下を追記すると有効になる。
$wgGroupPermissions['sysop']['deletelogentry'] = true; $wgGroupPermissions['sysop']['deleterevision'] = true;
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
About
ページをグループ化する機能。重要。
カテゴリーへのページの追加は、追加対象ページに [[Category:カテゴリ名]] を追加するだけ。どこでもいい。最下部が一般的。
カテゴリーページ自体へのリンクを張る場合、[[:Category:カテゴリー名]] のように、先頭に:を付与する。
カテゴリーが未作成なら、同時にカテゴリーの未作成ページができる。カテゴリーページはカテゴリーページで、作成が必要。カテゴリー自体も作成はできる。通常のページ同様に、 [Category:カテゴリー名] で検索して、新規作成する。
新規作成すると、CategoryTree拡張機能で、自動的にカテゴリー一覧が末尾に表示される。
カテゴリー自体も別のカテゴリーに属すことができる。ページ同様に、カテゴリーページに [[Category:カテゴリ名]] を追加するだけ。
カテゴリーの階層の保守としては、カテゴリーでツリー構造になっているときれい。サブページに近い。カテゴリーでWiki全体を分類してまとめられる。Category:Mainをカテゴリーのルートにするときれいかもしれない。
CategoryTree
About
カテゴリーの一覧表示は、標準拡張機能の「Extension:CategoryTree - MediaWiki」で可能になる。transclude (参照読込) ではできない (Transclude a category in MediaWiki - Stack Overflow)。
CategoryTreeは以下の3種類の使用方法がある。
- カテゴリーページでデフォルト表示。
- カスタムタグ (categorytree )。
- special page (Special:CategoryTree)
categorytree要素は以下のような形式で使う。
<categorytree showcount="on" mode="all">Main</categorytree>
重要なオプションがある。
- mode: 初期値が複雑。namespacesで上書き。なければ、項目が有無で決まる。pages (上限200ページ) かallを指定しておけばいいと思われる。ページ数が膨大ならpages。
- categories (0): サブカテゴリーのみ。
- pages (10): 画像を除いた、サブカテゴリーとページ。上限200ページ。
- all (20): 全部。
- parents (100): 親のカテゴリーを表示。インバース操作用。
- showcount: "on"でカテゴリーの記事数表示。categorytree要素でのみデフォルトoff。
デフォルト展開
CategoryTreeのcategorytree要素を使うと、カテゴリー一覧を表示できる。が、クリックしないと展開されないのが、余計なクリックが必要で嫌。
- depth
- determines how many levels of the tree are shown initially. Default is 1. 0 means only the root node. The maximum value depends on the mode specified, and on the
$wgCategoryTreeMaxDepth
option. (Introduced between r20410 and r20840, Mar 30 2007; fully functional even with$wgCategoryTreeDynamicTag
since r36864, July 2008.)
- $wgCategoryTreeMaxDepth
- an array defining the maximum depth for each mode, to which the tree may be expanded initially using the depth parameter in a <category> tag. By default, this is set to 2 for the "categories" mode, and 1 for other modes. To set it to 3 for categories and 2 for other modes, for example, you can use
$wgCategoryTreeMaxDepth = [10 => 2, 20 => 2, 0 => 3, 100 => 2];
.
このあたりの、オプションと設定を使うと、うまくできる。
基本はdepthで最大展開表示数を制御する。ただし、性能の制御のために$wgCategoryTreeMaxDepthで上限が決まっている。デフォルトで、mode="categories"=2、他は1になっている。
$wgCategoryTreeMaxDepth = [20 => 9];
そんなに階層が何重にもなることは想定していないが、上記のようにLocalSettings.phpでallの最大を1から9に変更する。
<categorytree showcount="on" mode="all" depth="9">Main</categorytree>
加えて、上記のようにdepth="9"を指定すると反映される。膨大なWikiで9が重いなら、上限を変える。これで一括管理できる仕組みな模様。
「MediaWiki Category Tree expand all by default - Stack Overflow」が関連Q&Aだが、回答が的外れになっている。
Language
日本語にすると、ヘルプとか特別とかが日本語のURLになるのが嫌。
Page content languageで変更できる?
Special:Allmessagesにシステムメッセージのリストがある。例えば、「特別ページ」は「specialpage 」が対応している。[Special:AllMessages] は「システムメッセージの一覧」 で対応している。
[MediaWiki:Allmessages] のページでシステムメッセージが格納されている。[MediaWiki:Allmessages/ja] で言語対応が出る。
「Manual:$wgUseDatabaseMessages - MediaWiki」で選択できる。falseにするとwpLanguageCodeで強制指定。trueだと自分で変更できる。
「mediawiki/languages/i18n/en.json at 1.42.1 · wikimedia/mediawiki」が言語対応の一覧。ここから探すとよい。
特に重要なもの。
- nstab: 名前空間類のプレフィクスの模様。
- nstab-special Special
- specialpage
- specialpages 特別ページ一覧
- nstab-
- mainpage
Special:の扱いがよくわからない。カテゴリーじゃなくて名前空間。
The Special pseudo namespace can be translated in other languages. 翻訳可能。「Manual:Namespace - MediaWiki」によると、「Manual:$wgNamespaceAliases - MediaWiki」で翻訳可能?
「Manual:Namespace constants - MediaWiki」が定数。
NS_SPECIALを指定すると、翻訳が無効になる?
$wgNamespaceAliases['特別'] = NS_SPECIAL;
「How to switch from german namespace to english? on Project:Support desk」これが近い。
/jaなど言語ページもあって、変更できる。が、パーマリンクは変わらない。別のところ。
Ciencia Al Poder (talkcontribs) What you can control in the MediaWiki namespace is the text of the tab, not the namespace itself (eg: when linking to pages in that namespace or the displayed URL). See Manual:Using custom namespaces
nstab系はタブテキストなどで、URLは変わらない。
Special:AllMessagesからnstab-category nstab-category/jaをCategoryに直したがパーマリンクは反映されず。
「Help:System message - MediaWiki」にシステムメッセージの変更方法がある。
まず、Special:AllMessagesのページに、システムメッセージの全リストがある。「mediawiki/languages/i18n/en.json at 1.42.1 · wikimedia/mediawiki」がソースコードの対応。
en.jsonのja.jsonを変更する?
この画面から編集できる。変更方法が一応2種類ある。
- [MediaWiki:メッセージキー] のページの値を変更。
- Special:AllMessagesの左側のリンクで上記ページにアクセス (既定のメッセージ文が使用されている場合、ページが不在というわけではなく、編集ページが空のためリンクが赤色になっている)。
nstab-categoryを変更しても、URLは変わらない。
ChatGPTへの質問。
MediaWikiの名前空間の翻訳を無効にする方法を教えてください。
ChatGPT:
MediaWikiで名前空間の翻訳を無効にするには、以下の手順を実行します:
LocalSettings.php
ファイルの編集: MediaWikiの設定ファイルであるLocalSettings.php
を開きます。このファイルは、MediaWikiインストールディレクトリにあります。- 翻訳を無効にする設定の追加:
LocalSettings.php
に以下の設定を追加します。この設定により、指定した名前空間の翻訳を無効にすることができます。
// 名前空間の翻訳を無効にする $wgTranslateLinks = false;
- この設定を追加することで、すべての名前空間の翻訳が無効になります。
- 特定の名前空間の翻訳を無効にする: 特定の名前空間だけ翻訳を無効にしたい場合は、より具体的な設定を追加する必要があります。たとえば、「ユーザー」名前空間(
User
)の翻訳を無効にするには、以下のように設定を追加します。
$wgNamespaceAliases = array( NS_USER => 'User' ); $wgTranslateLinks = false;
- これにより、「ユーザー」名前空間の翻訳が無効になります。必要に応じて、他の名前空間も設定できます。
- 設定の保存:
LocalSettings.php
を保存し、MediaWikiを再起動する必要があります。これにより、新しい設定が適用されます。 - 確認: 設定が正しく適用されているか確認するため、MediaWikiのインターフェースを確認し、指定した名前空間で翻訳が無効になっていることを確認します。
この手順で、MediaWikiで名前空間の翻訳を無効にすることができます。必要に応じて、設定を調整してください。
wgTranslateLinksは存在しない嘘だが、「Manual:$wgNamespaceAliases - MediaWiki」は使えそう。
HostKnox :: ナレッジベース :: MediaWiki に名前空間エイリアスを追加する方法
- 「MediaWikiにExtension:Scribuntoをインストール – Remove Before Flight」
- MediaWikiのインストール手順 – Remove Before Flight
エイリアスを追加するか、ソースコードの変更がやはり必要だと思われる。
「Manual:$wgNamespaceAliases - MediaWiki」を見ていたら、Manual:$wgExtraNamespaces - MediaWikiが登場して、既定の名前空間の改名にも使えるらしい。「Manual:Using custom namespaces - MediaWiki」を見ると。
define("NS_FOO", 3000); $wgExtraNamespaces[NS_FOO] = "Foo";
以下のように名前を変更すると、改名できるらしい。
define("NS_FOO", 3000); $wgExtraNamespaces[NS_FOO] = "New"; $wgNamespaceAliases['Foo'] = NS_FOO;
本当かな?
Manual:Namespace constants - MediaWiki
以下のコードでうまくいった。
// Rename namespace to keep English $wgExtraNamespaces[NS_USER] = "User"; $wgNamespaceAliases['利用者'] = NS_USER; $wgExtraNamespaces[NS_CATEGORY] = "Category"; $wgNamespaceAliases['カテゴリ'] = NS_CATEGORY; $wgExtraNamespaces[NS_SPECIAL] = "Special"; $wgNamespaceAliases['特別'] = NS_SPECIAL;
特別など他のページもこれで全部英語に戻す。
Other
Conflict
複数のタブで同じページをGUIで編集して、更新すると、後の更新で前の更新が上書きされる。順番に注意する。
GUIじゃなくて、ソースエディットで節単位だと問題ないのかもしれない。
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コードの設置。