使用法
Table of Contents |
Configuration
タグクラウド CSS
タグクラウド機能を使用するなら以下の CSS をスキンに追加してください。
書式
Tagging tag.inc.php
Format
&tag(tag[,tag[,tag[,...]]]);
注意: ^ と - は特別な意味を持つ文字なのでタグには使えません。ページリストの際に ^ は共通ページを(積集合 ∩ のイメージ)、- は差ページ(差集合のイメージ)をリストするのに使用します。
Example
&tag(PukiWiki,Plugin); &tag(プラグイン);
Result
Tag: PukiWiki Plugin Tag: プラグイン
リンクは taglist プラグインへのリンクとなります。
タグクラウド (タグのリスト) tagcloud.inc.php
いわゆるタグクラウドの表示(タグのリストアップ)には、tagclould プラグインを使用します。
Format
#tagcloud([オプション])
オプション
- limit=数字
- 表示最大件数の指定。デフォルトは全て。
- related=タグ名
- 関連タグのみを表示。デフォルトは全て。
- cloud=off
- タグクラウド表示ではなく、ただのリスト。デフォルトはタグクラウド表示
Example
#tagcloud(related=PukiWiki)
#tagcloud(related=PukiWiki,cloud=off)
タグ付きページのリスト taglist.inc.php
タグ付きページのリストを表示するには taglist プラグインを使用します。
書式
#taglist(tag=タグトークン[,オプション]) #taglist(タグトークン[,オプション])
タグトークン:タグトークンには、「タグ名」や「タグ1^タグ2」、「タグ1-タグ2」のような書式を使用することができます。「タグ名」とするとそのタグが付けられているページのリストに、「タグ1^タグ2」とすると、タグ1とタグ2両方のタグが付けられているページ(積集合 ∩ のイメージ)のリストに、「タグ1-タグ2」 と指定しすると、タグ1が付けられているページのうち、タグ2が付けられていないページ(差集合のイメージ)のリストになります。
その他、オプションは lsx.inc.php とほぼ同一なオプションが使用できます。lsx.inc.php のページを参照してください。 prefix, hierarchy, tree, depth などの階層派のオプションが使用できないだけです。
Example
#taglist(tag=Plugin-Old) #taglist(Plugin-Old)
- Hack/navi.inc.php
- Manual/Plugin/tag.inc.php/dev
- Manual/Plugin/tag.inc.php/rev183
- Manual/Plugin/tag.inc.php/rev184
- Manual/Plugin/tag.inc.php/rev201
- Manual/Plugin/tag.inc.php/rev563
- Plugin/dump2html.inc.php
- Plugin/lsx.inc.php
- Plugin/popularx.inc.php
- Plugin/splitbody.inc.php
- Plugin/statichtml.inc.php
- Plugin/tag.inc.php
- Plugin/votex.inc.php
- Weblog/2008-10-23
タグ+タグ配下ページ一覧
この機能はアルファ機能です。仕様が固まっていないので、将来変更されることがあります。
taglist オプションで tag を指定しなかった場合、全タグ+タグ配下のページを一覧できます。
書式
#taglist([オプション])
オプション
- related=タグ
- related オプションを使用すると、関連タグ+タグ配下のページの一覧になります。
例
#taglist(related=Plugin)
FAQ
タグ付け時に何も表示してほしくない
Plugin/enull.inc.php を使用してください。
ページを削除してもタグは消えない?
PukiWiki の仕組み上、プラグインはページ参照時にしか起動できないためページが削除されてしまうとタグを更新できません。 ページを削除する前に &tag(); としてタグの削除をしてください。 もしくは、アクション型プラグインとして index.php?cmd=tag のようにアクセスするとキャッシュをクリーンアップできます。
PukiWiki 本体改造で乗りきる方法も用意してみました*1。 pukiwiki/lib/file.php の編集をします。 page_write 関数の末尾に
log_write('update',$page); + if (exist_plugin('tag')) { + do_plugin_init('tag'); + plugin_tag_write_after($page, $postdata, $notimestamp); + }
のように追加。あまりテストはしてません。
ページをリネームしても・・・
同様です。
rename プラグイン改造で乗りきる方法も用意してみました*2。 plugin_rename_proceed 関数に、以下を追加します。
links_update($old); links_update($new); } } + if (exist_plugin('tag')) { + do_plugin_init('tag'); + plugin_tag_rename_plugin($pages); + } $postdata = get_source(PLUGIN_RENAME_LOGPAGE); $postdata[] = '*' . $now . "\n";
あまりテストはしてません。
タグの置換はどうすれば
replaceplugin.inc.php を使用してみてください。
置換後、アクション型プラグインとして tag プラグインを起動し、タグキャッシュをクリーンアップしてください。
キャッシュ仕様
cache ディレクトリに encode(タグ名)_tag.tag, encode(ページ名)_page.tag, tagcloud.tag のようなファイルを作成します。
- encode(タグ名)_tag.tag
- そのタグに登録されているページ群。タグ→ページ群 (~.ref 相当)
- encode(ページ名)_page.tag
- そのページが登録しているタグ群。ページ→タグ群 (~.rel 相当)
- tagcloud.tag
- 全タグとそれぞれに対しての登録ページ数
ページ参照時、ページのタイムスタンプが encode(ページ名)_page.tag よりも新しければ更新処理を行います。 現在の PukiWiki プラグインの枠組み上、ページ更新時にプラグインを実行できないのが辛い所です。
タグクラウド表示は org:自作プラグイン/tagcloud.inc.php を真似して
astronote | PHP で TagCloud
を使用させてもらっています。
関連タグというと・・・
tag プラグインにおける、関連タグの技術的な定義は、同時に指定されたことのあるタグ群です。例えば「あるページ」で
&tag(A,B,C);
と指定されると、タグA は、B、C と関連します。「別のページ」で、
&tag(A,D,E);
とされると、結果、タグA は、B、C、D、E と関連します。しかし、タグC の関連はあくまでも、A、B だけです。