Extension:CategoryTree/ja

From MediaWiki.org
Jump to: navigation, search
マニュアル - リスト - スナップショット
Crystal Clear action run.png
CategoryTree

Release status: stable

実装 Tag
説明 ウィキのカテゴリ構造の動的なビューをツリーとして提供する
作者 Duesentrieb
MediaWiki 1.8 (r16385 or later), 1.11 (for CT since r30515), 1.13 (for CT since r36772)
ライセンス GPLとGFDL
ダウンロード スナップショットをダウンロード

Subversion [ヘルプ]
ソースコードを閲覧
README
log

パラメータ

$wgCategoryTreeMaxChildren, $wgCategoryTreeAllowTag, $wgCategoryTreeDynamicTag, $wgCategoryTreeDisableCache, $wgCategoryTreeHTTPCache, $wgCategoryTreeOmitNamespace, $wgCategoryTreeMaxDepth, $wgCategoryTreeDefaultMode, $wgCategoryTreeCategoryPageMode

使われているフック
SkinTemplateTabs

OutputPageParserOutput
ArticleFromTitle
LanguageGetMagic
ParserFirstCallInit

CategoryTree拡張機能はウィキのカテゴリ構造の動的なビューをツリーとして提供します。これは必要に応じてツリーの一部をロードするためにAJAXを使います。CategoryTreeは外部ツールとしてもともとはDaniel Kinzlerによって開発されました(meta:User:Duesentrieb/CategoryTreeを参照)。のちにこれはTim Starlingの助けによってMediaWikiソフトウェアに統合されました。

Contents

[edit] 使い方

CategoryTreeは3つの方法で使うことができます:

  • directly on the category pages,
  • ウィキページでインラインのカテゴリ構造を表示する"カスタムタグ"(もしくは"パーサー関数")
  • 特別ページとして追加する

CategoryTree拡張機能はカテゴリページに一覧が表示されるサブカテゴリに[+] "expand"ウィジェットを追加します。Javascriptが無効な場合、これらのウィジェットはカテゴリページに誘導してくれます(初期のバージョンでは、これは何もしません)。

[edit] <categorytree> タグ

例:

<categorytree mode=pages>Manual</categorytree>


カスタムタグは<categorytree>と呼ばれます。たとえば、ウィキページに<categorytree>Foo</categorytree>を記載すると、そのページでFooカテゴリの内容が動的なツリーとして表示されます (右の例を参照)。HTMLライクな構文を使って、タグは次の属性を受け入れます:

mode
ツリーに表示されるページを決定します。これはnamespacesオプションを使うことでオーバーライドできます。許可される値は次のとおりです:
categories
サブカテゴリだけ表示する(コンフィギュレーション定数のCT_MODE_CATEGORIES)
pages
画像以外のサブカテゴリとページを表示する(コンフィギュレーション定数のCT_MODE_PAGES)
all
すべてのページ、サブカテゴリ、画像などを表示する(コンフィギュレーション定数のCT_MODE_ALL)
parents
サブカテゴリの代わりに親カテゴリの一覧を表示する (コンフィギュレーション定数のCT_MODE_PARENTS). これはCategoryTreeに"inverse"オペレーションをさせます(2008年7月のrev:36892以降でサポートされます)。
depth
最初に表示されるツリーのレベルを決めます。デフォルトは1で、0はルートノードのみを意味します。最大値は指定されるモード、と$wgCategoryTreeMaxDepthオプションに依存します(2007年5月30日のrev:r20410rev:20840の間に導入されました; 2008年6月のrev:36864以降の$wgCategoryTreeDynamicTagでも、十分な機能があります)
onlyroot
初期の状態でツリーの"root"ノードのみを表示するようにするにはこれを"on"にセットします。depth="0"と同等です。(2007年3月13日のrev:20385で導入されました) 2008年7月のrev:36864は廃止されました: 代わりにdepth="0"を使ってください。
hideroot
ツリーの"root"ノードを隠すにはこれを"on"、すなわちhideroot="on"にセットします。この例ではカテゴリのFooは表示されません。
hideprefix
ツリーのエントリから隠される名前空間のプレフィックスを決定します(2008年7月のrev:36864以降)。可能な値は次のとおりです:
always
つねにプレフィックスを隠します。すべてのページが同じ名前から由来する場合に使います (コンフィギュレーション定数のCT_MODE_CT_HIDEPREFIX_ALWAYS)。
never
カテゴリに対してでも、名前空間のプレフィックスをけっして隠さない(コンフィギュレーション定数のCT_MODE_CT_HIDEPREFIX_NEVER).
auto
カテゴリの名前空間を隠します。カテゴリのみが表示される場合、mode="categories"と同じです(コンフィギュレーション定数のCT_MODE_CT_HIDEPREFIX_AUTO); これは古いデフォルトのふるまいと同等です(2008年6月以前)。
categories
カテゴリの名前空間を隠しますが、ほかのすべてのプレフィックスを表示します(コンフィギュレーション定数のCT_MODE_CT_HIDEPREFIX_CATEGORIES)。これは新しいデフォルトのふるまいです(2008年7月以降のrev:36864)。
showcount
サブカテゴリの数を表示するにはこれを"on"、すなわちshowcount="on"にセットします(2008年7月のrev:36864以降)。これはページのインラインのカテゴリツリーに対してデフォルトごとに無効ですが、Special:CategoryTreeでカテゴリリストのデフォルトごとに有効になります。
namespaces
ツリーに表示されるページからの名前空間の一覧を決定します(2008年7月のrev:36864以降)。リストのエントリはスペースで区切られた名前空間の名前でなければなりません。メインの名前空間は"-"もしくは"0"によって表現できます。これはmodeオプションをオーバーライドします。
class, style、id、etc
<categorytree> タグはブロック要素用の標準のすべてのHTML属性をサポートします(2008年7月のrev:36864以降で、それ以前はstyleのみがサポートされました)。

