【MovableType】タグで抽出(AnotherDatabaseプラグイン)

この記事は汎用性がほぼ無いうえに前提の話を説明しきれないので、他の方には何を書いているかちんぷんかんぷんだと思います。MovableTypeのテンプレート上で他のDBからデータを読みだしてきてページを作ることができる「AnotherDatabase」プラグインでもって、ちょっとだけ複雑な事をしたので来年の自分用にメモメモ。

いちおう簡単にベースのシステムを説明すると、資料データ管理用のDBシステムなのだが、入力画面はあるけどアウトプットはMTを経由して出力するという面白いシステム。MTなら資料の展示方法を柔軟に変更できるということと静的生成なのでDB本体と外部は完全に切り離されているからセキュリティに良いというメリットが。

【やりたかった事】
某システム上でタグ付けされた資料を、複数のタグを使って抽出する。

DB上には「資料テーブル」と「タグテーブル」があり、「リレーションテーブル」で紐づけされている仕様。
今回はウェブ担当者だけがテンプレートをいじるので、タグIDをカンマ区切りで変数に入力してテンプレート上に記述してもらうようにした。

 

細かい条件分岐はさておき、基本的な考え方は下記の流れ

1. カンマ区切りを、配列に格納するとともに指定されたタグの数を取得

2. タグの値ごとにループを回して資料IDを取り出して配列に格納
   -- この時にヒットした資料IDをすべてappendした変数を作成しておく

3. タグIDを羅列した値とappendした変数の値を比較することで、完全一致の資料が分かる。
  一致した資料IDごとにループを回して内容を表示する

 

【ハマったポイント】
<mt:SetHashVar>の中で配列にappendしようとしたところ思うような動作にならなかった。
あれこれやった結果、<mt:SetHashVar>をあきらめて、<mt:SetVar name="hoge{fuga}" value="ugo" append="1">という書き方でOKとなった。

アーカイブ

ウェブページ

「紺屋の白袴」とはまさにこの事。見にくいしスマホ対応もまだしていません。そのうちやります。そのうちにね。

エフスタジオの中の人は株式会社メキメキに在籍しています。