Page Top

MTでプライベートタグのリストが表示できる方法があったら

April 2, 2014

Movable Typeにおいて、@から始まるタグはプライベートタグやシークレットタグと呼ばれるのですが、このプライベートタグだけの一覧を表示する手段が今のところないですよね?確か。このプライベートタグだけを一覧表示できるMTタグがあったら良いのになと、思っていました。例えば、MTPrivateTagsのような感じで。そして、MTTagsにあるモディファイアが、MTPrivateTagsの方でも使えたら良いのになぁと願望を持っています。。

管理画面のシークレットタグはどのようにして一覧表示しているのか、管理画面用のテンプレートやらを覗いて見ましたが、コードの殆どがJQueryやJavaScriptで、データベースからどうやってタグの情報を取り出しているのかが良くわかりませんでした。

という訳で、MTのサポートさんへ質問を出しましたが、たぶん、そういった機能のタグは無さそうだなと感じています。シークレットタグの一覧表示とMTForを使ってしてみたいことがあるのですが、早々に諦めた方が良いのか、、サポートさんの返答を待ちたいと思います。

<後記:2014年7月20日>
腰痛の為ここへの記述が遅れましたが・・、私が質問したその翌日に、Movable Typeのサポート様より丁寧なご返答を頂きました。それによると、シークレットタグ自体を表示する専用のタグはないが、私がお知らせした内容を実現する為に、下記のテンプレートタグを組み合わせるかたちで対応できるとのことでした。

・MTSetVar
・MTSetVarBlock
・MTEntries
・MTEntryTags
・MTTagName
・MTIf
・MTElse

そして、実現したいことを成す為の手順として、

1.MTSetVar タグで、シークレットタグ一覧を格納する変数と、シークレットタグ数をカウントする変数を用意する
2.MTEntries タグ内で MTEntryTags を使用し、記事ごとに登録されているタグを抽出する
3.MTIf タグでシークレットタグのみを抽出する
4.シークレットタグ一覧を格納する変数に、新しいシークレットタグを追加する

という内容も教えていただきました。

また、どのように記述すれば良いのか、という、具体的な記述方法については、基本的に基本サポートの対象外となるそうなのですが(有料サポートでだと、教えてくださるようです)、今回、特別に参考情報として、以下のコードを教えてくださいました。ここでは、<>は全角に変更しています。

<$mt:SetVar name="secret_tags"$>
<$mt:SetVar name="secret_tags_count" value="0"$>

<mt:Entries lastn="99999">
<mt:EntryTags include_private="1">
<mt:SetVarBlock name="current_tag"><$mt:TagName$></mt:SetVarBlock>
<mt:If name="current_tag" like="^@">
<mt:If name="secret_tags" like="$current_tag">
<mt:Else>
<mt:SetVarBlock name="secret_tags" append="1"><li><$mt:GetVar name="current_tag"$></li></mt:SetVarBlock>
<$mt:SetVar name="secret_tags_count" op="++"$>
</mt:If>
</mt:If>
</mt:EntryTags>
</mt:Entries>

<p>シークレットタグ数: <$mt:GetVar name="secret_tags_count"$> 件</p>
<p>シークレットタグ一覧</p>
<ul>
<$mt:GetVar name="secret_tags"$>
</ul>

このサンプルコードを拝見させていただいて、そうか!include_private="1"を使用すれば良かったのだ!と気が付きました。
また、正規表現を利用して<mt:If name="current_tag" like="^@">と記述する方法で、該当するものを押さえていけば良いのだとわかりました。その後、このコードとは若干異なりますが、上記のポイントを利用して、無事に実現したいコードを書く事が出来ました。Movable Typeのサポート様に感謝です。

最新記事