[edit] {{#categorytree}} パーサー関数

rev:25825 (2007-9-13)以降、ページのカテゴリツリーを置くのにパーサー関数の構文を使うこともできます。これは、たとえば{{#categorytree:Foo}}などの異なる構文を使った <categorytree> タグのように機能します; オプションは名前つきのテンプレート名、たとえば{{#categorytree:Foo|hideroot|mode=pages}}の構文を使って指定できます。

パーサー関数の構文を使うことは カテゴリを指定する際にマジックワード、テンプレートとテンプレートパラメータが使える利点があります。いくつかの例です:

  • "this pages"カテゴリツリーを表示するにはマジック変数を使う(カテゴリ説明ページに役立ちます): {{#categorytree:{{PAGENAME}}}}
  • カテゴリを指定するにはテンプレートを使う: {{#categorytree:{{root category}}}} - ルートカテゴリの名前はTemplate:Root_categoryの内容によって定義されます
  • テンプレート内部でCategoryTreeを使うとき、カテゴリを指定するにはテンプレートパラメータを使います: Template:Bazでは{{#categorytree:{{{1}}}}}は{{Baz|Foo}}を使って呼び出すことができます

[edit] Special:CategoryTreeページ

特別ページはSpecial:CategoryTreeと呼ばれます; カテゴリの名前を入力しブラウザでコンテンツにアクセスします。

[edit] CategoryTreeをインストールする

Note: CategoryTree拡張機能の最新バージョンはMediaWiki 1.13が必要です。最初のバージョンはMediaWiki 1.8が必要です(リビジョン16385もしくはそれ以降)。

最新のスナップショットをダウンロードしMediaWikiインストレーションのextensionsフォルダに展開します。次の行をLocalSettings.phpファイル(最後の行付近)に追加します:

$wgUseAjax = true;
require_once("{$IP}/extensions/CategoryTree/CategoryTree.php");

$wgUseAjax = trueはMediaWikiのAjaxフレームワークを有効にすることに注意してください。これはCategoryTree拡張機能に必要です。AJAXは必要に応じてページの一部をロードするJavaScriptの用語です。これは最近のグラフィカルなWebブラウザすべてでサポートされます。

[edit] コンフィギュレーション

LocalSettings.phpファイルで指定できるオプションがいくつかあります:

$wgCategoryTreeMaxChildren
ツリーノードに表示できる子の最大数です。デフォルトは200です。
$wgCategoryTreeAllowTag
<categorytree> タグを有効にします。デフォルトはtrueです。
$wgCategoryTreeDynamicTag
<categorytree&gt でツリーの最初のレベルのツリーを動的にロードします。この方法では、キャッシュを無効にする必要はありません。デフォルトはfalseです。
$wgCategoryTreeDisableCache
<categorytree> タグでページのパーサーキャッシュを無効にします。デフォルトはtrueです。
$wgCategoryTreeHTTPCache
匿名利用者のHTTPキャッシュを有効にします。デフォルトはfalseです。
$wgCategoryTreeOmitNamespace
ページとカテゴリで名前空間を表示しない。デフォルトはfalseで、カテゴリのみを表示しないかぎり名前空間が表示されます。 2008年7月のrev:36864で廃止されたので代わりに$wgCategoryTreeDefaultOptions['hideprefix']を使ってください
$wgCategoryTreeMaxDepth
<category> タグで深さのパラメータを使って初期に展開されるそれぞれのmodeの最大の深さを決める配列です。デフォルトでは、これは"categories"モードで2に、ほかのモードでは1にセットされます。たとえばcategoriesには3、ほかのモードには2にセットするには、$wgCategoryTreeMaxDepth = array(CT_MODE_PAGES => 2, CT_MODE_ALL => 2, CT_MODE_CATEGORIES => 3);を使うことができます。
$wgCategoryTreeDefaultMode
<categorytree> タグでmode属性が設定されていないときのデフォルトモード。可能な値はCT_MODE_CATEGORIES (デフォルト)、CT_MODE_PAGES、もしくは CT_MODE_ALLになります。
$wgCategoryTreeCategoryPageMode
カテゴリページでツリーをレンダリングするときに使うモード。2008年7月のrev:36864に廃止されました: 代わりに$wgCategoryTreeCategoryPageOptions['mode']を使います。
$wgCategoryTreeForceHeaders
trueの場合、必要に応じてではなく、すべてのページでCategoryTreeが必要なスクリプトを強制します。CategoryTreeが通常の方法でたとえばカスタムスキンもしくはシステムメッセージに埋め込まれるときに必要な場合があります(2008年7月のrev:36888以降)。
$wgCategoryTreeSidebarRoot
カテゴリツリーをサイドバーに統合するために使うルートカテゴリ(2008年7月のrev:36920以降)。セットされていない場合、ツリーは統合されません(これはデフォルト)。サイドバーへのCategoryTreeの統合はSkinTemplateにもとづくスキンのみ機能します。すなわち、Modern、Monobook、Chick、SimpleとMySkinは機能しますがStandard、NostalgiaもしくはCologneBlueは機能しません。
$wgCategoryTreeDefaultOptions
デフォルトのオプションは配列として適用します(2008年7月のrev:36864以降)。利用可能なオプションは上記のとおりです。例: $wgCategoryTreeDefaultOptions['mode'] = 'pages';
$wgCategoryTreeCategoryPageOptions
カテゴリページで配列として使うオプション(2008年7月のrev:36864以降)。
$wgCategoryTreeSpecialPageOptions
Special:CategoryTreeで配列として使うオプション(2008年7月のrev:36864以降)
$wgCategoryTreeSidebarOptions
サイドバーでツリーを表示するときに配列として使うオプション(2008年7月のrev:36920以降)

[edit] システムメッセージ

[edit] categorytree-member-num

デフォルトでは、カテゴリページでサブカテゴリの一覧を示すとき、それぞれのサブカテゴリの後に数字が表示され、これはサブカテゴリの数を示します:

My category name (5)

システムメッセージのMediaWiki:categorytree-member-numをオーバーライドすることでこのふるまいを変更できます。これは5つのパラメータをとります:

パラメータ 意味
$1 サブカテゴリの個数
$2 記事の数 (カテゴリページもしくはファイルページは含まない)
$3 アップロードされたファイルの個数
$4 カテゴリページとファイルページを含む、メンバーページの合計数
$5 (Varies depending on CategoryTree mode.... Can someone describe it?)

デフォルトの値は($5)です。

Tip: 異なる部分を条件ごとに表示するif/then/elseロジックを提供するためにはParserFunctions拡張機能を使います。例です:

{{#ifeq:$1|0||$1 categories}}

すべての情報を出力するときにカンマとスペースを管理するコンフィギュレーション:

({{#ifeq:$1|0||$1 categories}}{{#ifexpr:($2>0 or $3>0) and $1>0|, |}}{{#ifeq:$2|0||$2 pages}}{{#ifexpr:$3>0 and ($1>0 or $2>0)|, |}}{{#ifeq:$3|0||$3 files}})

[edit] トラブルシューティング

[edit] CategoryTreeをインストールした後でウィキが壊れる

  • エラー出力機能をオンにする
  • すべてのファイルがインストールされていることを確認する
  • CategoryTree拡張機能のすべてのファイルが644モードで、and the CategoryTreeディレクトリが755モードであることを確認してください

[edit] LocalSettings.phpのオプションが効果ない

  • 拡張機能のファイルをインクルードした後でオプションを指定していることを確認してください。

[edit] [+]をクリックしても効果がない、JavaScriptエラーもしくはloadingになる

  • 期待どおりに動かない場合システムメッセージで <categorytree> タグを使っていることを確認してください(MediaWiki-Namespace) - これは既知の警告です。次善策は、下記の#サイドバーでCategoryTreeを使うを参照してください。
  • 拡張機能のファイルをインクルードするにLocalSettings.phpで$wgUseAjax = true;があることを確認してください。
  • 拡張機能の最新バージョンを使っていることを確認してください - 開発の最先端のバージョンは[1]です。
  • 書き換えルールもしくはエイリアスを使っている場合(たとえば"very short URLs"がある - ドキュメントルートでウィキページ)、/skinsディレクトリと同じように/extensionsディレクトリに例外ファイルがあることを確認してください。下記の項目も参照してください。

[edit] ブラウザがCategoryTree.js かつ/もしくは CategoryTree.cssに対してbad MIMEタイプを報告する

  • Webサーバーが.jsと.cssファイルに対して正しいmimeタイプを使っていることを確認してください
  • ブラウザでURLを直接入力し ページが完全に提供されエラーが表示されていないことを確認してください; とりわけ:
  • 書き換えルールもしくはエイリアスを使っている場合(たとえば"very short URLs"がある - ドキュメントルートでウィキページ)、/skinsディレクトリと同じように/extensionsディレクトリに例外ファイルがあることを確認してください。下記の項目も参照してください。

[edit] メンバーのカウントが間違っている、[+]の代わりに[x]が表示される

MediaWiki 1.13以降では、CategoryTreeはカテゴリのメンバーの数を表示し、その番号にもとづく子を持たないツリーのノードを[x]を表示します。この情報は新しいcategory tableにもとづいています。しかしながら、そのテーブルに現在の値を投入しても1.13にアップグレードするときは常に機能しません。その場合、populateCategory.phpメンテナンススクリプトを実行し、必要であれば--forceオプションをつけます。

[edit] 関連項目

Bugzillaでの関連問題とソリューション

[edit] 利用者のための注

カテゴリページのHTMLをパースするボットとスクリプトは従来の出力を強制するURLのnotreeパラメータを使うことができます。しかしながらHTML出力は一般的には安定していないので、カテゴリの一覧を取得するにはapi.phpを使うようスクリプトを変更することをおすすめします。

[edit] "Category Not Found"メッセージ

Category Treeプラグインを実装しツリーを表示するコードを追加した後で、Category Not Foundというメッセージが見える場合、コンテントをカテゴリページに追加する必要があります。基本的にカテゴリページを赤くすることはできません。カテゴリ名をクリックし、テキストをカテゴリページに追加すれば、ツリーはきちんと機能します。

[edit] ハック

[edit] システムメッセージとカスタムスキンでCategoryTreeを使う

システムメッセージもしくはサイドバーでCategoryTreeを使うには、すなわち、ページコンテントの代わりに、ユーザーインターフェイスの一部として使うには、サポートスクリプトがすべてのページにリンクされるように(通常、これらは"必要に応じて"リンクされますが、システムメッセージの検出は機能しません)、wgCategoryTreeForceHeaderstrueにセットしなければなりません。これはrev:36888 (2008年7月)以降に機能します。スクリプトをインクルードすることを強制せずにこれを試す場合、Clicking the [+] has no effect / gives JavaScript errorになります。

CategoryTreeの古いバージョンでは、この動かすためにコードを修正しなければなりません: CategoryTree.phpファイルでefCategoryTreeParserOutput関数を見つけ、条件ブロックを削除すれば次のようになります:

function efCategoryTreeParserOutput( &$outputPage, &$parserOutput )  {
    CategoryTree::setHeaders( $outputPage );
    return true;
}

[edit] サイドバーでCategoryTreeを使う

MediaWiki 1.13 (rev:36917)のrev:36920 (2008年7月)以降では、$wgCategoryTreeSidebarRootをルートとして使いたいカテゴリにセットするだけでCategoryTreeをサイドバーに統合することができます。これはSkinTemplateを継承するスキン、すなわちModern、Monobook、Chick、SimpleとMySkinのみに機能しますが、Standard、NostalgiaもしくはCologneBlueは機能しません。

独自のウィキテキストをサイドバーに落とし込むためにLocalSettings.phpで$wgHooks['MonoBookTemplateToolboxEnd'][] = 'wfSomeFunc';を使い、CategoryTreeの項目をそれに追加する場合、すべてのページで機能させるために$wgCategoryTreeForceHeaders = true;をセットする必要があります。

CategoryTreeかつ/もしくはMediaWikiの以前のバージョンに関して、サイドバーの通常のウィキテキストを有功にするためにmodをMonoBook.phpにインストールする必要があります。 Wikitext in side bar --DJ 19:26, 24 January 2008 (UTC)を参照してください。

"CategoryTree"のリンクをツールボックス(サイドバー)に追加するには、次のコードをスキンのJavaScriptのページ(たとえばmonobook.js)に追加しURL "w:en: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:en:Special:CategoryTree]]' );
        liNode.appendChild( aNode );
        liNode.className = 'plainlinks';
        node.appendChild( liNode );
    } catch(e) {
        // lets just ignore what's happened
        return;
    }
}
 
addOnloadHook( AppendCategoryTreeToSidebar );

このコードのより一般的なバージョンはManual:Interface/Sidebar#content of sidebar and toolbox (javascript)で見つかります。

[edit] Webリンク


言語: English  • Français • 日本語 • Português do Brasil • Русский
Personal tools
Namespaces
Variants
Actions
Site
Support
Download
Development
Communication
Print/export
Toolbox