ブログ記事のアイテムの並び順を制御するには(その1)

Twitterで、@naoaki011(oscar)さんが以下のようなツイートをしていました。

@EGooooN @riatw ども、横から失礼します。本文内のAssetの出現順序はDBに保存されるわけでは無いので、普通には無理そうです。さんざんダメ出し食らった、MT4のformタグ形式ならば、本文内にAssetの情報持つので、行ける気がします。

並べ替えマニア(?)な私にとって、面白そうなネタです。
そこで、ブログ記事のアイテムの並び順を制御できるようにするプラグインを作ることを考えてみたいと思います。

1.プラグインの考え方

ブログ記事のアイテムの並び順を制御できるようにするには、以下のような処理を行うプラグインがあれば良いでしょう。

  • 1.データベースに、アイテムの並び順の情報を保存するためのフィールドを追加する
  • 2.ブログ記事の管理画面の「ブログ記事アイテム」の箇所で、ドラッグアンドドロップでアイテムを並べ替えられるようにする
  • 3.ブログ記事を保存する際に、アイテムの並び順の情報をデータベースに保存する
  • 4.ブログ記事の編集ページを開く際に、アイテムの並び順の情報をデータベースから読み込み、「ブログ記事アイテム」の箇所に反映する
  • 5.並び順通りに、ブログ記事のアイテムを出力するためのテンプレートタグを追加する

2.作りかけのプラグイン

上記の処理のうち、1.と2.はさほど難しくありません。

1.は、プラグインのconfig.yamlにフィールド追加の情報を書くだけです。
並び順の情報は、アイテムと他のオブジェクトの関連付けのテーブル(mt_objectasset)に保存します。

また、2.はコールバックを使って、edit_entry.tmplに、jQueryのSortableを使って「ブログ記事アイテム」の箇所をドラッグアンドドロップできるようにするJavaScriptを追加すれば良いです。

実際に、上記の1.と2.までを行うプラグインを作ってみました。
ブログ記事の編集ページ上でアイテムをドラッグアンドドロップできるだけで、今のところほとんど無意味ですが、参考までに公開しておきます。

SortEntryAssets_0_01.zip