アイテムにタグをつけて管理するプラグインです。 カテゴリーよりも柔軟にアイテムを整理できます。

タグといえばもちろん定番はTagEXプラグインなんですが、こちらはカテゴリーとの連携でちょっと特殊な仕様になっています。

特徴は以下のとおりです。

  • タグ付け。入力フィールドにタグヒント(入力支援機能)あり。
  • タグとカテゴリーの連携機能。アイテムが属するカテゴリー名も暗黙的にタグに組み入れ。
  • タグクラウドの表示。
  • タグ別アイテム表示(blog、otherblog代替のスキン変数)
  • タグによる関連アイテム表示(NP_Related代替のスキン変数)
  • categorylistの代替はこれには含まれてませんが、NP_Listのサブプラグインとして公開しています。

Download: NP_SimpleTag v0.4

Nucleus v3.31SP1 UTF-8、PHP5で確認。
MySQL5以上(4.1.10以降でもOKかもしれません)。
追記:FancyURL-2+SimpleURL推奨("tag"というURLパラメータをNucleusが認識できる状態であれば問題ないはずですが、SimpleTagはSimpleURLのURL修飾拡張に対応しているので導入が楽です)。

インストール

  • まずはDBが MySQL v5以降 かどうか確認します(検証していませんが、4.1.10以降でもOKかもしれません)。
  • Nucleusのプラグインディレクトリに simpletag フォルダと、NP_SimpleTag.phpをアップロード。
  • 管理画面のプラグインリストから「NP_SimpleTag」を選んで、インストール。
  • その後、SimpleTagの管理画面(管理リンク)に入り、その画面のURLの末尾に「?action=setshadow」を付け足してアクセス。

4番目の手順のときに「チケットが無い」と警告されると思いますが、「はい」を押して続行してください。これで下準備は完了します。

タグ入力

タグ入力時。タグヒント出現

アイテムオプションのところにタグの入力フィールドが出現します。 入力フィールドには区切り文字(デフォルトは半角スペース)で区切ることで複数のタグを指定できます。フィールドの下には「タグヒント」が出るスペースがあり、関連するタグを推奨してくれます。タグヒントをクリックすると入力フィールドに転記されます。

前方一致による類似タグ、または単純な共頻度による関連タグを抽出してヒントとしています。 ある程度タグ情報が集まってくると、使い勝手が良くなっていくと思います。

タグヒントの表示タイミングは、

  • 最後のタグの後ろに区切り文字を入れたとき
  • 特定の文字列を選択して「Ctrl+Alt+T」を押したとき

の2通りあります。

ただし現時点では2番目より1番目の表示が優先されてしまいます(入力フィールドの最後にスペースがあるときは問答無用に1番目が適用されます)。またIEでは2番目のキーボードショートカットが働いてくれません。

基本1番目の方法で事足りるものの、このへん何とかしたいと思ってるのですが・・ちょっと手詰まり中。

タグとカテゴリーの連携

これはカテゴリー情報を暗黙的にタグ情報として組み入れてしまう仕組みです。 たとえばカテゴリー「プラグイン」に属するアイテムに、ユーザーが「Nucleus」「ver3用」という2つのタグをセットすると、「Nucleus」「ver3用」と共に「プラグイン」も自動的にタグとしてセットされます(が、入力フィールドには表示されずにこっそり隠れて存在します)。

このカテゴリーと同名の隠れタグは、ブログ表示(blog/otherblog代替)で利用されます。 タグが選択されたとき、そのタグを与えられたアイテムだけでなく、タグと同名のカテゴリーに属するアイテムもピックアップされます。タグからはカテゴリーにも自由にリーチでき、逆にカテゴリーからタグへはリーチしない仕組みです。 また関連アイテム表示の類似度スコアにも、通常のタグの1/2の重み付けで反映されます。

カテゴリーの命名がタグの命名と被ることがないと意味がない仕組みですが、使われない場合は無駄なデータが少し増えるだけなので、さして問題はないと思います。

テンプレート変数

アイテムに属するタグを表示させるにはテンプレート変数を使います。 「アイテムの本体」パートに記述します。delim(区切り記号), prefix, postfix パラメータの指定もできます。パラメータの記述順に決まりはありません。

<%SimpleTag%>
<%SimpleTag(delim:+, prefix:「, postfix:」)%> //パラメータを指定した場合

スキン変数

指定されたタグでのブログ表示、タグクラウド、アイテムページでの関連アイテムリストなどのスキン変数が用意されています。パラメータの記述順に決まりはありません。

(追記:このあたりはまだ流動的です。後々、別のプラグインに機能を切り分けようかと)

以下、具体例を挙げながら解説します。

ブログ表示と前後リンク

タグが選択されているかを確認し、ブログ表示と前後リンクを記述。 前後リンクは、amount等のパラメータをブログ表示と合わせておかないと正確なリンクが出力されません。

