Jump to content

Extension:CategoryTree

From mediawiki.org
This page is a translated version of the page Extension:CategoryTree and the translation is 94% complete.
この拡張機能は MediaWiki 1.31 以降に同梱されています。 そのため再度ダウンロードする必要はありません。 しかし、提供されているその他の手順に従う必要はあります。
MediaWiki 拡張機能マニュアル
CategoryTree
リリースの状態: 安定
実装 タグ , パーサー関数 , 特別ページ
説明 ウィキのカテゴリ構造の動的なビューをツリーとして提供する。
作者 Daniel Kinzler (Duesentriebトーク)
最新バージョン 継続的な更新
互換性の方針 MediaWiki とともにリリースされるスナップショット。 master には後方互換性がありません。
MediaWiki 1.25+
ライセンス GNU 一般公衆利用許諾書 2.0 以降
ダウンロード
README
  • $wgCategoryTreeAllowTag
  • $wgCategoryTreeCategoryPageOptions
  • $wgCategoryTreePageCategoryOptions
  • $wgCategoryTreeMaxDepth
  • $wgCategoryTreeSidebarOptions
  • $wgCategoryTreeDefaultOptions
  • $wgCategoryTreeMaxChildren
  • $wgCategoryTreeSpecialPageOptions
  • $wgCategoryTreeOmitNamespace
  • $wgCategoryTreeSidebarRoot
  • $wgCategoryTreeDisableCache
  • $wgCategoryTreeCategoryPageMode
  • $wgCategoryTreeDefaultMode
  • $wgCategoryTreeUseCategoryTable
  • $wgCategoryTreeHijackPageCategories
四半期ごとのダウンロード数 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' );
    
  • Yes 完了 – ウィキの「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日の r20410r20840 の間に導入されました; 2008年6月の r36864 以降の $wgCategoryTreeDynamicTag でも、十分な機能があります)
onlyroot
初期の状態でツリーの"root"ノードのみを表示するようにするにはこれを "on" に設定します。depth="0" と同等です。(2007年3月13日の r20385 で導入されました) 2008年7月の r36864 で廃止予定になりました: 代わりに 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 ファイルで指定できるオプションがいくつかあります:

CT_* 変数は LocalSettings.php で使用できなくなりました。 代わりに category モードは 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というメッセージが見える場合、コンテントをカテゴリページに追加する必要があります。基本的にカテゴリページを赤くすることはできません。カテゴリ名をクリックし、テキストをカテゴリページに追加すれば、ツリーはきちんと機能します。

インストールした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:

$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