SQLToolsプラグイン(その3・SQLの結果をオブジェクトとして読み込む)

SQLToolsプラグインでは、SQLで読み込んだデータを、Movable Typeのオブジェクトとして扱うことができます。

1.SQLの作成

まず、オブジェクトを読み込むためのSQLを作成します。
このSQLでは、オブジェクトのIDだけを返すようにします。

例えば、IDが1番のブログで、公開されている記事の中から最新10件を読み込みたいとします。
この場合、「SQLクエリ」→「新規」のメニューでSQLを新規作成し、以下のSQLを入力します。

SELECT entry_id
FROM mt_entry
WHERE entry_class = 'entry'
AND entry_status = 2
AND entry_blog_id = 1
ORDER BY entry_authored_on DESC
LIMIT 10

2.MTSQLObjectsタグの基本

SQLを利用してオブジェクトを読み込むには、「MTSQLObjects」というテンプレートタグ(ブロックタグ)を使います。

2-1.typeモディファイア

MTSQLObjectsタグでは、「type」と「name」の2つのモディファイアを必ず指定します。
typeモディファイアでは、読み込むオブジェクトの種類を、以下の表から選んで指定します。

オブジェクトの種類typeモディファイアに指定する値
記事entry
ウェブページpage
カテゴリcategory
フォルダfolder
アイテムasset
コメントcomment
トラックバックping
ブログblog
ウェブサイトwebsite
ユーザーauthor

2-2.nameモディファイア

nameモディファイアでは、SQLクエリにつけた名前を指定します。

例えば、前述の1.の手順で作ったSQLクエリに、「最近の記事」という名前を付けたとします。
この場合、MTSQLObjectsタグに「name="最近の記事"」のモディファイアを指定します。

2-3.MTSQLObjectsタグのブロック内で各オブジェクトのテンプレートタグを使う

MTSQLObjectsタグのブロック内では、オブジェクトの種類に応じたMovable Type標準のテンプレートタグを使うことができます。
例えば、MTSQLObjectsタグに「type="entry"」のモディファイアを指定した場合、以下の例のように、記事に関するテンプレートタグ(MTEntryTitleなど)を使うことができます。

<mt:SQLObjects name="最新の記事" type="entry">
  <mt:EntriesHeader><ul></mt:EntriesHeader>
  <li><$mt:EntryTitle$></li>
  <mt:EntriesFooter></ul></mt:EntriesFooter>
</mt:SQLObjects>

3.MTSQLObjectsタグのその他の機能

上記で挙げたほかに、MTSQLObjectsタグには以下のような機能があります。

3-1.glueモディファイア

オプションのモディファイアとして、「glue」があります。
これは、他のブロックタグのglueモディファイアと同様に、繰り返し1件ごとに、その間に出力する内容を指定します。

例えば、「glue=","」のモディファイアを付加したとします。
この場合、オブジェクトを1回出力するごとに、「,」の文字が出力されます。

3-2.MTSQLObjectCountタグ

読み込んだオブジェクトの数を出力するファンクションタグです。
MTSQLObjectsタグのブロックの中で使うことができます。

3-3.MTSQLObjectsHeader/MTSQLObjectsFooterタグ

MTSQLObjectsタグのブロックの繰り返しで、最初/最後の繰り返しを判断するブロックタグです。

3-4.ブロック内で使える変数

Movable Type標準のブロックタグと同様に、ブロック内では以下のの変数を使うことができます。
なお、各変数名の前後にある「__」は、アンダースコア2回です。

変数名内容
__first__繰り返しの1回目なら1、それ以外なら0
__last__繰り返しの最後なら1、それ以外なら0
__odd__繰り返しの奇数回目なら1、それ以外なら0
__even__繰り返しの偶数回目なら1、それ以外なら0
__counter__現在の繰り返し回数