使用法

Table of Contents

Configuration

タグクラウド CSS

タグクラウド機能を使用するなら以下の CSS をスキンに追加してください。

svn:plugin/tagcloud.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)

タグ+タグ配下ページ一覧

この機能はアルファ機能です。仕様が固まっていないので、将来変更されることがあります。

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 だけです。


*1 PukiWiki がページ新規作成時、書き込み時、削除時にプラグインを作動させる仕組みを持っていれば改造すらせずに済むのですが
*2 rename プラグインがページ名変更時に他のプラグインを作動させる仕組みを持っていれば、もしくは PukiWiki がプラグイン用プラグインの枠組みを用意していてくれれば改造すらせずに済むのですが