Extension:CategoryTree
CategoryTree リリースの状態: 安定 |
|
---|---|
実装 | タグ , パーサー関数 , 特別ページ |
説明 | ウィキのカテゴリ構造の動的なビューをツリーとして提供する。 |
作者 | Daniel Kinzler (Duesentriebトーク) |
最新バージョン | 継続的な更新 |
互換性の方針 | MediaWiki とともにリリースされるスナップショット。 master には後方互換性がありません。 |
MediaWiki | 1.25+ |
ライセンス | GNU 一般公衆利用許諾書 2.0 以降 |
ダウンロード | README |
|
|
四半期ごとのダウンロード数 | 298 (Ranked 13th) |
使用中の公開ウィキ | 10,554 (Ranked 11th) |
translatewiki.net で翻訳を利用できる場合は、CategoryTree 拡張機能の翻訳にご協力ください | |
問題点 | 未解決のタスク · バグを報告 |
CategoryTree 拡張機能はウィキのカテゴリ構造の動的なビューをツリーとして提供します。これは必要に応じてツリーの一部をロードするためにAJAXを使います。CategoryTree は外部ツールとしてもともとはDaniel Kinzlerによって開発されました(meta:User:Duesentrieb/CategoryTreeを参照)。のちにこれはTim Starlingの助けによってMediaWikiソフトウェアに統合されました。
インストール
- ダウンロードして、ファイルを
extensions/
フォルダー内のCategoryTree
という名前のディレクトリ内に配置します。
開発者とコード寄稿者は、上記の代わりに以下を使用してGitからインストールします:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/CategoryTree - 以下のコードを LocalSettings.php ファイルの末尾に追加します:
wfLoadExtension( 'CategoryTree' );
- 完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。
使用法
CategoryTreeは、3つの使い方があります。
- カテゴリページに直接表示されます。
- カテゴリ構造をWikiページにインラインで表示するための「カスタムタグ」(または「パーサー関数」)として。
- また、特設ページとして
CategoryTree拡張機能はカテゴリページに一覧が表示される下位カテゴリに ► "expand" ウィジェットを追加します。
<categorytree> タグ
例。実行結果は下のボックスと右にあります:
<categorytree mode="pages">Manual</categorytree>
カスタムタグは <categorytree> と呼ばれます。たとえば、ウィキページに <categorytree>Foo</categorytree> を記載すると、そのページでFooカテゴリの内容が動的なツリーとして表示されます (右の例を参照)。HTMLライクな構文を使って、タグは次の属性を受け入れます:
- mode
- ツリーに表示されるページを決定します。これは
namespaces
オプションを使用することでオーバーライドできます。許可される値は次の通りです:- categories
- 下位カテゴリだけ表示する(構成定数の
0
) - pages
- 画像以外の下位カテゴリとページを表示する(構成定数の
10
)、ページ数の上限は200件 - all
- すべてのページ、下位カテゴリ、画像などを表示する(構成定数の
20
) - parents
- 下位カテゴリの代わりに親カテゴリの一覧を表示する (構成定数の
100
)。これはCategoryTreeに"inverse"オペレーションをさせます(2008年7月の r36892 以降でサポートされます)。
- depth
- 最初に表示されるツリーのレベルを決めます。既定値は1で、0はルートノードのみを意味します。最大値は指定されるモード、と
$wgCategoryTreeMaxDepth
オプションに依存します(2007年5月30日の r20410 と r20840 の間に導入されました; 2008年6月の r36864 以降の$wgCategoryTreeDynamicTag
でも、十分な機能があります) onlyroot- 初期の状態でツリーの"root"ノードのみを表示するようにするには
これを "on" に設定します。2008年7月の r36864 で廃止予定になりました: 代わりにdepth="0"
と同等です。(2007年3月13日の r20385 で導入されました)depth="0"
を使用してください。 - hideroot
- ツリーの"root"ノードを隠すにはこれを "on"、すなわち
hideroot=on
にセットします。この例ではカテゴリのFooは表示されません。 - hideprefix
- ツリーのエントリから隠される名前空間の接頭辞を決定します(2008年7月の r36864 以降)。可能な値は次の通りです:
- always
- 常に接頭辞を隠します。すべてのページが同じ名前空間に属する場合に使います (構成定数の
10
)。 - never
- カテゴリに対してでも、名前空間の接頭辞を決して隠さない(構成定数の
0
)。 - auto
mode="categories"
のように、カテゴリのみが表示される場合はカテゴリの名前空間を隠します(構成定数の30
)。これは古い既定の挙動と同等です(2008年6月以前)。- categories
- カテゴリの名前空間を隠しますが、他のすべての接頭辞を表示します(構成定数の
20
)。これは新しい既定の挙動です(2008年7月の r36864 以降)。
- showcount
- 下位カテゴリの数を表示するにはこれを "on"、すなわち
showcount="on"
に設定します(2008年7月の r36864 以降)。 これはページのインラインのカテゴリツリーに対しては既定で無効ですが、カテゴリ一覧および Special:CategoryTree では既定で有効になります。 - notranslations
notranslations="on"
のように、"on" を設定すると、カテゴリに係るページに対応する翻訳ページがすべて非表示になります(Gerrit change 526234以降、2019年11月)。 デフォルトでは無効になっています。 このオプションを「on」に設定すると、異なる翻訳(例:Page, Page/ja, Page/fr, Page/de)の代わりに標準翻訳の「Page」だけが表示され、すべての翻訳が抑制されます。これは "showcount "には影響しないので、まだバグです。- namespaces
- ツリーにページを表示する名前空間のリスト (r36864, 2008年7月以降)。リストの項目は、スペースで区切られた名前空間名でなければなりません。標準名前空間は、"-" または "0" で表すことができます。下位カテゴリは、Category 名前空間がリストに存在する場合にのみ表示されます。
- class, style、id、etc
<categorytree>
タグはブロック要素用の標準のすべてのHTML属性をサポートします(2008年7月の r36864 以降で、それ以前はstyle
のみがサポートされました)。
'名前空間' パラメータに関する注意事項
カテゴリは名前空間です。カテゴリは既定ですべてのモードで表示されますが、namespaces
パラメーターを指定すると、一覧に存在しない他の名前空間と同様に非表示にできます。特定の名前空間に属するページ、および下位カテゴリに含まれるページを列挙する場合は、単に Category を名前空間リストに追加してください。
例:
- Category:Manual: にある標準名前空間のページを列挙します:
<categorytree mode="pages" namespaces="Main">Manual</categorytree>
- Category:Manual: にある標準名前空間のページおよび下位カテゴリを列挙します:
<categorytree mode="pages" namespaces="Main Category">Manual</categorytree>
modeパラメータは、namespaces
で上書きされます。
- Category の名前空間のみを尋ねる場合は、
mode=categories
と同等です。 - ファイル名空間がリスト上に存在する場合は、
mode=all
と同じになります。 - それ以外の場合は、
mode=pages
が使用されます。つまり、サイト構成が変更されていなければ、以下は等価です(最初の二つは常に等価、三つ目は$wgCategoryTreeDefaultMode
がデフォルトのCategoryTreeMode::CATEGORIES
である場合のみ)。
<categorytree mode="categories">Manual</categorytree>
<categorytree namespaces="Category">Manual</categorytree>
<categorytree>Manual</categorytree>
{{#categorytree}} パーサー関数
r25825 (2007-9-13)以降、ページのカテゴリツリーを置くのにパーサー関数の構文を使用することもできます。これは、例えば {{#categorytree:Foo}}
などの異なる構文を使った <categorytree> タグのように機能します。オプションは名前付きのテンプレート名、例えば {{#categorytree:Foo|hideroot|mode=pages}}
の構文を使って指定できます。
パーサー関数の構文を使用することには カテゴリを指定する際にマジックワード、テンプレートとテンプレートパラメーターが使える利点があります。いくつかの例です:
- このページのカテゴリツリーを表示するにはマジック変数を使う(カテゴリ説明ページに役立ちます):
{{#categorytree:{{PAGENAME}}}}
。 - カテゴリを指定するにはテンプレートを使う:
{{#categorytree:{{root category}}}}
- ルートカテゴリの名前は Template:Root_category の内容によって定義されます。 - テンプレート内部でCategoryTreeを使うとき、カテゴリを指定するにはテンプレートパラメーターを使います: Template:Baz では
{{#categorytree:{{{1}}}}}
を使って呼び出すことができます。
Special:CategoryTree ページ
特別ページは Special:CategoryTree と呼ばれます。カテゴリの名前を入力しブラウザーでコンテンツにアクセスします。
設定
LocalSettings.php ファイルで指定できるオプションがいくつかあります:
0
、pages は 10
、all は 20
、parents は 100
を使用してください。- $wgCategoryTreeMaxChildren
- ツリーノードに表示できる子の最大数です。既定値は200です。
- $wgCategoryTreeAllowTag
- <categorytree> タグを有効にします。既定値はtrueです。
- $wgCategoryTreeDynamicTag
- <categorytree> でツリーの最初のレベルのツリーを動的に読み込みます。この方法では、キャッシュを無効にする必要はありません。既定値はfalseです。
- $wgCategoryTreeDisableCache
- <categorytree> タグのあるページのパーサーキャッシュを無効にするか、最大キャッシュ時間を秒単位で指定します。既定値は21600、つまり6時間です。
- $wgCategoryTreeUseCache
- 匿名利用者のHTTPキャッシュを有効にします。既定値はfalseです。
$wgCategoryTreeOmitNamespaceページとカテゴリで名前空間を表示しない。既定値はfalseで、カテゴリのみを表示しない限り名前空間が表示されます。2008年7月の r36864 で廃止予定になったため代わりに$wgCategoryTreeDefaultOptions['hideprefix']
を使用してください- $wgCategoryTreeMaxDepth
- <category> タグで深さのパラメーターを使用して初期に展開されるそれぞれのmodeの最大の深さを決める配列です。既定では、これは"categories"モードで2に、他のモードでは1に設定されます。例えばcategoriesには3、他のモードには2に設定するには、
$wgCategoryTreeMaxDepth = [10 => 2, 20 => 2, 0 => 3, 100 => 2];
を使用できます。 - $wgCategoryTreeDefaultMode
<categorytree> タグでmode属性が設定されていないときの既定のモード。可能な値は0
(既定値 - カテゴリ)、10
(ページ)、20
のいずれかです。$wgCategoryTreeCategoryPageModeカテゴリページでツリーをレンダリングするときに使用するモード。2008年7月の r36864 に廃止予定になりました。代わりに$wgCategoryTreeCategoryPageOptions['mode']
を使用します。- $wgCategoryTreeSidebarRoot
- カテゴリ ツリーをサイドバーに統合するために使用するルート カテゴリ(2008年7月の r36920 以降)。 設定されていない場合、ツリーは統合されません (これは既定値)。 サイドバーへの CategoryTree の統合は SkinTemplate に基づく外装のみ機能します。すなわち、Modern、Monobook、Chick、Simple、MySkin は機能しますが、Standard、Nostalgia、CologneBlue は機能しません。 これは現在MediaWiki 1.35.1とVectorスキンでは機能しません。phab:278306 を参照してください。
- $wgCategoryTreeDefaultOptions
- 既定のオプションは配列として適用します(2008年7月の r36864 以降)。利用可能なオプションは上記の通りです。例:
$wgCategoryTreeDefaultOptions['mode'] = 'pages';
- $wgCategoryTreeCategoryPageOptions
- カテゴリページで配列として使用するオプション(2008年7月の r36864 以降)。
- $wgCategoryTreeSpecialPageOptions
- Special:CategoryTree で配列として使用するオプション(2008年7月の r36864 以降)
- $wgCategoryTreeSidebarOptions
- サイドバーでツリーを表示するときに配列として使用するオプション(2008年7月の r36920 以降)
システムメッセージ
categorytree-member-num
既定では、カテゴリページに下位カテゴリの一覧を表示する場合、それぞれの下位カテゴリの後に所属している下位カテゴリの数、ページ数、ファイル数(該当する場合)を整数で示します:
- カテゴリ名 (5カテゴリ、2頁、1ファイル)
システムメッセージの MediaWiki:Categorytree-member-num をオーバーライドすることでこのふるまいを変更できます。これは5つのパラメーターをとります:
パラメーター | 意味 |
---|---|
$1 | 下位カテゴリの個数 |
$2 | 記事の数 (カテゴリページやファイルページは含まない) |
$3 | アップロードされたファイルの個数 |
$4 | カテゴリページとファイルページを含む、メンバーページの合計数 |
$5 | ($1カテゴリ、$2頁、$3ファイル)と似ていますが、0の場合は省略されます。
正確には、カテゴリ内のページ(mediawiki:categorytree-num-pages)、下位カテゴリ(mediawiki:categorytree-num-categories)、ファイル(mediawiki:categorytree-num-files)の数をコンマで区切ったリストか、カテゴリにメンバーがない場合は空(mediawiki:categorytree-num-empty)になります。1.19より前のバージョンではこの値は異なっていました。この文書の古い版を参照してください。 |
既定値は ($5)
です。
ヒント: 異なる部分を条件ごとに表示するif/then/elseロジックを提供するには ParserFunctions 拡張機能を使用します。例:
{{#ifeq:$1|0||$1 categories}}
すべての情報を出力するときにカンマと空白を管理する設定:
省略版:
({{#ifeq:$4|0|empty|{{#ifeq:$1|0||$1 C{{#ifeq:{{#expr:$3+$2}}|0||,}}}} {{#ifeq:$2|0||$2 P{{#ifeq:$3|0||,}}}} {{#ifeq:$3|0||$3 F}}}})
完全名版:
({{#ifeq:$4|0|empty|{{#ifeq:$1|0||$1 categories{{#ifeq:{{#expr:$3+$2}}|0||,}}}} {{#ifeq:$2|0||$2 pages{{#ifeq:$3|0||,}}}} {{#ifeq:$3|0||$3 files}}}})
トラブルシューティング
CategoryTreeをインストールした後でウィキが壊れる
- エラー出力機能 をオンにする
- すべてのファイルがインストールされていることを確認する
- CategoryTree拡張機能のすべてのファイルが644モードで、CategoryTreeディレクトリが755モードであることを確認してください
LocalSettings.php のオプションの効果がない
- 拡張機能のファイルをインクルードした後でオプションを指定していることを確認してください。
<span id="Clicking_the_►_has_no_effect,_gives_a_JavaScript_error_or_just_sits_on_loading">
► をクリックしても効果がない、JavaScriptエラーまたはloadingになる
- 期待通りに動かない場合システムメッセージで <categorytree> タグを使用していることを確認してください(MediaWiki-Namespace) - これは既知の警告です。次善策は、下記の#サイドバーでCategoryTreeを使うを参照してください。
- LocalSettings.php で拡張機能のファイルをインクルードする前に
$wgUseAjax = true;
があることを確認してください。 - 拡張機能の最新バージョンを使用していることを確認してください - 開発の最先端のバージョンは git:mediawiki/extensions/CategoryTree です。
- 書き換えルールまたはエイリアスを使っている場合(例えば"very short URLs"がある - ドキュメントルートでウィキページ)、/skinsディレクトリと同じように/extensionsディレクトリに例外ファイルがあることを確認してください。下記の項目も参照してください。
<span id="Clicking_the_►_shows_no_sub-categories_error">
►をクリックすると下位カテゴリがありませんというエラーが表示される
- このコードを LocalSettings.php に追加して修正してください:
$wgCategoryTreeDefaultOptions['namespaces'] = [ 0, NS_CATEGORY, NS_FILE ];
ブラウザーが CategoryTree.js かつ/または CategoryTree.css に対してbad MIMEタイプを報告する
- Webサーバーが .js と .css ファイルに対して正しいmimeタイプを使っていることを確認してください
- ブラウザーでURLを直接入力し ページが完全に提供されエラーが表示されていないことを確認してください; とりわけ:
- 書き換えルールまたはエイリアスを使っている場合(たとえば"very short URLs"がある - ドキュメントルートでウィキページ)、/skinsディレクトリと同じように/extensionsディレクトリに例外ファイルがあることを確認してください。下記の項目も参照してください。
<span id="Member_counts_are_wrong,_grey_arrows_►_are_shown_instead_of_►">
メンバーの件数が間違っている、► の代わりに ► が表示される
MediaWiki 1.13以降では、CategoryTreeはカテゴリのメンバーの数を表示し、その番号に基づく子を持たないツリーのノードに灰色の矢印 ► を表示します。この情報は新しい category テーブルに基づいています。しかしながら、そのテーブルに現在の値を投入しても1.13にアップグレードするときは常に機能しません。その場合、populateCategory.php
メンテナンススクリプトを実行し、必要であれば --force
オプションをつけます。
<span id="► ► ▼_toggles_shown_only_on_the_first_level_of_the_category_tree_view">
► ► ▼トグルがカテゴリツリーの最初のレベルにしか表示されない
表示されているツリーが1階層しか展開できない場合、modules/ext.categoryTree.styles.css ファイル内の display: none;
を display: inline !important;
に変更してみてください。
タグスタイルを切り替えるためのJavaScriptに何らかのバグがあります。
ボット利用者のための注記
カテゴリページのHTMLを構文解析するボットとスクリプトは従来の出力を強制するURLの notree パラメーターを使用できます。しかしながらHTML出力は一般的には安定していないので、カテゴリの一覧を取得するには API を使用するようスクリプトを変更することをお勧めします。
"Category Not Found"メッセージ
Category Treeプラグインを実装しツリーを表示するコードを追加した後で、Category Not Foundというメッセージが見える場合、コンテントをカテゴリページに追加する必要があります。基本的にカテゴリページを赤くすることはできません。カテゴリ名をクリックし、テキストをカテゴリページに追加すれば、ツリーはきちんと機能します。
Next 200 links do not work with CategoryTree installed
インストールしたMediaWikiのバージョンに応じて、この拡張機能の適切なバージョンがインストールされていることを確認してください。特に、MediaWiki 1.17より前のバージョン用に作成された拡張機能のバージョンはMediaWiki 1.17以降と互換性がないため、カテゴリページのすべてのリンクが壊れるといった問題が生じます。
"namespaces"パラメーターを使用するとページが表示されなくなる
上記を参照してください。
ハック
システムメッセージとカスタム外装でCategoryTreeを使用
CategoryTreeの古いバージョンでは、この動かすためにコードを修正しなければなりません: CategoryTree.php ファイルで efCategoryTreeParserOutput
関数を見つけ、条件ブロックを削除すれば次のようになります:
function efCategoryTreeParserOutput( &$outputPage, &$parserOutput ) {
CategoryTree::setHeaders( $outputPage );
return true;
}
サイドバーでCategoryTreeを使用
JavaScriptの使用
MediaWiki 1.13 (r36917)の r36920 (2008年7月)以降では、$wgCategoryTreeSidebarRoot
をルートとして使用したいカテゴリに設定するだけでCategoryTreeをサイドバーに統合できます。これはSkinTemplateを継承する外装、すなわちModern、Monobook、Chick、Simple、MySkinのみに機能しますが、Standard、Nostalgia、CologneBlueは機能しません。
If you want the CategoryTree on a different position in the sidebar, you can reference it on MediaWiki:Sidebar as "categorytree-portlet".
CategoryTreeかつ/またはMediaWikiの以前のバージョンに関して、サイドバーの通常のウィキテキストを有功にするためにmodを MonoBook.php にインストールする必要があります。サイドバー内でウィキテキスト --DJ 19:26, 24 January 2008 (UTC) を参照してください。
"CategoryTree"のリンクをツールボックス(サイドバー )に追加するには、次のコードを外装 のJavaScriptのページ(例えば monobook.js)に追加しURL "w:Special:CategoryTree"をカスタマイズします。
function AppendCategoryTreeToSidebar() {
try {
var node = document.getElementById( "p-tb" )
.getElementsByTagName('div')[0]
.getElementsByTagName('ul')[0];
var aNode = document.createElement( 'a' );
var liNode = document.createElement( 'li' );
aNode.appendChild( document.createTextNode( 'CategoryTree' ) );
aNode.setAttribute( 'href' , '[[w:Special:CategoryTree]]' );
liNode.appendChild( aNode );
liNode.className = 'plainlinks';
node.appendChild( liNode );
} catch(e) {
// lets just ignore what's happened
return;
}
}
addOnloadHook( AppendCategoryTreeToSidebar );
このコードのより汎用的な版は Manual:インターフェイス/サイドバー#content of sidebar and toolbox (javascript) で見つかります。
Step by step if works easy:
- Add these lines to LocalSettings.php :
$wgCategoryTreeSidebarRoot = 'Category:article_name';
Using MediaWiki: namespace pages
If you want to create a link that goes to the generic categorytree (displayed as Category tree) when you're on a non-category page, and to a particular categorytree (displayed as View as category tree, with foo being the name of the category you're viewing) when you're on a category page:
- Add to your MediaWiki:Sidebar (right above the SEARCH is a good place) a line,
** sidebarcategorytree-url|sidebarcategorytree
- Create a [[MediaWiki:Sidebarcategorytree]] with, say:
{{#ifeq: {{NAMESPACE}}|Category|View as category tree|Category tree}}
- Create a [[MediaWiki:Sidebarcategorytree-url]] with, say:
{{#ifeq: {{NAMESPACE}}|Category|Special:CategoryTree/{{BASEPAGENAME}}|Special:CategoryTree/Categories}}
See also
この拡張機能は 1 つ以上のウィキメディアのプロジェクトで使用されています。 これはおそらく、この拡張機能が安定していて高いトラフィックのウェブサイトでも十分に動作することを意味します。 この拡張機能がインストールされている場所を確認するには、ウィキメディアの設定ファイル CommonSettings.php および InitialiseSettings.php 内で、この拡張機能の名前を探してください。 特定のウィキにインストールされている拡張機能の完全な一覧は、そのウィキの Special:Version ページにあります。 |
この拡張機能は以下のウィキ ファーム/ウィキ ホスト/パッケージに含まれています: これは正式な一覧ではありません。 一部のウィキ ファーム/ウィキ ホスト/パッケージは、ここに記載されていなくてもこの拡張機能を含んでいる場合があります。 必ずご利用のウィキ ファーム、ウィキ ホスト、バンドルで確認してください。 |