mtde.info

Movable Type Developers Express

このカテゴリでは、タグの取り扱いに関するサンプルを紹介します。

『タグ関連サンプル』カテゴリ内のエントリ一覧

素ノーマルタグリスト

2008年2月 9日 15:31 | Writer: apstar | 記事本文

Movable Type 4.1のウィジェットに格納されているタグクラウドのコードから不要部分を除去したコードサンプルです。

注意点ですが、2008年2月現在では、MTTagsブロックタグのモデファイアであるsort_by="rank"ですが、ランク順に並ばないようです。

MTTags ドキュメントページ:

http://www.movabletype.jp/documentation/appendices/tags/tags.html

ドキュメントページに記載のサンプルコードではsort_by="rank"という記述がありますが、sort_byモデファイアのパラメータにはrankという記述がなく、実際にこのモデファイアを指定してもタグの並びはランク順とはなりません。

コード

<h3>タグリスト</h3>
<ul>
<MTTags limit="20" sort_by="rank">
   <li><a href="<MTTagSearchLink>"><MTTagName></a></li>
</MTTags>
</ul>

素ノーマルタグリストの続きを読む

ドロップダウンタグリスト

2008年2月 9日 15:44 | Writer: apstar | 記事本文

タグリストのコードをドロップダウンタグリストに改造したコードサンプルです。

コード

<h3>ドロップダウンタグリスト</h3>
<select onchange="nav(this)">
    <option>タグを選択</option>
    <MTTags>
        <option value="<MTTagSearchLink>"><MTTagName></option>
    </MTTags>
</select>

<script type="text/javascript" charset="utf-8">
function nav(sel) {
if (sel.selectedIndex == -1) return;
var opt = sel.options[sel.selectedIndex];
if (opt && opt.value)
location.href = opt.value;
}
</script>

ドロップダウンタグリストの続きを読む

エントリのタグを繋げて比較用文字列を生成する

2008年2月 9日 15:47 | Writer: apstar | 記事本文

エントリに複数タグがついている場合、タグを繋げて比較用文字列を生成するケースは多く考えられます。

例えば、「現在のエントリに「ウイスキー」「ビール」「日本酒」というタグがついている場合に、それらのどれかのタグがついた関連するエントリを全て列挙したい」というケースなどでは、必須といえる前準備です。

コード1

現在のひとつのエントリについたタグを全てカンマ区切りにして変数で取得する場合。

<MTSetVarBlock name="CurEntTags"><MTEntryTags glue=","><MTTagName></MTEntryTags></MTSetVarBlock>
<MTGetVar name="CurEntTags">

コード1の動作サンプル

Sample,Tag

コード2

最近10件のエントリについたタグを全て繋げた状態にして変数で取得する場合。likeモデファイアで一部一致で判断する場合は、これでも使えます。

<MTEntries lastn="10">
   <MTSetVarBlock name="CurEntTags"><MTEntryTags grue=","><MTTagName></MTEntryTags></MTSetVarBlock>
   <MTSetvar name="AllEntTags" value="$CurEntTags" append="1">
</MTEntries>
<MTGetVar name="AllEntTags">

コード2の動作サンプル

SampleTagSampleTagSampleTagSampleTagSampleTagSampleTagSampleTag

タグをランク順に並べ替える

2008年2月 9日 16:07 | Writer: apstar | 記事本文

Movable Type 4.1では、2008年2月現在では、MTTagsブロックタグのモデファイアであるsort_by="rank"ですが、ランク順に並ばないようです。

コード1(MTTags sort_by="rank"

このコードでは、タグはランク順に並ばないようです。以下では「タグのついたエントリ数:タグランク:タグラベル」というフォーマットでデータを作成し、リストを作成しています。

<ul>
<MTTags sort_by="rank">
   <li><MTTagCount>:<MTTagRank zero_pad="4">:<MTTagName></li>
</MTTags>
</ul>

タグをランク順に並べ替えるの続きを読む

タグランクN以上のタグのみをリスト化する

2008年2月 9日 18:07 | Writer: apstar | 記事本文

タグランクN以上のタグのみをリスト化するコードサンプルです。タグランクは、数値が小さいほうがランクが高い(使用頻度が多い)です。

Nの部分は先頭付近にPickLank変数を宣言してあり、サンプルコードでは4としています。ハッシュのキー(CurTagWeightandID)生成時にタグのIDを付与しているのは、ランクの同じタグがあると一度生成したキーが上書きされてしまうためです。

「ランクN以上の」というMTIf分岐を行うため、CurTagWeightというタグのランクをデータに持つ変数も用いています。

コード

<MTSetVar name="PickLank" value="4">
<MTSetVar name="TagData" value="">
<MTTags>
   <MTSetvarBlock name="CurTagWeight"><MTTagRank></MTSetvarBlock>
   <MTSetvarBlock name="CurTagWeightandID"><MTTagRank zero_pad="4"><MTTagID></MTSetvarBlock>
   <MTSetvarBlock name="CurTagLinkSet"><MTTagCount>:<MTTagRank zero_pad="4">:<MTTagName></MTSetvarBlock>
   <MTIf name="CurTagWeight" le="$PickLank">
      <MTSetHashVar name="TagData">
         <MTSetVar name="$CurTagWeightandID" value="$CurTagLinkSet">
      </MTSetHashVar>
   </MTIf>
</MTTags>
<ul>
<MTLoop name="TagData" sort_by="key">
   <li><MTGetVar name="__value__"></li>
</MTLoop>
</ul>

タグランクN以上のタグのみをリスト化するの続きを読む

タグをアルファベット順に並び替える

2008年2月 9日 18:26 | Writer: apstar | 記事本文

タグをアルファベット順に並び替えてリスト化するコードサンプルです。タグは英語のものは大文字小文字を問わずアルファベット順とします。

コード1(MTTags sort_by="name"

MTTagsブロックタグにsort_by="name"モデファイアを指定すると、タグをアルファベット順に並び替えてリスト化することができます。

<ul>
<MTTags sort_by="name">
   <li><MTTagCount>:<MTTagRank zero_pad="4">:<MTTagName></li>
</MTTags>
</ul>

タグをアルファベット順に並び替えるの続きを読む

よく使用されるタグをN件抜き出す

2008年2月17日 18:29 | Writer: apstar | 記事本文

よく使用される、すなわち「ランクの高い」タグから順に、指定したN件のタグを抜き出すには、topモデファイアを使用すれば簡単です。

以下サンプルコードでは、ランクの高いタグから順に、指定した5件のタグをカンマ区切りで抜き出しています。

コード

<MTTags glue="," top="5"><MTTagLabel></MTTags>
</MTSetVarBlock>
<MTGetVar name="tg">

よく使用されるタグをN件抜き出すの続きを読む

エントリ
タグ
はじめに
導入編
ローカル環境
変数
サンプル
その他
トラブル集
2008 mtde.info