カテゴリーリストにカスタムフィールドの画像を表示する
Movable Type のカテゴリーリストに、カスタムフィールドの画像を表示するカスタマイズです。
次のように、カテゴリー別の画像を簡単に与えることができます。
1.カスタムフィールドの作成
カテゴリーにカスタムフィールドを作成します。ここでは CategoryImage という名前のテンプレートタグにします。
2.カテゴリーに画像の追加
各カテゴリーに表示されている「Imageを選択」をクリックして、画像を追加します。
画像を選択した後、必ず保存をクリックしてください。何回か試して正常に表示されないことがあったのですが、どうも保存をクリックするのを忘れていたようです。
3.サブテンプレートの追加
冒頭のサンプルは、デフォルトテンプレートのサイドバーに下記のサブテンプレートを追加しました。階層表示でない、MTCategories タグを久しぶりに使ってみました。
青色部分がカスタムフィールド用タグです。
<mt:IfArchiveTypeEnabled archive_type="Category">
<div class="widget-archive widget-archive-category widget">
<h3 class="widget-header">カテゴリ</h3>
<div class="widget-content">
<ul class="widget-list">
<mt:Categories>
<mt:ifNonZero tag="mt:CategoryCount">
<li class="widget-list-item"><MTCategoryImageAsset><img src="<$MTAssetURL$>" style="vertical-align:middle" /> </MTCategoryImageAsset><a href="<$mt:CategoryArchiveLink$>"<mt:IfNonEmpty tag="mt:CategoryDescription"> title="<$mt:CategoryDescription$>"</mt:IfNonEmpty>><$mt:CategoryLabel$> (<$mt:CategoryCount$>)</a>
<mt:else>
<li class="widget-list-item"><MTCategoryImageAsset><img src="<$MTAssetURL$>" style="vertical-align:middle" /> </MTCategoryImageAsset><$mt:CategoryLabel$>
</mt:ifNonZero>
</li>
</mt:Categories>
</ul>
</div>
</div>
</mt:IfArchiveTypeEnabled>
赤色部分は、画像の垂直方向の位置揃えのための style 属性です。サンプルでは img 要素に直接与えてしまっているので、適宜スタイルシートで設定するようにしてください。
mt-csv2customfields
「CSV形式のデータを Movable Type のカスタムフィールドに一括読み込みさせたい」という要望がかなり多いようなので、スクリプト mt-csv2customfields.cgi を作成しました。
CSVファイルを読み込み、新規ブログ記事のカスタムフィールドに登録します。
2011.07.11 より高機能なプラグイン「CSVDataImExporter」をリリースしました。
1.機能
今のところできるのは次の通りです。
- 新規ブログ記事のみ対応
- タイトルの書き込み
- 本文の書き込み
- カテゴリーまたはサブカテゴリーの書き込み。カテゴリーが存在しない場合は新規作成(トップレベルのみ)
- タグの書き込み(複数設定可能)
- 出力ファイル名の書き込み
- コメント受信設定・トラックバック受信設定の書き込み
- カスタムフィールド(テキスト形式)の書き込み
- 複数のカスタムフィールドに対応
- 既存のブログ記事タイトルを指定した場合、カスタムフィールドのみ上書き(他のフィールドの内容は無視)
CSVのフォーマット
CSVデータは次のフォーマットにしてください。
1行目:
タイトル:'title'を設定
本文:'text'を設定
カテゴリー:'category'を設定
タグ:'tags'を設定
出力ファイル名:'basename'を設定
コメント受信設定:'allow_comments'を設定(0:非許容/1:許容)
トラックバック受信設定:'allow_pings'を設定(0:非許容/1:許容)
カスタムフィールド:カスタムフィールドのベースネームを設定
2行目以降:フィールドに対応したデータ。
カテゴリーは新規のトップカテゴリー(他と重複しない名称)または既存のカテゴリー名(サブカテゴリーであればサブカテゴリー名のみ設定)。
タグは新規のタグも大丈夫で、":"で区切れば複数設定できます。
なお、CSVデータはUTF-8のものしか確認ができておりません。
3.CSVデータのサンプル
title,text,category,tags,basename,allow_comments,allow_pings,test1,test2,test3
たいとる1,てきすとの内容1,カテゴリー1,タグ1:タグ2,aaa,1,1,カスタムフィールド1の内容1,カスタムフィールド2の内容1,カスタムフィールド3の内容1
たいとる2,てきすとの内容2,カテゴリー2,タグ3:タグ4,bbb,0,0,カスタムフィールド1の内容2,カスタムフィールド2の内容2,カスタムフィールド3の内容2
たいとる3,てきすとの内容3,カテゴリー3,タグ5:タグ6,ccc,1,0,カスタムフィールド1の内容3,カスタムフィールド2の内容3,カスタムフィールド3の内容3
4.ライセンス
4.1 商用ライセンスの Movable Type で利用する場合
商用ライセンスの Movable Type で利用する場合は、有償(3000円/1サーバ)とさせて頂きます。お振込み方法につきましては、お問い合わせよりメールにてご連絡ください。
以下のPaypalからもご利用頂けます。
4.2 個人ライセンス(無償)と組み合わせる場合
個人ライセンス(無償)と組み合わせる場合は、無償でご利用ください。
5.インストール
下記のファイルをダウンロードして、展開した中にあるmt-csv2customfields.cgi をアプリケーションディレクトリにアップロードし、CGIが実行可能なパーミッションを変更してください。
たいしたスクリプトではありません。α版ということでお試しください。
修正履歴
v0.01 2008.03.24 初版
v0.02 2008.04.21 カテゴリーとタグに対応。head / body 要素の重複削除
v0.03 2009.11.17 出力ファイル名、コメント受信設定、トラックバック受信設定に対応
6.利用方法
ブラウザから mt-csv2customfields.cgi にアクセスすると、次のような画面が表示されるので、ブログのID、ユーザーIDを数字で設定し、CSVファイルを選択して送信をクリックしてください。
正常に実行できれば次のような画面が表示されます。
登録後のブログ記事編集画面です。
カスタムフィールドのテキストエリアに入力した改行をページに反映させる
Movable Type のカスタムフィールドで「テキスト(複数行)」という種類のフィールドを利用する際、テキストエリアへの入力内容に改行や空行を含めても、出力される文字列の改行や空行はすべて除去された状態で出力されてしまいます。
本エントリーでは、この事象を解消する方法を紹介します。
1.問題点
例えば、次のようなカスタムフィールドを作成します。テンプレートタグはとりあえず「EntryData」としておきます。
作成したフィールドで、次のようなテキストを入力します。
このカスタムフィールドを出力する「ブログ記事の概要」のサブテンプレートは次のようにします。
:
<div class="asset-body">
<$MTEntryBody$>
<MTIfNonEmpty tag="EntryData">
<$MTEntryData$>
</MTIfNonEmpty>
</div>
:
このテンプレートで出力されるカスタムフィールドの内容には、ご覧の通り、改行が含まれません。
2.対処方法
改行を含めるには、グローバルモディファイアである、filter モディファイアをカスタムフィールドに適用します。
:
<div class="asset-body">
<$MTEntryBody$>
<MTIfNonEmpty tag="EntryData">
<$MTEntryData filters="__default__"$>
</MTIfNonEmpty>
</div>
:
値に設定されている __default__ は、テキストフィルタとして定義されている予約変数(厳密にはMT::Util::html_text_transformをハンドリングするためのキー名)です。
このように設定することで、カスタムフォールドの出力結果に改行(br 要素や p 要素)が反映されます。
もう少し厳密に言えば、ブログ記事やウェブページの本文・追記のフォーマットで「改行を変換」を選択したものと同じ結果で出力されます。
3.参考記事
Ogawa::memoranda:どこでもConvert Line Breaksするための2つのTips
カスタムフィールドの入力文字数の制限を変更する
カスタムフィールドの入力文字数の制限を変更する方法を紹介します。
この問題は Movable Type 4.2 で改善されています。
作成したカスタムフィールドに大量の文字を入力した場合、文字数の制限にひっかかる場合があります。文字数の制限を変更すれば作成したカスタムフィールドに希望するだけの文字を入力できるようになります。
これは下記のトラックバックに触発されて書いたものです。ありがとうございました。
ということで、本エントリーにて紹介させて致します。
1.問題点
サンプルとして、トラックバック元記事と同じ、都道府県を選択するラジオボタンをブログ記事に設置したケースで話を進めます。
次のように、新しく作成したカスタムフィールドに、47都道府県をラジオボタンの選択項目として入力します。
が、ブログ記事投稿画面を表示させると、追加した都道府県がすべて表示されません。
これはオプションフィールド用のテーブルの型が varchar(255) となっており、255文字以上の入力が切り捨てられるためです。
2.対処方法
phpMyAdmin を使って、オプションフィールド用のテーブルの型を変更します。
該当のデータベースを表示します。
mt_field の「構造」のアイコンをクリックします。
field_options の「変更」のアイコンをクリックします。
テーブルの変更画面が表示されます。
「種別」を VARCHAR から TEXT に変更し、「長さ/値」を空にします。変更後、右側にある「保存する」をクリックします。
カスタムフィールドのオプション欄を入力し直して(表示されていない部分は保存されていないので)、「保存」をクリックします。
再度、ブログ記事投稿画面を表示します。カスタムフィールドのオプションがすべて表示されるようになりました。
ちなみに、MySQL の文字データには次のようなものがあります。
- varchar型:最大255文字
- text型:最大65535文字
- mediumtext型:最大16777215文字
- longtext型:最大4294967295文字
3.おまけ
都道府県一覧です。カスタムフィールドの入力にお使いください(間違ってたらすいません)。
北海道,青森県,岩手県,宮城県,秋田県,山形県,福島県,東京都,神奈川県,埼玉県,千葉県,茨城県,栃木県,群馬県,山梨県,新潟県,長野県,富山県,石川県,福井県,愛知県,岐阜県,静岡県,三重県,大阪府,兵庫県,京都府,滋賀県,奈良県,和歌山県,鳥取県,島根県,岡山県,広島県,山口県,徳島県,香川県,愛媛県,高知県,福岡県,佐賀県,長崎県,熊本県,大分県,宮崎県,鹿児島県,沖縄県