Compatible with DokuWiki
Weatherwax, Binky, Ponder Stibbons, Hrun, Detritus, Elenor of Tsort
This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.
This extension is not in the 'plugin' or 'template' namespace and is therefore ignored.
Similar to blogtng, geotag, subjectindex, tagging, tagsections
Needed for cloud, editor, feed, tagadd, tagalerts, tagbutton, tagentry, tagfilter, tagsections, tr-twitter
2013年2月15日リリースでセキュリティ上の問題(XSS脆弱性)を修正しました。タグプラグインの古いバージョンを使用している場合は、できるだけ早くアップグレードする必要があります!
タグプラグイン は、wikiページにカテゴリタグを割り当てることができます。
2012年8月24日以前からの更新:タグプラグインを削除し、再インストールしてください。 プラグイン管理のバグのため、アップデートはプラグインにとって不要な部分を削除しません。 タグプラグインのタグ格納方法に大きな変更があります。 タグのあるページへのアクセスによるタグ索引の自動的な再構築を待てない場合、手動でタグ索引を再構築できます。 クラウドプラグインも更新する必要があります。 そうしないと、タグクラウドは動かなくなるでしょう。
{{tag>[list of tags]}}
[list of tags] | 現在のページの内容を記述したタグをスペースで区切ったリスト | 必須項目 |
---|
wikiページを分類することができます。 指定されたタグ名前空間内に同名のページが存在する場合、そのページへのリンクとなります。 別の名前空間内のページにリンクをしたい場合、タグ名の前に名前空間を指定する必要があります。 ページが存在しない場合は、それらのいずれかのリンクをたどると、同じタグを持つページのリストだけが表示されます。
例:
{{tag>tag1 tag2 tag3}}
{{tag>ns1:tag1 ns1:tag2 ns2:subns1:tag3}}
{{tag>tag1_with_multiple_words tag2 tag3_part}}
{{topic>[tag]&[flags]}}
[tag] | 表示したいページ一覧のカテゴリータグ | 必須項目 |
---|---|---|
[flags] | & 区切りのページ一覧フラグ。flags参照 | 任意項目 |
指定したカテゴリタグを含むすべてのページ一覧を表示します。
一覧はページIDを使ってアルファベット順にソートされています。
また +
と -
という修飾子をカテゴリータグの前に付けることができます。
+
は、事前に指定されたタグによって選択されたページ一覧と
+
を付けたタグによって選択されたページとの交点を作成します(AND検索)。
-
は、事前に指定されたタグによって選択されたページ一覧から、
-
を付けたタグを含んだページを全て削除します。
例:
{{topic>tag1 -tag2}}
– tag1 を持ち tag2 を持っていないページの一覧。{{topic>tag1 +tag2}}
– tag1 と tag2 を両方持っているページの一覧。{{topic>tag1 tag2}}
– tag1 か tag2 のどちらか、又は両方持っているページの一覧。{{topic>ns1?tag1 tag2}}
– ns1 名前空間内の、tag1 か tag2 のどちらかを持っているページの一覧。{{topic>.?tag1 tag2}}
– 現在の名前空間内の、tag1 か tag2 のどちらかを持っているページの一覧。{{topic>tag1 tag2 tag3&nodate&desc&sort}}
(デザインを変更するためのpagelist オプションを追加){{searchtags&[flags]}}
[flags] | & 区切りのページ一覧フラグ。flags参照 | 任意項目 |
---|
名前空間の選択と全タグ一覧からタグを含む・含まないを選択できる検索フォームが表示されます。
名前空間の選択と全タグ一覧からタグの選択ができる検索フォームを表示します。 タグを AND や OR と関連付ければ、選択したタグを含むのか除外するのかの選択オプションとなります。 結果は Topic 構成要素のように表示されます。
これはあなたが逃すべきではない素晴らしい機能です。 このクールな機能のスクリーンショットを追加してください。
また、 タグフィルター プラグインを同様の目的で別のシナリオでチェックアウトすることもできます。
例:
{{searchtags}}
– 基本構文{{searchtags&nodate&desc&sort}}
– 表示を変更するための pagelist オプション{{count>[tag]}}
[tag] | 使用回数を表示したいカテゴリータグ | 必須項目 |
---|
現在使用されているタグの概要を表示することができます。
Wiki 内のタグと使用回数(タグの使用頻度)を表示します。
タグ名に +
を指定すると、使用されているすべてのタグのリストが得られます。
あるいは、スペースで区切られたタグを指定するだけです。
例:
{{count>+}}
– 使用回数付きの全仕様タグ。{{count>tag1 tag2}}
– tag1 tag2 の使用回数。{{count>tag1 tag2 tag3&. ns1 ns2}}
– 名前空間(ピリオドはルート名前空間の指定)内の指定タグの使用回数。{{tagpage>[tag][&dynamic][|title]}}
Tag 構文と同様ですが、そのタグでページをタグ付けすることなく、全タグ一覧へのリンクを表示します。
オプションの dynamic
フラグを指定すると、現在のユーザーにとってそのタグを持つページ一覧が空の場合、リンクは赤くなります。
リンクの色が常に正しいことを確認するために、dynamic
フラグは現在のページのキャッシュを無効にします。
リンク名として使用される title は任意で指定できます。
例:
{{tagpage>test_foo}}
– 基本構文{{tagpage>test_foo&dynamic}}
– dynamic リンク色のリンク{{tagpage>test_foo|my title}}
– カスタムタイトルのリンク{{tagpage>test_foo&dynamic|my | title}}
– dynamic リンクの色でカスタムタイトル(|
を含むことも可能)のリンク管理者メニューにある設定管理画面上で、プラグインの設定ができます。
namespace | タグプラグインがタグページを探し、存在している場合、デフォルトのタグ概要の代わりにそのページへのリンクする名前空間。そのページでタグの一覧を表示するのに、例えば Topic 構成要素を利用できます。(デフォルト値 tag ) |
---|---|
sortkey | Topic 構成要素でタグ付きページがソートされる順序。利用可能なオプションは、作成日 cdate 、修正日 mdate 、ページ名 pagename 、ページID id 、名前空間 ns 、タイトル title |
sortorder | トトピック概要の並べ替えの順序 |
pagelist_flags | トピック概要の表示で使用するpagelist プラグインのフラグカンマ区切り |
toolbar_icon | 編集ツールバーにタグ追加ボタンを表示する。 |
list_tags_of_subns | 指定する名前空間内のタグを数える際、下位の名前空間内タグも含む |
tags_list_css | 標準との間でタグのリストスタイルを選択するか、ページの先頭位置に合わせて最適化します。 |
タグインデックスが(ページ移動を使用するなど)何らかの理由で破損した場合、 searchindexかbin/indexer.phpを使用してタグインデックスを再構築することができます。
開発版 変更履歴:
自由に追加してください:
“_” を使用します。“_” は自動的に “ ” に置換えられます。 例:
{{tag>tag_with_multiple_words}}
また、引用符も作動するようです:
{{tag>"tag with multiple words"}}
これはキーワード 'deprecated'がタグとして指定されている場合、ページの背景を赤に色付けします。
function _handle_keywords(&$data) { global $ID; // Fetch tags for the page; stop proceeding when no tags specified $tags = p_get_metadata($ID, 'subject', METADATA_DONT_RENDER); if(is_null($tags)) true; // Replace underscores with blanks foreach($data->data['meta'] as &$meta) { if($meta['name'] == 'keywords') { $meta['content'] = str_replace('_', ' ', $meta['content']); $t = explode(',', $meta['content']); if(in_array('deprecated', $t)) { $data->data['style'][] = array('type' => 'text/css', '_data' => '.dokuwiki .page {background-color: red;}'); } } } }
あなたが pagelist / helper.php
に追加した場合
function tpl_youarehere2_help($id){ $result = ''; global $conf; global $ID; global $lang; // check if enabled if(!$conf['youarehere']) return false; $parts = explode(':', $id); $count = count($parts); // always print the startpage $result .= html_wikilink(':'.$conf['start']); // print intermediate namespace links $part = ''; for($i=0; $i<$count - 1; $i++){ $part .= $parts[$i].':'; $page = $part; if ($page == $conf['start']) continue; // Skip startpage // output $result .= ' » '.html_wikilink($page); } // print current page, skipping start page, skipping for namespace index resolve_pageid('',$page,$exists); if(isset($page) && $page==$part.$parts[$i]) return $result; $page = $part.$parts[$i]; if($page == $conf['start']) return $result; $result .= ' » '.html_wikilink($page); return $result; } function tpl_youarehere2($id) { $str = $this->tpl_youarehere2_help($id); $pos = strrpos($str , '»'); if ($pos == -1) return $str; return substr($str, 0, $pos); } function addPage2($page) { $id = $page['id']; if (!$id) return false; $this->page = $page; $this->_meta = NULL; // priority and draft if (!isset($this->page['draft'])) { $this->page['draft'] = ($this->_getMeta('type') == 'draft'); } $class = ''; if (isset($this->page['priority'])) $class .= 'priority'.$this->page['priority']. ' '; if ($this->page['draft']) $class .= 'draft '; if ($this->page['class']) $class .= $this->page['class']; if(!empty($class)) $class = ' class="' . $class . '"'; $this->doc .= DOKU_TAB.'<tr'.$class.'>'.DOKU_LF; $this->_pageCell($id); if ($this->column['date']) $this->_dateCell(); if ($this->column['user']) $this->_userCell(); if ($this->column['desc']) $this->_descCell(); foreach ($this->plugins as $plug => $col) { if ($this->column[$col]) $this->_pluginCell($plug, $col, $id); } $this->doc .= DOKU_TAB.'</tr>'.DOKU_LF; $this->doc .= DOKU_TAB.'<tr'.$class.'>'.DOKU_LF; $this->doc .= DOKU_TAB.DOKU_TAB.'<td style="padding-left:19px; padding-right:15px; padding-bottom:15px; font-size:10px;">'; $this->doc .= $this->tpl_youarehere2($id); $this->doc .='</td>'.DOKU_LF; $this->doc .= DOKU_TAB.'</tr>'.DOKU_LF; return true; }
また tag/action.php
を修正してください。
$pagelist->setFlags($flags); $pagelist->startList(); foreach ($pages as $page) { $pagelist->addPage($page); }
に
$pagelist->setFlags($flags); $pagelist->startList(); foreach ($pages as $page) { $pagelist->addPage2($page); }
その後、その下にあるページ自体の名前を除いて、タグを含むページのリストも、これらのページへのパンくずリストになります。
:!:メインコードに統合されています( tags_list_css
を参照)。
Wikiページの上部に構文を挿入すると、プラグインの出力がTOC(目次)の下に表示されます。
視覚的外観をより滑らかにするには、 lib / plugins / tag / style.css
を次のコードに変更します:
div.dokuwiki div.tags { border-top: 2px dotted __border__; font-size: 95%; text-align: right; /* clear: both; */ }
Discussion 参照。