<%if(SimpleTag,isset)%><!-- タグが選択されているときの処理 -->
<%SimpleTag(tpl:テンプレート名, type:showitem, range:all, amount:10)%>
<a href="<%SimpleTag(type:prevlink, range:all, amount:10)%>" title="前へ">&laquo; 前へ</a>
<a href="<%SimpleTag(type:nextlink, range:all, amount:10)%>" title="次へ">&raquo; 次へ</a>
<%else%>
<!-- タグが選択されてないときの処理 -->
<%endif%>

タグ名の単独表示

タイトルなどにタグ名を含めたいときに利用します。

<%SimpleTag(type:name)%>

タグクラウドの表示

rangeパラメータでタグクラウドの生成範囲を限定できます。

<dl>
<dt>タグクラウド</dt>
<%if(SimpleTag,isset)%><!-- 選択タグ限定のタグクラウド(関連タグ) -->
<dd><%SimpleTag(type:tagcloud, range:tag, amount:100)%></dd>
<%elseif(category)%><!-- カテゴリー内限定のタグクラウド -->
<dd><%SimpleTag(type:tagcloud, range:category, amount:100)%></dd>
<%else%><!-- ブログ内限定のタグクラウド -->
<dd><%SimpleTag(type:tagcloud, range:blog, amount:100)%></dd>
<%endif%>
</dl>

range:recent で、「最近登録したタグ」に限定したタグクラウドも可能。

<%SimpleTag(type:tagcloud, range:recent, amount:20)%>

specialパラメータで、リンク出力をスペシャルスキンパーツのページへ振り向けることができます。

<%SimpleTag(type:tagcloud, range:all, amount:100, special:スペシャルスキンパーツ名)%>

アイテムページでの関連アイテムリスト

関連アイテムリスト

NP_Relatedのローカル検索のような関連アイテムの表示が可能です。 タグ情報を元に類似度を判定しています。

<%SimpleTag(type:related, range:all, amount:10)%>

関連アイテムのスコアはパーセント表示ではありません。 わりといい加減な作りなので、スコアは100を超えることもあります。

HTMLコードの編集

ブログ表示以外はNucleusの標準テンプレートではなく、独自のテンプレートを用いて出力しています。 独自テンプレートのHTMLコードを変えたい場合は、直接コードを編集するか Containerプラグイン でパーツ名を指定してスキン上で書き換えることができます。

テンプレートの定義は NP_SimpleTag.php の init() にあります。 パーツ名は例を挙げると、$this->tpl['LINK'] の 「LINK」の部分にあたります。

下記はContainerでの指定例です。

<%Container(begin,SimpleTag)%>
<!--PART name="LINK" テンプレート変数のタグ出力、リンクあり -->
<a href="<%link%>" title="タグですよ:<%tag%>"><%tag%></a>
<!--/PART-->
<!--PART name="NOLINK" テンプレート変数のタグ出力、リンクなし -->
<span title="タグですよ:<%tag%>"><%tag%></span>
<!--/PART-->
<%Container(end)%>

タグクラウドのCSS

スタイルシートのサンプルを掲載します。 ico_tag.gif を用意してタグアイコンを左側に配置しています。

ul.tagcloud {
    list-style: none;
    text-align: justify; 
    text-justify: newspaper; 
    word-break: keep-all;
}
ul.tagcloud li {
    display: inline;
    margin: 0;
    padding: 0;
}
ul.tagcloud li.tag0 { font-size:  9px; }
ul.tagcloud li.tag1 { font-size: 10px; }
ul.tagcloud li.tag2 { font-size: 11px; }
ul.tagcloud li.tag3 { font-size: 13px; }
ul.tagcloud li.tag4 { font-size: 14px; }
ul.tagcloud li.tag5 { font-size: 15px; }
ul.tagcloud li.tag6 { font-size: 17px; }
ul.tagcloud li.tag7 { font-size: 18px; }
ul.tagcloud li.tag8 { font-size: 20px; }
ul.tagcloud li.tag9 { font-size: 22px; }
ul.tagcloud li a {
    background: url(images/ico_tag.gif) left center no-repeat;
    padding: 0 0 0 14px;
}

注意点

タグとカテゴリーが連携する作りのため、カテゴリーの名前そのものを変えたときは、タグ側の情報も更新しなければなりません(たとえば「おしらせ」カテゴリーを「更新情報」カテゴリーと改めた、など)。 ブログ設定画面の下のほうにカテゴリー設定画面があります。さらにその下、「プラグインによる追加設定」の欄に、SimpleTagの「タグ情報を更新」ボタンが出ています。 カテゴリー名を変えたときは必ずこのボタンを押してデータを更新してください。

アイテムが属するカテゴリーを「移動」した場合(所属カテゴリーの変更)は自動的に処理されるので、このボタンを押す必要はありません。