Movable Type 4.1以降では、カスタムフィールド機能が追加され、ブログ記事等にフィールドを追加することができます。
また、Movable Type 4.2では、フィールドの値でブログ記事を並べ替えて出力する機能も追加されました。
ただ、テキスト型のフィールドでブログ記事を並べ替えた場合、フィールドの値の辞書順に並べ替えられます。
そのため、テキスト型のフィールドに数値を入力して並べ替えると、数値順ではなく辞書順になってしまい、正しい並び順になりません。
幸いにして、カスタムフィールドには、プラグインで新たなデータ型を追加する機能が用意されています。
この利用例として、数値型のカスタムフィールドを追加するプラグインを作ってみました。
1.インストール
このプラグインは、以下からダウンロードすることができます。
プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。
また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。
Movable Typeのプラグイン開発等のドキュメント「Movable Type Developer's Guide Volume 1」も販売しています。
ご自分でプラグインを作ってみたい方に、ぜひお勧めしたい一冊です。
詳細は特設ページをご覧ください。
ダウンロードしたZipファイルを解凍すると、「NumericCustomFields」というフォルダができます。
このフォルダを、Movable Typeの「plugins」ディレクトリにアップロードします。
2.使い方
このプラグインをインストールすると、カスタムフィールドのデータ型に「整数」と「浮動小数点数」が追加されます。
整数は小数点以下を含まない値で、浮動小数点数は小数点以下を含む値です。
これらのどちらかのデータ型を選ぶと、そのフィールドは数値として保存されます。
MTEntriesタグでカスタムフィールドを使ってブログ記事を並べ替える場合、数値のフィールドであれば、数値の大小順に並べ替えることができます。
例えば、「number1」というベースネームのカスタムフィールドを作ったとして、そのフィールドの値が小さい順にブログ記事を並べ替えるには、以下のように書きます。
<mt:Entries sort_by="field:number1" sort_order="ascend"> ブログ記事の情報を出力する部分 </mt:Entries>
3.既存のテキスト型のフィールドを数値型に変換する
「カスタムフィールドに数値を入力して、ブログ記事を並べ替えられるようにしよう」と思って、テキスト型のフィールドにすでにデータを入力されている方もいらっしゃるかと思います。
ただ、このプラグインをインストールしても、既存のテキスト型のフィールドはテキストのままです。
数値に変換されるわけではありません。
このような場合、テキスト型のフィールドを数値型に変換すれば、並べ替えを行うことができるようになります。
その方法は明日解説します。





コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
はじめまして。
いつも大変参考にさせて頂いています。
「NumericCustomFields」プラグインにつきまして、
まさに探していたプラグインが見つかった! と、早速導入させて頂いたのですが、
並び替えに変化がありませんでした。
MTのバージョンは最新の 4.261 を使用しています。
また、NumericCustomFieldsにて並び替えを行いたいテンプレートは、
アーカイブテンプレートの、「カテゴリ別ブログ記事リスト」です。
以前どこかで『アーカイブテンプレート内ではカスタムフィールドの値で並び替えができない』と目にした事があるのですが、このプラグインを使っても並び替えは行えないのでしょうか?
もしくは、私のタグの記述などに不備があるのかもしれません。
大変お手数ですが、
MTの最新バージョン かつ アーカイブテンプレート内であっても動作するのか、
お教え頂けます様お願い致します。
>ENUAIさん
こんにちは。
「アーカイブテンプレート内ではカスタムフィールドの値で並び替えができない」というのは、Movable Type本体の不具合です。
申し訳ありませんが、このプラグインは、MT本体の不具合を修正するものではありません。
MT4.261での並べ替え動作は確認していませんが、うまく動かないということであれば、MT4.261でも並べ替えの不具合が修正されていないということだと思います。
>2 壱様
MTの不具合なのですね。
お忙しい中ご返信ありがとうございます。
引き続いてのご質問で恐縮なのですが、
壱様なら、こういった場合はどのようにされますでしょうか?
例として
・定番商品から探す(カテゴリー名:standard)
・目的から探す(カテゴリー名:purpose)
・価格から探す(カテゴリー名:price)
上記のように3カテゴリーあった場合、
各カテゴリーの一覧ページ(カテゴリーアーカイブ)の並び順を、
「定番商品から探す」の一覧はオススメ順、
「価格から探す」の一覧は価格の安い順。。。
等のように、それぞれ違う並び順で表示させたいのです。
1つは、ブログ記事の作成日順でなんとかなるのですが、
あとの2種類はどうしよう。。。といった状況です。
アーカイブテンプレート内では”カスタムフィールドの値”では並び替えができないとの事で、『概要』や『キーワード』を無理矢理使う等、いろいろと試しているのですが、
何か良い方法はご存知でしょうか?
大変勝手なお願いではございますが、
お時間がございましたらお知恵をお借り頂けると幸いです。
どうぞ宜しくお願い致します。
>ENUAIさん
こんにちは。
MT標準の機能だけで、お書きになったようなカタログ系サイトを作るのは、やや難しいかです。
拙著「MTOS活用テクニック」では、記事を柔軟な条件で検索する方法を紹介しています。この本を読んでいただくと、より目的に近い形のサイトを作れると思います。
>4 壱様
ご返信ありがとうございます。
試行錯誤しながら、がんばってみます。
「MTOS活用テクニック」も購読し、勉強させて頂きます。
何度もご返信頂きまして本当にありがとうございました。
はじめまして、非常に便利なプラグインで使用を検討しております。
一つだけ質問なのですが、このプラグインを使用して作った数値データを
表示する際に、カンマでの桁区切りを行うことはできますでしょうか?
不可能であれば、表示用のテキストフィールドを
作成しようと考えております。
>しばしばさん
こんにちは。
Movable Type 4.2以降をご利用であれば、Movable Type標準のnumifyモディファイアを使って、コンマ区切りすることができます。
http://www.movabletype.jp/documentation/appendices/modifiers/numify.html