IndexFileNameプラグイン
再構築中のインデックステンプレートのファイル名を出力するIndexFileNameプラグインを公開します。インデックステンプレートのファイル名で処理を振り分けたい場合に便利です。
1.機能
MTIndexFileNameファンクションタグを提供します。インデックステンプレートにこのテンプレートタグを記述すると、再構築時にそのインデックステンプレートのファイル名を出力します。他のテンプレートに記述しても何も出力しませんが、例えばインデックステンプレートからインクルードしているテンプレートモジュール内の処理を振り分けたいときにも使えます(詳細は後述)。
後で考えると、このプラグインでなくてもやりたいことは実現できたのですが、何かの役に立つかもしれないので公開します。
2.プラグインのダウンロード
下記の IndexFileName_0_01.zip をクリックして、プラグインアーカイブをダウンロードします。
2010.06.01 初版
3.プラグインのインストール
プラグインアーカイブを展開し、中にある IndexFileName フォルダごと、Movable Type のアプリケーションディレクトリの plugins ディレクトリにアップロードします。
システム管理画面のプラグイン一覧で、「IndexFileName~」が表示されればインストール完了です。

4.利用方法
テンプレートモジュール側で判定したい場合は、MTIncludeタグのモディファイアを利用して、値を引き継ぎます。
インデックステンプレート(foo.html)
<mt:IndexFileName setvar="index_file_name" />
<mt:Include module="bar" index_file_name="$index_file_name" />
テンプレートモジュール(bar)
<mt:if name="index_file_name" eq="foo.html">
…中略…
</mt:if>
EntryCategoryID プラグイン v0.10
現在のブログ記事のメインカテゴリーのID番号を出力する EntryCategoryID プラグインのMovable Type 5対応版を作成しました。このプラグインは、MTEntries ブロック内か、ブログ記事アーカイブで使用できます。
1.基本
このプラグインは次のように利用します。これでメインカテゴリーのID番号を出力します。
<mt:Entries>
<mt:EntryCategoryID />
</mt:Entries>
2.ブログ記事に同一カテゴリーのブログ記事リストを表示する
このプラグインは「ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版・改)」で紹介しているようなことを行いたい場合に便利です。
ブログ記事アーカイブに次のサブテンプレートを設定すれば、同一カテゴリーのブログ記事リストを表示します。
<mt:EntryCategoryID setvar="entry_category_id" />
<mt:Entries>
<mt:EntriesHeader>
<div class="comments">
<h2 class="comments-header">同一カテゴリのブログ記事</h2>
<div class="comments-content">
<ul>
</mt:EntriesHeader>
<mt:EntryCategoryID setvar="current_category_id">
<mt:if name="current_category_id" eq="$entry_category_id">
<li><a href="<mt:EntryPermalink />"><mt:EntryTitle /></a></li>
</mt:if>
<mt:EntriesFooter>
</ul>
</div>
</div>
</mt:EntriesFooter>
</mt:Entries>
3.ダウンロード
EntryCategoryID プラグインは以下のリンクからダウンロードしてください。
CommentCustomField プラグイン v0.04(ラジオボタン・チェックボックス・プルダウンメニュー対応)
配布中の CommentCustomField プラグインをバージョンアップしました。
1.追加機能
追加した機能は次の通りです。
- コメント投稿フィールドに、ラジオボタン/チェックボックス/プルダウンメニューの項目選択用テンプレートタグの提供
- コメントプレビュー画面に、ラジオボタン/チェックボックス/プルダウンメニューのユーザ選択状態を表示するテンプレートタグの提供
- コメント表示フィールドへの投稿データ表示用テンプレートタグの提供
- ブログ管理画面に各フォームデータの初期値を設定可能
- 設定した初期値に選択状態(checked/selected)の設定が可能
- コメント編集画面で各入力値の編集が可能
この機能追加によって、コメント投稿者がラジオボタン/チェックボックス/プルダウンメニューから項目を選択したり、選択した項目をコメント一覧に表示できるようになります。
ラジオボタンの完成例

チェックボックスの完成例

プルダウンメニューの完成例

投稿コメントの表示例

また、ブログ管理画面では、各項目のデータ設定が可能です。

データを選択状態(checked/selected)にしたい場合は、各項目の直後にアスタリスク(*)を入力しておきます。

上記の選択状態を反映させたフォームの初期表示状態は次のようになります。

また、コメント編集画面で、入力されたデータの編集が可能です。

また、画像はアイテムとしての管理対象になり、本プラグインで追加した画像情報表示のためのブロックタグ MTCommentCustomFieldAsset で MTAsset 関連タグを組み合わせれば画像情報を自由に表示することができます。
2.ダウンロード
ダウンロードは下記のリンクからどうぞ。
CommentCustomField プラグイン + HighSlide JS
Movable Type のコメントにカスタムフィールドを追加する CommentCustomField プラグインと HighSlide JS を組み合わせて、アップロードした画像をズームアップするカスタマイズを紹介します。
以下のサンプルページで画像をクリックして動作を確認してください。
ここでは CommentCustomField プラグインの解説にしたがって、ブログ記事ページにアップロード画像を表示するカスタマイズを行なっていることを前提に説明を進めます。
1.HighSlide JS の設定
HighSlide JS の設定方法は、「Highslide JS でサムネイル画像を拡大表示する 」を参照してください。本エントリーでの解説は省略します。
2.テンプレートの修正
ブログ管理画面の「デザイン」→「テンプレート」をクリックし、「既定のブログ」の場合は「コメント」テンプレートモジュールをクリック、当ブログの配布テンプレートの場合は「コメント詳細」テンプレートモジュールをクリックし、赤色部分を青色の内容に変更します。
変更前
...前略...
<mt:Comments>
...中略...
<div class="comment-content">
<$mt:CommentBody$>
<mt:if tag="CommentCustomFieldAsset">
<p>
<mt:CommentCustomFieldAsset>
<mt:AssetThumbnailLink width="200" />
</mt:CommentCustomFieldAsset>
</p>
</mt:if>
...中略...
</div>
</mt:Comments>
...後略...
変更後
...前略...
<mt:Comments>
...中略...
<div class="comment-content">
<$mt:CommentBody$>
<mt:if tag="CommentCustomFieldAsset">
<p>
<mt:CommentCustomFieldAsset>
<a href="<mt:AssetURL />" class="highslide" onclick="return hs.expand(this)"><img src="<mt:AssetThumbnailURL width="100" />" /></a>
</mt:CommentCustomFieldAsset>
</p>
</mt:if>
...中略...
</div>
</mt:Comments>
...後略...
ズーム前のサイズを変更する場合は、width="100" の部分を書き換えてください。
CommentCustomField プラグイン v0.02(画像のアップロード対応)
配布中の CommentCustomField プラグインをバージョンアップしました。
1.追加機能
追加した機能は次の通りです。
- 画像のアップロード機能を追加
- 画像情報を表示するテンプレートタグの追加
この機能追加によって、次のように、コメント投稿者がアップロードした画像をコメント一覧に表示できるようになります。

ブログ管理画面では、画像のアップロード先やアップロード可能なファイルサイズの設定も可能です。
また、画像はアイテムとしての管理対象になり、本プラグインで追加した画像情報表示のためのブロックタグ MTCommentCustomFieldAsset で MTAsset 関連タグを組み合わせれば画像情報を自由に表示することができます。
2.ダウンロード
ダウンロードは下記のリンクからどうぞ。
3.追加機能に伴う注意事項
配布元のページでも解説を追加していますが、画像に対応させるために、コメントフォームの form 要素に enctype 属性を追加してください。
変更前
<form method="post" action="<$mt:CGIPath$><$mt:CommentScript$>" name="comments_form" id="comments-form" onsubmit="return mtCommentOnSubmit(this)">
変更後
<form method="post" enctype="multipart/form-data" action="<$mt:CGIPath$><$mt:CommentScript$>" name="comments_form" id="comments-form" onsubmit="return mtCommentOnSubmit(this)">
コメント投稿フォームには、次のサブテンプレートを追加します。input 要素の name 属性と id 属性は変更しないでください。
<div class="field-inner">
<label for="comment-custom-image">画像</label>
<input type="file" name="comment-custom-image" id="comment-custom-image" class="fi" />
</div>
また、コメントプレビュー画面には、前の画面で設定した画像のアップロード情報は引き継げません。
CommentCustomField プラグイン
Movable Type のコメント投稿フォームに、テキストフィールド・テキストエリアのフィールド追加や、画像のアップロードを可能にするプラグインを公開します。
下の画像は、コメントに画像のカスタムフィールドを追加し、アップロードされた画像をブログ記事のコメントエリアに表示した例です。

1.機能
コメントに以下のフィールドの追加や追加したフィールドの表示がそれぞれ1つずつ可能です。
- テキストフィールド
- テキストエリア
- 画像のアップロード
- ラジオボタン
- チェックボックス
- セレクトボックス
画像の一番下にある「テキストフィールド」が、CommentCustomField プラグインで追加したフィールドです。コメントプレビュー画面にも対応します。

次のように、テキストエリアを表示することもできます(テキストエリアのみの表示も可能)。

画像のアップロードは次のようになります。

ラジオボタンは次のようになります。

チェックボックスは次のようになります。

セレクトボックスは次のようになります。

コメント編集画面は次のように表示します。画面はテキストフィールドのみですが、テキストエリアを表示することもできます。

本プラグインでは次の拡張テンプレートタグを提供します。
- MTCommentCustomFieldText
- 追加したテキストフィールドの内容を出力するファンクションタグ
- MTCommentCustomFieldTextarea
- 追加したテキストエリアの内容を出力するファンクションタグ
- MTCommentCustomFieldAsset
- アップロードした画像の情報を出力するブロックタグ。タグブロック内ではMTAsset関連のタグを利用できます
- MTPreviewCommentCustomFieldText
- コメントプレビュー画面で投稿前のテキストフィールドの内容を出力するファンクションタグ
- MTPreviewCommentCustomFieldTextarea
- コメントプレビュー画面で投稿前のテキストエリアの内容を出力するファンクションタグ
- MTCommentCustomFieldRadioInputValue
- ブログ管理画面で入力したラジオボタンの値をXHTMLで出力するファンクションタグ
- MTCommentCustomFieldCheckboxInputValue
- ブログ管理画面で入力したチェックボックスの値をXHTMLで出力するファンクションタグ
- MTCommentCustomFieldSelectInputValue
- ブログ管理画面で入力したセレクトボックスの値をXHTMLで出力するファンクションタグ
- MTPreviewCommentCustomFieldRadioInputValue
- ブログ管理画面で入力したラジオボタンの値とユーザの選択状態をコメントプレビュー画面でXHTMLで出力するファンクションタグ
- MTPreviewCommentCustomFieldCheckboxInputValue
- ブログ管理画面で入力したチェックボックスの値とユーザの選択状態をコメントプレビュー画面でXHTMLで出力するファンクションタグ
- MTPreviewCommentCustomFieldSelectInputValue
- ブログ管理画面で入力したセレクトボックスの値とユーザの選択状態をコメントプレビュー画面でXHTMLで出力するファンクションタグ
- MTCommentCustomFieldRadio
- コメント投稿フォームで選択したラジオボタンの値を出力するファンクションタグ
- MTCommentCustomFieldCheckbox
- コメント投稿フォームで選択したチェックボックスの値を出力するファンクションタグ
- MTCommentCustomFieldSelect
- コメント投稿フォームで選択したセレクトボックスの値を出力するファンクションタグ
次期バージョンの Movable Type 5 では、コメントのカスタムフィールドの機能追加があると思われますので、このプラグインは Movable Type 4 で使うことを想定しています。
2.価格
本プラグインの価格は次の通りです。
- 個人ライセンス(無償):無償
- 上記以外の有償ライセンス:10000円/1サーバ
なお、個人ライセンスの方も、プラグインのご利用および質問に対する回答等について、ご支援・ご賛同くださる方からの寄付をお待ち申し上げます。
有償ライセンスでご利用の場合、プラグインの動作確認後、下記から指定の金額をお支払いください。お支払い後に不具合が発覚しても払い戻しは致しかねますのでご注意ください。なお、銀行振り込みをご希望の場合は、大変ご面倒ですが、お問い合わせからご連絡ください。折り返し振り込み口座をご連絡致します。
3.プラグインのダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
変更履歴
2009.08.14 初版 2009.08.17 v0.02 画像のアップロード機能を追加 2009.09.10 v0.03 画像のアップロード機能の不具合を修正 2009.10.02 v0.04 ラジオボタン・チェックボックス・プルダウンメニュー対応
4.インストール
プラグインアーカイブを解凍し、中にある CommentCustomField フォルダを plugins ディレクトリにアップロードしてください。
アップロードした後に管理画面にアクセスすると、次のようなアップグレード画面になりますので、「アップグレード開始」をクリックします。

サインインします。この後、アップグレードが開始します。

アップグレードが正常に完了すると次の画面になるので、「Movable Typeに戻る」をクリックし、管理画面に移動します。

ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

5.プラグインの設定
ブログ管理画面(システム管理画面ではありません)の「ツール」→「プラグイン」でプラグイン一覧画面を表示し、「CommentCustomField」→「設定」をクリックして、プラグインの設定を行ないます。

管理画面の表示
- コメント編集画面にテキストフィールドを表示する
- チェックすればコメント編集画面にテキストフィールドを表示します
- コメント編集画面にテキストエリアを表示する
- チェックすればコメント編集画面にテキストエリアを表示します
- コメント編集画面にラジオボタン(入力値)を表示する
- チェックすればコメント編集画面にラジオボタン(入力値)を表示します
- コメント編集画面にチェックボックス(入力値)を表示する
- チェックすればコメント編集画面にチェックボックス(入力値)を表示します
- コメント編集画面にセレクトボックス(入力値)を表示する
- チェックすればコメント編集画面にセレクトボックス(入力値)を表示します
アップロード画像
- 画像のアップロード先
- 画像のアップロード先のパスを指定します。指定したパスはサイトパス配下にディレクトリが作成され、その配下に画像がアップロードされます。パスを設定しない場合はサイトパス直下に画像をアップロードします。また、記述したパス末尾にスラッシュはあってもなくても大丈夫です。
- 画像の最大サイズ
- アップロード可能な画像の最大サイズをKB単位で設定します。デフォルトは300KBです。このサイズを超えた画像はアップロードされません(コメントは投稿されます)。
- アップロードファイル名にタイムスタンプを付与
- アップロードした画像ファイル名に「_comment+タイムスタンプ(年月日時分秒)」を付与します。このプラグインでは同名の画像の上書きチェックを行なわないので、先にアップロードした画像ファイルを後から投稿した同名の画像ファイルで上書きしたくない場合はチェックをいれてください。
アップロードした画像ファイルはアイテムとして管理されます。アイテムに関連つけたコメントを削除してもアイテムは削除されません。
初期値の設定
- ラジオボタンの初期値(半角カンマで区切って設定)
- ラジオボタンに表示する初期値を設定します。選択状態にしたい値は、値の直後にアスタリスクを記述してください。
- チェックボックスの初期値(半角カンマで区切って設定)
- チェックボックスに表示する初期値を設定します。選択状態にしたい値は、値の直後にアスタリスクを記述してください。
- セレクトボックスの初期値(半角カンマで区切って設定)
- セレクトボックスに表示する初期値を設定します。選択状態にしたい値は、値の直後にアスタリスクを記述してください。
6.テンプレートの修正(コメント投稿に必要な設定)
「既定のブログ」テンプレートセットを例に修正内容を解説します。
6.1 コメント(テンプレートモジュール)
ブログ管理画面の「デザイン」→「テンプレート」→「コメント」テンプレートモジュールをクリックし、以下の青色のサブテンプレートを追加します。この作業はコメント投稿フォームに、追加したいカスタムフィールドのPOSTデータを設定するためのものです。
テキストフィールドは次のようになります。追加する部分の input 要素の name 属性と id 属性は変更しないでください。
...前略...
<div id="comments-open-text">
<label for="comment-text">コメント
<mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtCommentFormOnFocus()"></textarea>
</div>
<div id="comment-form-custom-text">
<label for="comment-custom-text">テキストフィールド</label>
<input id="comment-custom-text" name="comment-custom-text" size="30" value="" onfocus="mtCommentFormOnFocus()" />
</div>
<div id="comments-open-captcha"></div>
...後略...
テキストエリアは次のようになります。追加する部分の textarea 要素の name 属性と id 属性は変更しないでください。
...前略...
<div id="comments-open-text">
<label for="comment-text">コメント
<mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtCommentFormOnFocus()"></textarea>
</div>
<div id="comment-form-custom-textarea">
<label for="comment-custom-textarea">テキストエリア</label>
<textarea id="comment-custom-textarea" name="comment-custom-textarea" rows="5" cols="50" onfocus="mtCommentFormOnFocus()"></textarea>
</div>
<div id="comments-open-captcha"></div>
...後略...
テキストフィールドとテキストエリアを両方表示させたい場合は、それぞれの青色部分を並べて記述してください。
画像の場合は次のようになります。form 要素にも enctype 属性の設定が必要です。追加する部分の input 要素の name 属性と id 属性は変更しないでください。
...前略...
<form method="post" enctype="multipart/form-data" action="<$mt:CGIPath$><$mt:CommentScript$>" name="comments_form" id="comments-form" onsubmit="return mtCommentOnSubmit(this)">
...中略...
<div id="comments-open-text">
<label for="comment-text">コメント
<mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtCommentFormOnFocus()"></textarea>
</div>
<div class="field-inner">
<label for="comment-custom-image">画像</label>
<input type="file" name="comment-custom-image" id="comment-custom-image" class="fi" />
</div>
<div id="comments-open-captcha"></div>
...後略...
ラジオボタンの場合は次のようになります。
...前略...
<div id="comments-open-text">
<label for="comment-text">コメント
<mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtCommentFormOnFocus()"></textarea>
</div>
<div id="comment-form-custom-radio" class="field-inner">
<div>この記事は役に立ちましたか?</div>
<mt:CommentCustomFieldRadioInputValue />
</div>
<div id="comments-open-captcha"></div>
...後略...
チェックボックスの場合は次のようになります。
...前略...
<div id="comments-open-text">
<label for="comment-text">コメント
<mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtCommentFormOnFocus()"></textarea>
</div>
<div id="comment-form-custom-checkbox" class="field-inner">
<div>趣味は何ですか?(複数回答可)</div>
<mt:CommentCustomFieldCheckboxInputValue />
</div>
<div id="comments-open-captcha"></div>
...後略...
セレクトボックスの場合は次のようになります。
...前略...
<div id="comments-open-text">
<label for="comment-text">コメント
<mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtCommentFormOnFocus()"></textarea>
</div>
<div id="comment-form-custom-select" class="field-inner">
出身地:<mt:CommentCustomFieldSelectInputValue />
</div>
<div id="comments-open-captcha"></div>
...後略...
追加するサブテンプレートの挿入位置は既存のテキストエリアの直後でなくても構いませんが、サインイン時に表示される位置になるよう、気をつけてください。
6.2 コメントプレビュー(システムテンプレート)
ブログ管理画面の「デザイン」→「テンプレート」→「コメントプレビュー」システムテンプレートクリックし、以下の青色のサブテンプレートを追加します。この作業はコメントプレビュー画面にPOSTデータを引き継ぐためのものです。
テキストフィールドは次のようになります。
...前略...
<div id="comments-open-text">
<label for="comment-text">コメント <mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtShowCaptcha()"><$mt:CommentBody autolink="0" sanitize="0" convert_breaks="0" encode_html="1"$></textarea>
</div>
<div id="comment-form-custom-text">
<label for="comment-custom-text">テキストフィールド</label>
<input id="comment-custom-text" name="comment-custom-text" size="30" value="<$mt:PreviewCommentCustomFieldText encode_html="1"$>" onfocus="mtShowCaptcha()" />
</div>
<div id="comments-open-captcha"></div>
...後略...
テキストエリアは次のようになります。
...前略...
<div id="comments-open-text">
<label for="comment-text">コメント <mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtShowCaptcha()"><$mt:CommentBody autolink="0" sanitize="0" convert_breaks="0" encode_html="1"$></textarea>
</div>
<div id="comment-form-custom-textarea">
<label for="comment-custom-textarea">テキストエリア</label>
<textarea id="comment-custom-textarea" name="comment-custom-textarea" rows="5" cols="50" onfocus="mtShowCaptcha()"><$mt:PreviewCommentCustomFieldTextarea encode_html="1"$></textarea>
</div>
<div id="comments-open-captcha"></div>
...後略...
テキストフィールドとテキストエリアを両方表示させたい場合は、それぞれの青色部分を並べて記述してください。
画像データはプレビュー画面に引き継ぐことはできません。
ラジオボタンの場合は次のようになります。
...前略...
<div id="comments-open-text">
<label for="comment-text">コメント <mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtShowCaptcha()"><$mt:CommentBody autolink="0" sanitize="0" convert_breaks="0" encode_html="1"$></textarea>
</div>
<div id="comment-form-custom-radio" class="field-inner">
<div>この記事は役に立ちましたか?</div>
<mt:PreviewCommentCustomFieldRadioInputValue />
</div>
<div id="comments-open-captcha"></div>
...後略...
チェックボックスの場合は次のようになります。
...前略...
<div id="comments-open-text">
<label for="comment-text">コメント <mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtShowCaptcha()"><$mt:CommentBody autolink="0" sanitize="0" convert_breaks="0" encode_html="1"$></textarea>
</div>
<div id="comment-form-custom-checkbox" class="field-inner">
<div>趣味は何ですか?(複数回答可)</div>
<mt:PreviewCommentCustomFieldCheckboxInputValue />
</div>
<div id="comments-open-captcha"></div>
...後略...
セレクトボックスの場合は次のようになります。
...前略...
<div id="comments-open-text">
<label for="comment-text">コメント <mt:IfAllowCommentHTML>(スタイル用のHTMLタグを使えます)</mt:IfAllowCommentHTML></label>
<textarea id="comment-text" name="text" rows="15" cols="50" onfocus="mtShowCaptcha()"><$mt:CommentBody autolink="0" sanitize="0" convert_breaks="0" encode_html="1"$></textarea>
</div>
<div id="comment-form-custom-select" class="field-inner">
出身地:<mt:PreviewCommentCustomFieldSelectInputValue />
</div>
<div id="comments-open-captcha"></div>
...後略...
追加するサブテンプレートの挿入位置は既存のテキストエリアの直後でなくても構いませんが、サインイン時に表示される位置になるよう、気をつけてください。
6.3 スタイルシート(インデックステンプレート)
ブログ管理画面の「デザイン」→「テンプレート」→「スタイルシート」インデックステンプレートクリックし、以下の内容を追加します。
#comment-form-custom-text,
#comment-form-custom-textarea {
margin-bottom: 0.75em;
}
#comment-custom-text,
#comment-custom-textarea {
width: 80%;
}
参考までに、デフォルトテンプレートの場合、次のような設定を行なえばきれいに表示されます。
.comments-open .input_radio_label,
.comments-open .input_checkbox_label {
display: inline;
}
.comments-open .input_radio_value,
.comments-open .input_checkbox_value {
margin-left: 3px;
}
.comments-open .input_radio,
.comments-open .input_checkbox {
vertical-align: middle;
}
#comment-form-custom-radio,
#comment-form-custom-checkbox,
#comment-form-custom-select {
margin: 10px 0;
}
7.テンプレートの修正(追加したカスタムフィールド表示に必要な設定)
「既定のブログ」テンプレートセットを例に、修正内容を解説します。
ブログ管理画面の「デザイン」→「テンプレート」→「コメント」テンプレートモジュールをクリックし、以下の青色のサブテンプレートを追加します。この作業はブログ記事ページやウェブページのコメント一覧に、追加したカスタムフィールドのデータを表示するためのものです。
テキストフィールドは次のようになります。
...前略...
<mt:Comments>
...中略...
<div class="comment-content">
<$mt:CommentBody$>
<mt:if tag="CommentCustomFieldText">
<$mt:CommentCustomFieldText$>
</mt:if>
...中略...
</div>
</mt:Comments>
...後略...
テキストエリアは次のようになります。
...前略...
<mt:Comments>
...中略...
<div class="comment-content">
<$mt:CommentBody$>
<mt:if tag="CommentCustomFieldTextarea">
<$mt:CommentCustomFieldTextarea$>
</mt:if>
...中略...
</div>
</mt:Comments>
...後略...
画像は次のようになります。画像の表示バリエーションは色々ありますが、ここでは横幅200pxのサムネイル画像で表示する例です。
...前略...
<mt:Comments>
...中略...
<div class="comment-content">
<$mt:CommentBody$>
<mt:if tag="CommentCustomFieldAsset">
<p>
<mt:CommentCustomFieldAsset>
<mt:AssetThumbnailLink width="200" />
</mt:CommentCustomFieldAsset>
</p>
</mt:if>
...中略...
</div>
</mt:Comments>
...後略...
ラジオボタンは次のようになります。
...前略...
<mt:Comments>
...中略...
<div class="comment-content">
<$mt:CommentBody$>
<mt:if tag="CommentCustomFieldRadio">
この記事は役にたった:<mt:CommentCustomFieldRadio />
</mt:if>
...中略...
</div>
</mt:Comments>
...後略...
チェックボックスは次のようになります。
...前略...
<mt:Comments>
...中略...
<div class="comment-content">
<$mt:CommentBody$>
<mt:if tag="CommentCustomFieldCheckbox">
趣味:<mt:CommentCustomFieldCheckbox />
</mt:if>
...中略...
</div>
</mt:Comments>
...後略...
セレクトボックスは次のようになります。
...前略...
<mt:Comments>
...中略...
<div class="comment-content">
<$mt:CommentBody$>
<mt:if tag="CommentCustomFieldSelect">
出身地:<mt:CommentCustomFieldSelect />
</mt:if>
...中略...
</div>
</mt:Comments>
...後略...
HTTPUserAgent プラグイン
Movable Type で、HTTP ユーザーエージェントを表示する拡張テンプレートタグを作成しました。ふと思いついて今年初めに作成したのですが、公開するのをすっかり忘れてました。
1.概要
このプラグインは、HTTP ユーザーエージェントを表示するファンクションタグを提供します。利用方法としては、PCからのアクセスと携帯からのアクセスの振り分けが考えられます。
つまり、このプラグインとダイナミックパブリッシングを利用すれば、テンプレート上で HTTP ユーザーエージェントを振り分けられるようになります。言い換えると、同一 URL で、PC 用のページと携帯用のページを提供できるようになります(キャッシュできないという欠点はありますが)。
2.HTTPUserAgent プラグインのダウンロード
下記の HTTPUserAgent.zip をクリックして、プラグインアーカイブをダウンロードします。
2009.05.08 初版
プラグインのご利用および質問に対する回答等について、ご支援・ご賛同くださる方からの寄付をお待ち申し上げます。
3.HTTPUserAgent プラグインのアップロード・インストール
プラグインアーカイブを展開し、中にある HTTPUserAgent フォルダごと、Movable Type のアプリケーションディレクトリの plugins ディレクトリにアップロードします。
システム管理画面のプラグイン一覧で、「HTTPUserAgent ~」が表示されればインストール完了です。

スタティックパブリッシング・ダイナミックパブリッシングのいずれにも対応しています。
4.タグの使用方法
プラグインが提供する、MTHTTPUserAgent タグは、HTTP ユーザーエージェントの内容を一切加工せず、そのまま出力します。アクセスしたブラウザや携帯等の HTTP ユーザーエージェントを表示するには、次のように記述します。
HTTP_USER_AGENT:<mt:HTTPUserAgent />
本来の目的である、ユーザーエージェントの振り分けは次のように記述します。ブラウザやキャリアの判定ロジックは適当なので、きちんと書き直してください。
<mt:if tag="HTTPUserAgent" like="Mozilla|Opera">
PC 用のマークアップ
<mt:elseIf like="DoCoMo">
DoCoMo 用のマークアップ
<mt:elseIf like="KDDI">
au 用のマークアップ
<mt:elseIf like="SoftBank">
SoftBank 用のマークアップ
</mt:if>
5.ユーザーエージェント一覧
ネットで検索すれば色々出てきます。以下は一例です。
6.その他
このプラグインを使って、管理画面の振り分けを目論んでます。ということで、現在、携帯用のブログ管理画面を粛々と作成中ですがクッキーで躓きそうです。
MultiCalendar プラグイン
Movable Type 4 のカレンダー処理で、MTCalendar タグの代わりに、ブログIDを指定できる MTMultiCalendar タグを提供するプラグインを作成しました。
1.経緯
「複数ブログの情報をひとつのカレンダーに表示したい」という質問を頂いて、色々試したのですが、標準の MTCalendar タグでは、ブログIDや複数ブログIDが指定できないため、プラグインでブログIDを指定できる拡張テンプレートタグを作成しました。
また、MTCalendar タグは再構築時のパフォーマンスを考慮したキャッシュ機能があるので、MultiCalendar プラグインでは、その機能も継承するようにしました。
ちなみに、質問を頂いた方のMTバージョンは3のため、本プラグインでは全くご要望の内容が満たせておりません。
2.MultiCalendar プラグインのダウンロード
下記の MultiCalendar.zip をクリックして、プラグインアーカイブをダウンロード。
変更履歴
2009.03.18 初版
2010.01.03 v0.02 Movable Type 5.0 対応
3.MultiCalendarプラグインのアップロード・インストール
プラグインアーカイブを展開し、中にある MultiCalendarフォルダごと、Movable Type のアプリケーションディレクトリの plugins ディレクトリにアップロード。
システム管理画面のプラグイン一覧で、「MultiCalendar~」が表示されればインストール完了です。

4.タグの使用方法
MultiCalendar タグは、次のように blog_id モディファイアを提供し、ブログIDを指定したカレンダー表示が行なえます。
<mt:IfArchiveTypeEnabled archive_type="Individual">
<div class="widget-calendar widget">
<h3 class="widget-header"><$mt:Date format="%B %Y"$></h3>
<div class="widget-content">
<table summary="リンク付きのカレンダー">
<tr>
<th abbr="日曜日">日</th>
<th abbr="月曜日">月</th>
<th abbr="火曜日">火</th>
<th abbr="水曜日">水</th>
<th abbr="木曜日">木</th>
<th abbr="金曜日">金</th>
<th abbr="土曜日">土</th>
</tr>
<mt:MultiCalendar blog_id="1">
<mt:CalendarWeekHeader>
<tr>
</mt:CalendarWeekHeader>
<td>
<mt:CalendarIfEntries>
<mt:Entries lastn="1">
<a href="<$mt:EntryPermalink$>"><$mt:CalendarDay$></a>
</mt:Entries>
</mt:CalendarIfEntries>
<mt:CalendarIfNoEntries>
<$mt:CalendarDay$>
</mt:CalendarIfNoEntries>
<mt:CalendarIfBlank> </mt:CalendarIfBlank>
</td>
<mt:CalendarWeekFooter>
</tr>
</mt:CalendarWeekFooter>
</mt:MultiCalendar>
</table>
</div>
</div>
</mt:IfArchiveTypeEnabled>
その他、MTCalendar と同じモディファイア(month/category/this)が指定できます(多分)。また、MTMultiCalendar タグブロック内は、MTCalendar と同じカレンダー系タグが使用できます。
複数ブログをひとつのカレンダーに表示するカスタマイズは下記をご覧ください。
2009.03.27
カスタマイズ記事へのリンクを追加しました。
RecommendedEntry プラグイン
Open MagicVox.net のぴろりさんが配布している RecommendedEntry プラグインを導入してみました。
各ブログ記事ページの下にある、「この記事を読んだ人はこんな記事も読んでいます」のリンクはこのプラグインで生成しています。

このプラグインを利用するには、ページの PHP 化が必要です。
以下、プラグイン設定方法です。
1.プラグインのダウンロード
「オススメ記事を紹介するMovableTypeプラグイン:RecommendedEntry」の「ダウンロード」にある「」をクリックして、プラグインアーカイブをダウンロードします。

2.プラグインのインストール
アーカイブを展開して、中にある RecommendedEntry.pl を plugis ディレクトリにアップロードします。
ブログ管理画面の「システムメニュー」→「プラグイン」でプラグイン一覧画面に進み、「RecommendedEntry 1.00」が表示されればインストール完了です。

3.インデックステンプレートの作成
ブログ管理画面の「デザイン」→「テンプレート」→「インデックステンプレートを作成」をクリックし、新しいインデックステンプレートを作成します。各設定内容は次のとおりです。
- テンプレート名:recommended
- テンプレートの内容:「オススメ記事を紹介するMovableTypeプラグイン:RecommendedEntry」の「2.エントリ一覧用インデックステンプレートの作成」にある内容をコピー
- 出力ファイル名:recommended.php
設定が完了したら保存・再構築してください。なお、このインデックステンプレートはすべてのブログ記事の情報を作成するので、ブログ記事数が多い場合は「RebuildIndexFilter プラグイン」と併用するとよいでしょう。
4.データファイル保存用ディレクトリの作成
RecommendeEntry プラグインでは、あるブログ記事から他のブログ記事へアクセスした時に、ブログ記事ページ単位にデータファイルを作成・更新します(5項で追加するサブテンプレートでその動作を行ないます)。
そのデータファイルを保存するためのディレクトリを作成します。ここでは仮に「hoge」というディレクトリを作成します。ブログ記事アクセス時に書き込みできるよう、ディレクトリのパーミッションは適宜変更してください。
データファイル名は、「ブログ記事ID.txt」になります。下は、FFFTPで見た、当サイトのデータファイルディレクトリです。

5.ブログ記事テンプレートの修正1
ブログ管理画面の「デザイン」→「テンプレート」→「ブログ記事」をクリックし、ブログ記事テンプレートの一番先頭に下記の内容を追加します。
<mt:UseRecommendedEntry template="recommended" datapath="/home/user/public_html/hoge" />
赤色部分はそれぞれ、
- template モディファイア:3項で作成したインデックステンプレートのテンプレート名
- datapath モディファイア:4項で作成したデータファイル保存用ディレクトリ(フルパス)
を設定します。
なお、当サイトでは、PHPファイルで条件付きGETの設定を行なっているので、どちらを先に設定すればいいのか悩みましたが、とりあえず、条件付きGETを先頭にして、その直後に前述のコードを設定しました。
設定に失敗している場合は、ページを表示したときにエラーメッセージが出るので、「RecommendedEntry プラグイン」の「困った時は」を参照すると良いでしょう。
6.ブログ記事テンプレートの修正2
ブログ記事テンプレートに対し、記事冒頭の「この記事を読んだ人はこんな記事も読んでいます」というリストを出力したい場所に、次のようなサブテンプレートを追加します。
<h2>この記事を読んだ人はこんな記事も読んでいます</h2>
<ul>
<mt:RecommendedEntries count="10">
<li><a href="<mt:RecommendedEntryParam name="permalink" />"><mt:RecommendedEntryParam name="title" /></a></li>
</mt:RecommendedEntries>
</ul>
プラグイン導入直後は見出し以外表示されませんが、ブログ記事を渡り歩けば、次第に表示内容が充実していきます。
Split プラグイン
Movable Type 4 でPerl の split 機能を提供するグローバルモディファイアを作りました。
1.Split プラグインのダウンロード
下記の Split.zip をクリックして、プラグインアーカイブをダウンロード。
2.Split プラグインのアップロード・インストール
プラグインアーカイブを展開し、中にある Split フォルダごと、Movable Type のアプリケーションディレクトリの plugins ディレクトリにアップロード。
システム管理画面のプラグイン一覧で、「Split ~」が表示されればインストール完了です。

3.使用例
split モディファイアの値に区切り文字を設定すれば、区切り文字で split した配列変数を返却します。
次のサブテンプレートを例に示します。これは変数 foo に設定した、「a AND b AND c」という値を「 AND 」で区切り、「a」「b」「c」を配列変数 bar に設定します。
<mt:setvar name="foo" value="a AND b AND c" />
<mt:getVar name="foo" split=" AND " setvar="bar">
<mt:loop name="bar">
<mt:getVar name="__value__" /><br />
</mt:loop>
このサブテンプレートの出力結果は、
a
b
c
となります。
以上です。あまりエレガントな動作ではありませんので、予めご了承ください。
このグローバルモディファイアを利用した具体的な使用例は別途エントリーします。
ArchiveDateFooter プラグイン(MT4.2 対応)
ArchiveDateFooter プラグイン が Movable Type 4.2 で動作しないというご連絡を頂きましたので、4.2 対応版をリリース致しました。
旧バージョンの ArchiveDateFooter プラグインを Movable Type 4.2 にインストールし、MTArchiveDateFooter タグのあるテンプレートの再構築を行うと、次のような「Can't use string ("00000001000000") as a subroutine ref while "strict refs" in use at ~ ArchiveDateFooter.pl line 49. 」というエラーが発生します(ブログ記事投稿月が2ヶ月以上にまたがる場合)。

MT4.2 対応の ArchiveDateFooter プラグインは「ArchiveDateFooter プラグイン」のエントリーからダウンロードできます。
ArchiveDateFooter プラグインは、ArchiveDateHeader プラグインと併用してください。ArchiveDateHeader は下記のいずれかのプラグインを用いればOKです。
- mt-archive-dateheader(ダウンロードするには TypeKey によるサインインが必要です)
- ArchiveDateHeader 1.0
ArchiveDateHeader 1.0 を MT4 以降で動作させたい場合は、ArchiveDateHeader.pl に下記のコード(青色部分)を追加してください。
:
use strict;
use MT::Template::Context;
MT::Template::Context->add_container_tag(ArchiveDateHeader => \&ArchiveDateHeader);
use MT::Plugin;
my $plugin = MT::Plugin->new({ name => 'MTArchiveDateHeader' });
MT->add_plugin($plugin);
sub ArchiveDateHeader {
:
FolderLink プラグイン
Movable Type 4 で、ウェブページのフォルダリンクを出力するプラグインを作りました。

フォルダ名に対応するパス(URL)を再帰的に出力します。空のフォルダでも無条件に出力するので、各フォルダには index.html があることが前提です。
上の画面は、「IBM ThinkPad」という製品情報のウェブページが属する、「製品情報」「コンピュータ」「ノートPC」という、階層化されたフォルダを表示した例です。
このプラグインは次の記事を参考にさせて頂きました。ありがとうございました。
1.プラグインのダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
2.インストール
プラグインアーカイブを解凍し、中にある FolderLink.pl を plugins ディレクトリにアップロードしてください。
ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

3.使用方法
冒頭のパンくずリストは、ウェブページアーカイブに次のようなサブテンプレートを貼り付けています。
<a href="<$MTBlogURL$>">ホーム</a> >
<MTParentFolders>
<a href="<$MTFolderLink$>"><$MTFolderLabel$></a> >
</MTParentFolders>
<$MTPageTitle$>
手を加えれば、もう少しエレガントなサブテンプレートにできます。
BlogArchiveRelativeURLプラグイン
Movable Type のアーカイブ URL を、ホストからの相対 URL で表示するプラグインを作りました。例えば、ブログの URL が http://user-domain.com/first-weblog/archives の場合、/first-weblog/archives を出力します。
MTBlogRelativeURLタグのアーカイブURL版です。かなり以前に作成して、そのままになっていたものです。
1.プラグインのダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
2.インストール
プラグインアーカイブを解凍し、中にある BlogArchiveRelativeURL.pl を plugins ディレクトリにアップロードしてください。
ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

3.使用方法
テンプレートの任意の位置で <$MTBlogArchiveRelativeURL$> と設定してください。アーカイブURLを設定していない場合は、<$MTBlogRelativeURL$> と同じ内容を出力します。
SubCategoryDepth / SubFolderDepth プラグイン
Movable Type のサブカテゴリーリストやサブフォルダリストで階層を出力するプラグインを作りました。画面のようにサブカテゴリーの階層を表示できます。

ちなみにMT4では、制御系タグを利用すればこのようなことは簡単に実現できますが、このプラグインはMT4がリリースされる以前、1年ほど前に作ったもので、せっかくなので公開します。
1.ダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
2.インストール
プラグインアーカイブを解凍し、中にある SubCategoryDepth.pl を plugins ディレクトリにアップロードしてください。
ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

3.使用方法
このプラグインが提供する MTSubCategoryDepth タグは、次のブロックタグで利用可能です。
- MTTopLevelCategories
- MTSubCategories
- MTTopLevelFolders
- MTSubFolders
冒頭のサンプルのようにサブカテゴリーリストの階層を出力する場合は、次のように記述します。
<mt:TopLevelCategories>
<mt:SubCatIsFirst>
<ul class="widget-list">
</mt:SubCatIsFirst>
<mt:IfNonZero tag="mt:CategoryCount">
<li class="widget-list-item"><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"><$mt:CategoryLabel$>
</mt:IfNonZero>
<mt:SubCategoryDepth setvar="depth" />
階層<mt:getVar name="depth" op="++" />
<$mt:SubCatsRecurse$>
</li>
<mt:SubCatIsLast>
</ul>
</mt:SubCatIsLast>
</mt:TopLevelCategories>
プラグインで出力するデフォルト値は、最上位の親階層は0になり、階層が深くなる毎に+1されます。
EntryCategory プラグイン
Movable Type には MTEntryCategory というファンクションタグが存在しますが、これをブロックタグに置き換えるプラグインを作りました。
元々の発端は、EntryCategoryID プラグインを作った時に、他のプライマリーカテゴリーに関する情報も、このようなファンクションタグでしか出力できないことを不満に思ったからです。
テンプレートタグのブロックタグは、リスト形式で出力するものがほとんどですが、
など、単数形のブロックタグもいくつか存在します。
つまり、MTEntryCategory もファンクションタグとして MTCategoryLabel の内容だけを出力するのではなく、ブロックタグとして振舞うのが本来のような気がした訳です。
1.ダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
2.インストール
プラグインアーカイブを解凍し、中にある EntryCategory.pl を plugins ディレクトリにアップロードしてください。
ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

3.使用方法
このプラグインが提供する MTEntryCategory テンプレートタグは、MTEntries タグブロック内、またはブログ記事アーカイブで利用可能です。
エントリーの属するプライマリカテゴリー名の一覧を出力する場合は、次のように記述します。
<MTEntries>
<MTEntryCategory>
<$MTCategoryLabel$>
</MTEntryCategory>
</MTEntries>
エントリーの属するプライマリカテゴリーに親カテゴリーがある場合のみ、親カテゴリー名を出力する場合は、次のように記述します。
<MTEntries>
<MTEntryCategory>
<MTHasParentCategory>
<MTParentCategory>
<$MTCategoryLabel$>
</MTParentCategory>
</MTHasParentCategory>
</MTEntryCategory>
</MTEntries>
その他、MTCategoryID、MTCategoryArchiveLink、MTCategoryBasename など、MTEntryCategory タグの中ではカテゴリー系のテンプレートタグがいろいろ使えます。
すでにテンプレートで MTEntryCategory を使っている場合は、検索機能の正規表現を使って検索、場合によっては置換してしまうと良いでしょう。

EntryCategoryID プラグイン
現在のブログ記事の主カテゴリーのID番号を出力する EntryCategoryID プラグインを作成しました。このプラグインは、MTEntries ブロック内か、ブログ記事アーカイブで使用できます。
1.ダウンロード
下記のリンクからプラグインアーカイブをダウンロードし、任意のフォルダに保存してください。
- EntryCategoryID.zip(~MT4版)
- EntryCategoryID_0_10.zip(MT5版)
2.アップロード
プラグインアーカイブを解凍し、中にある EntryCategoryID.pl を plugins ディレクトリにアップロードしてください。
ブログ管理画面より「システム」→「プラグイン」でプラグイン一覧を表示し、次のように表示されればOKです。

3.サンプル
<MTEntries>
<$MTEntryCategoryID$>
</MTEntries>
しょぼいサンプルですいません。具体的な使い方は次回エントリーします。
2010.04.27
Movable Type 5対応版をリリースしました。
ArchiveDateFooter プラグイン(MT4.x 対応)
ArchiveDateFooter プラグイン が Movable Type 4.x 版で動作しなかったので、修正致しました。下のスクリーンショットは MT4 で月別アーカイブリストに ArchiveDateHeader + ArchiveDateFooter を利用して年別表示させたものです。

MT4 対応のプラグインは「ArchiveDateFooter プラグイン」のエントリーからダウンロードできます。
修正箇所は、アーカイブタイプ別のデータを取得する仕組みが変更されていたので、その部分を修正しました。とりあえず月別アーカイブでは昇順・降順ともに動作するようになってます。
その他、「The blog of H.Fujimoto:Movable Type 4のエントリーの日付の管理方法」の内容にしたがい、エントリーをインポートするケースを考慮して、プラグインで利用している created_on の指定を authored_on に変更しました。
ArchiveDateHeader は下記のプラグインを用いればOKです。
実は、ArchiveDateHeader プラグインは上記の他にもうひとつありまして、それが当サイトで紹介している Adam Kalsey 氏の ArchiveDateHeader 1.0 です。
こちらは再構築で下記のエラーが発生します。

mt-archive-dateheader や、MT4 で正常に動作する(または拡張タグが認識できる)プラグインと比較したところ、どうやらプラグインファイルの初期設定処理が実装されていないのが原因のようです。
ということで、ArchiveDateHeader 1.0 を MT4 で動作させたい場合は、下記のコード(青色部分)を追加すると良いでしょう。
:
use strict;
use MT::Template::Context;
MT::Template::Context->add_container_tag(ArchiveDateHeader => \&ArchiveDateHeader);
use MT::Plugin;
my $plugin = MT::Plugin->new({ name => 'MTArchiveDateHeader' });
MT->add_plugin($plugin);
sub ArchiveDateHeader {
:
関連記事
メインページと同じ情報をアーカイブページで表示する indexcontext プラグイン
Movable Type のアーカイブページ(カテゴリー・アーカイブ/日付アーカイブ/エントリー・アーカイブ)ではメインインデックスと全く同じ情報を出力することができません。
以前、「アーカイブページに「最近のコメント」「最近のトラックバック」を表示する」というエントリーに記した通り、「最近のエントリー」「最近のコメント」「最近のトラックバック」はアーカイブページによって出力される情報が異なります。
デフォルトテンプレートのアーカイブページにそれらの情報が設定されていないのが上記の理由であるかどうかは定かではありませんが、この振る舞いは(多分)マニュアル等に明記されていません。
先のエントリーではあの手この手でアーカイブに依存しないで表示させる方法を列挙していますが、本エントリーで紹介するプラグインを利用すればこの問題を簡単に解消してくれます。
1.プラグインのインストール
下記のサイトよりプラグインをダウンロードします。
ダウンロードした indexcontext.zip を解凍し、中にある indexcontext.pl を plugins ディレクトリにアップロードします。
2.タグの設定
このプラグインが提供するタグは MTIndexContext のみです。このタグで表示させたい各リストの外側を括ります。
デフォルトテンプレートの各アーカイブページで「最近のエントリー」を表示させたい場合、下記のタグをサイドバー部分に設定します。
<div class="module-archives module">
<h2 class="module-header">最近のエントリー</h2>
<div class="module-content">
<ul class="module-list">
<MTIndexContext>
<MTEntries lastn="10">
<li class="module-list-item"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</MTIndexContext>
</ul>
<a href="<$MTBlogURL$>atom.xml">このブログのフィードを取得</a><br />
[<a href="http://www.sixapart.jp/about/feeds">フィードとは</a>]
</div>
</div>
公開テンプレートの場合は下記のタグを設定します。
<div class="sidetitle">
Recent Entries
</div>
<div class="side">
<MTIndexContext>
<MTEntries lastn="10">
<a href="<$MTEntryPermalink$>" title="e<$MTEntryID$>"><$MTEntryTitle$></a><br />
</MTEntries>
</MTIndexContext>
</div>
「最近のコメント」は MTComments の外側、「最近のトラックバック」は MTPings の外側を括ります。
上記のサンプルでは MTEntries の直前と直後に MTIndexContext を追加していますが、一番外側にある div 要素の直前と直後に設定しても構いません。
3.WidgetManager による設定
配布元でも紹介されていますが、WidgetManager を利用することでテンプレート上の管理を簡単にすることができます。
例えば、「最近のエントリー」をメインページに表示するには次の1行を設定します。
<$MTWidgetManager name="Recent Entries"$>
そしてアーカイブページは下記のように MTIndexContext で括った形で設定します。
<MTIndexContext>
<$MTWidgetManager name="Recent Entries"$>
</MTIndexContext>
MTWidgetManager タグの name 属性には Widget 名を設定します。Widget 名は「Recent Entries」という名前で「テンプレート・モジュール」に予め登録されたもので、Widget の内容には「最近のエントリー」のタグ(下記)が設定されています。
設定方法の詳細は WidgetManager をご覧ください。
<div class="module-archives module">
<h2 class="module-header">最近のエントリー</h2>
<div class="module-content">
<ul class="module-list">
<MTEntries lastn="10">
<li class="module-list-item"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</ul>
<a href="<$MTBlogURL$>atom.xml">このブログのフィードを取得</a><br />
[<a href="http://www.sixapart.jp/about/feeds">フィードとは</a>]
</div>
</div>
このような設定を行うことで Widget を各テンプレートで共用することが可能になります。
ArchiveDateFooter プラグインバージョンアップ
月別アーカイブを年別にリスト表示する場合に利用する ArchiveDateFooter プラグインですが、MTArchiveDateFooter をラップするコンテナタグ MTArchiveList タグで sort_order 属性に acend を設定された場合に正常に表示されないという不具合を修正しました。
この修正により昇順で表示する場合でも、スクリーンショットのように正常に動作するようになります。
この不具合は昨年にご質問を頂いておりました。公開が遅くなり申し訳ございませんでした。
なおバージョンアップしたプラグインは元記事「ArchiveDateFooter プラグイン」よりダウンロードしてください。ご利用方法についても元記事をアップデートしましたのでそちらを参照ください。
Simply Threaded プラグイン
投稿されたコメントに対しリプライをする際、「>hogehoge さん」という元コメント情報を表示することができる Movable Type プラグインです。また、元コメントへのページ内リンクも自動的に設定してくれます。 |
1.インストール
Movalog:Simply Threaded 1.0へアクセス
ダウンロードアーカイブを解凍して、php ディレクトリ、plugins ディレクトリにそれぞれアップロードします(詳細な配置はダウンロードページ下に記載されています)。
プラグイン一覧に「Simply Threaded」が表示されればOKです。 |
2.テンプレート修正
エントリー・アーカイブに下記の設定を行います。コメントプレビューにも同じ追加を行うと思いますが試しておりません。
まず、リプライ用のリンクを表示する MTCommentReplyLink タグをコメント投稿者情報の末尾に追加します。
<p class="comment-footer">
投稿者:
<$MTCommentAuthorLink default_name="匿名"$> <$MTCommentAuthorIdentity$> |
<a href="#comment-<$MTCommentID$>"><$MTCommentDate$></a> |
<MTCommentReplyLink>
</p>
埋め込んだタグは、スクリーンショットのように「Reply」が表示されます。 |
MTCommentReplyLink タグにはオプションで text 属性が用意されています。これで表示テキストを変更できます。
<MTCommentReplyLink text="Reply to this comment">
リプライ先を表示する場合は、上記のタグに、さらに MTRepliedComment タグを追加します(英語表記ですいません)。
<p class="comment-footer">
<MTRepliedComment>Posted, in reply to <a href="#c<MTCommentID>"><MTCommentAuthor>'s comment</a>, by<MTElse>Posted by</MTElse></MTRepliedComment>
<$MTCommentAuthorLink default_name="<MT_TRANS phrase="Anonymous">"$> <$MTCommentAuthorIdentity$> |
<a href="#comment-<$MTCommentID$>"><$MTCommentDate$></a> |
<MTCommentReplyLink>
</p>
この設定を行えば、リプライコメントの場合、投稿者情報欄に
Posted, in reply to X's comment, by Y
と表示され、通常の新規投稿であれば、
Posted by Y
と表示されます。
個人的には下記のような形式がお勧めです。
<div class="comment-content">
<MTRepliedComment><p>><a href="#c<MTCommentID>"><MTCommentAuthor></a>さん</p></MTRepliedComment>
<$MTCommentBody$>
</div>
<p class="comment-footer">
Posted by <$MTCommentAuthorLink default_name="Anonymous"$> <$MTCommentAuthorIdentity$> |
<a href="#comment-<$MTCommentID$>"><$MTCommentDate$></a> |
<MTCommentReplyLink>
</p>
こうすると、リプライした時にコメント内容の先頭に引用元の名前を表示することができます。 |
最後に、リプライする・しないを決めるチェックボックスを、コメント欄に追加します。
<p>
<label for="comment-bake-cookie"><input type="checkbox"
id="comment-bake-cookie" name="bakecookie" onclick="if (!this.checked) forgetMe(document.comments_form)" value="1" />
この情報を登録しますか?</label>
</p>
<MTCommentReplyField>
前に設定した「Reply」のリンクをクリックすると、コメント投稿欄に追加したMTタグ(後述)の位置に、リプライ元の情報を引用するチェックボックスが表示されます。 |
Ignore プラグイン
先日エントリーした「MTIgnore タグ」を Movable Type 3.2 で利用するためのプラグインです。
「タグで括られた部分を処理しない」というものですので、「プラグイン」というのはおこがましいのですが、テンプレートに色々なカスタマイズ、特に MTタグをそのまま残せるのがかなり便利と感じました。
実は、不要なMTタグにHTMLコメントアウト(<!-- ? -->)を施ししても、再構築時点ではそのMTタグは処理対象となってしまいます(Movable Type はHTMLコメントアウトを認識しないため)。つまりその分パフォーマンスに影響し、さらにHTMLソースに展開されたMTタグが残ってしまいますのでファイルサイズにも影響します。
このプラグインを用いることで、再構築対象にならず、HTMLソースにも残らないため、これらの欠点を一気に解消することができます。まだ 3.2 をお使いの方で興味のある方はお試しになってください。
なお、3.3 では MTIgnore タグがデフォルト機能としてサポートされますので、アップグレード後、本プラグインを無効にすればテンプレートに記述した MTIgnore をそのまま使うことができます。
1.プラグインのダウンロード
下記のリンクよりプラグインアーカイブをダウンロードしてください。
2.プラグインのアップロード
プラグインアーカイブを解凍して、中にある Ignore.pl を plugins ディレクトリにアップロードしてください。
管理画面の
メイン・メニュー > システム・メニュー > プラグイン
で使用中のプラグイン一覧が表示されますので、その中に「Ignore バージョンx.xx」と表示されていればOKです。
3.タグ
このプラグインが提供するMTタグは
<MTIgnore>
です。
例えば、リスト1.1のように、一部分を MTIgnore で括ります。
コメント1 <MTIgnore>コメント2</MTIgnore> コメント3- リスト1.1 MTIgnore タグの使用例1
この場合、MTIgnore で括られた部分は HTML に現われず、リスト1.2 のように
コメント1 コメント3- リスト1.2 リスト1.1 のHTMLソース
という表示になります。
コメント文字列だけでなく、MTタグを MTIgnore で括ることも可能です。リスト1.3 のように括れば、生成された HTML ページに MTEntries タグの内容は何も表示されません。
<MTIgnore> <MTEntries> <$MTEntryTitle$><br /> </MTEntries> </MTIgnore>- リスト1.3 MTIgnore タグの使用例2
4.エントリーの中で使いたい場合
「書いた記事をエントリーに残しておきたいけれども見られたくない」という場合は、エントリーの中で MTIgnore を利用することで、生成されたHTMLに表示されなくなります。この技を実現するには「エントリーの中でMTタグを使う」をご覧ください。*1
*1:記事の概要にあたる部分で用いた場合、MTEntryTrackbackData が展開された内容に記述が残る場合があります。
Counter プラグイン
Movable Type のエントリーリストやコメントリスト、あるいはアーカイブリスト等で、例えば「リストの 3 番目からスタイルを変更したい」とか「偶数・奇数で色を変更したい」ということがあると思いますが、Movable Type で用意されているタグには残念ながらそのような機能はありません。*1
この「カウントする」という機能が必要な質問をひとつ頂いており、思案していたところ、有難いことにエムロジック株式会社様より下記のプラグインが公開されました。
エムロジック放課後プロジェクト:MovableType用Counter Plugin
これを使えば、リストでカウンタを必要とするカスタマイズ類はほぼ全て満足できるのではないかと思います。
2009.05.28 追記
Movable Type 4.1 以降であれば、標準テンプレートタグで実現できます(関連記事「Movable Type 4.1 / MTOS における変数での算術演算子の利用方法」)。
配布サイトのドキュメントで利用方法が説明されていますが、ここでもタグの基本的な設定方法とサンプルをいくつか紹介しておきます。ドキュメントに掲載されている、エントリータイトルだけを表示するというシンプルなリストを例にアレンジしていきます。
プラグインの導入方法は配布サイトをご覧ください。
基本は、カウントしたいリスト全体を MTCounter タグで括ります。
<MTCounter> <MTEntries> <$MTEntryTitle$><br /> </MTEntries> </MTCounter>- リスト1.1 MTCounter タグ
このプラグインは自律的にカウントアップする訳ではないので、リスト1.2 のように、カウンタ値を +1 更新したい場所に MTCounterPlus タグを挿入します。なおこのリストではまだ何も表示されません。
<MTCounter> <MTEntries> <$MTCounterPlus$> <$MTEntryTitle$><br /> </MTEntries> </MTCounter>- リスト1.2 MTCounterPlus タグ
カウンタ値を -1 更新したい場合は MTCounterMinus タグを挿入します。この場合は初期値を MTCounterSetValue タグで設定すると良いでしょう。
リスト1.3 はカウンタの初期値10でエントリータイトルを表示する毎にカウンタを -1 します(これもまだ何も表示されません)。
<MTCounter> <$MTCounterSetValue value="10"$> <MTEntries> <$MTCounterMinus$> <$MTEntryTitle$><br /> </MTEntries> </MTCounter>- リスト1.3 MTCounterMinus / MTCounterSetValue タグ
カウンタ値を表示する場合は MTCounterValue タグを用います。MTCounterSetValue タグを使わない場合のカウンタ初期値は 0 です。
リスト1.4 はエントリータイトルの後にカウンタ値を表示します。
<MTCounter> <MTEntries> <$MTCounterPlus$> <$MTEntryTitle$>[<$MTCounterValue$>]<br /> </MTEntries> </MTCounter>- リスト1.4 MTCounterValue タグ
リスト1.4 を実行(再構築)すると、MTCounterValue の部分に "1,2,3,4,5 ..." と表示されます。MTCounterValue の後方に MTCounterPlus が置かれていれば、"0,1,2,3,4 ..." と表示されます。
現在のカウンタ値と比較する場合は、MTCounterIfEqual タグで判定します。このタグに記述した value 属性の値とカウンタ値を比較します。
リスト1.5 は5番目のリスト表示の後に hr 要素を挿入します。
<MTCounter> <MTEntries> <$MTCounterPlus$> <$MTEntryTitle$><br /> <MTCounterIfEqual value="5"><hr /></MTCounterIfEqual> </MTEntries> </MTCounter>- リスト1.5 MTCounterIfEqual タグ
さらにカウンタ値との大小を比較する場合は MTCounterIfLess タグおよび MTCounterIfMore タグを用います。
リスト1.6 は、1-4番目のリスト、5番目のリスト、5番目以降のリストに、それぞれ異なる class 属性を与えています(分かりやすくするために span 要素全体を括っていますが class 属性あるいは class 属性値部分のみを括るという方法もあります)。
<MTCounter> <MTEntries> <$MTCounterPlus$> <MTCounterIfLess value="5"><span class="a"></MTCounterIfLess> <MTCounterIfEqual value="5"><span class="b"></MTCounterIfEqual> <MTCounterIfMore value="5"><span class="c"></MTCounterIfMore> <$MTEntryTitle$></span><br /> </MTEntries> </MTCounter>- リスト1.6 MTCounterIfLess / MTCounterIfMore タグ
カウンタ値の偶数・奇数によって表示を変える方法、および カウンタを n で割った余りが value 属性値と等しい時に表示する場合は、MTCounterIfOdd / MTCounterIfEven / MTCounterIfMod タグを利用します。サンプルは Counter プラグイン ドキュメントを参照してください。
*1:これに近い機能として、MTEntries タグの lastn 属性と offset 属性の組み合わせによる実現があります。
CommentOrderNumberByDescend プラグイン 1.04
先日公開した CommentOrderNumberByDescend プラグインをバージョンアップしました。
バージョンアップの内容は次の通りです。
- コメント内の MTCommentOrderNumberByDescend タグの重複設定に対応しました
- 複数エントリーアーカイブで利用するケースに対応しました
- MTComments タグに lastn 属性が付与されている場合、MTCommentOrderNumberByDescend で表示する初期値として、「コメント総数」あるいは「lastn値」のいずれかを選択できるようにしました(同一コメント内で両者を共存させることも多分可能)
設定方法の詳細等につきましては元エントリーを参照ください。
CommentOrderNumberByDescend プラグイン
Movable Type のコメントに対し、降順(大きい番号→小さい番号の順に並べる)に番号を付与するプラグインです。左スクリーンショットのコメント投稿者情報の一番左に表示されている番号がそうです。 |
エントリー・アーカイブで表示するコメント対して番号を付与するタグは MTCommentOrderNumber タグが用意されていますが、このタグを用いて、管理メニューの
[設定]-[表示に関する初期設定]
で、コメントの表示順序を「昇順」「降順」のいずれを選んでも、コメントが表示された順に
1、2、3、…
と番号が割り振られます。
降順・昇順に関わらず、一番古いコメントから「1、2、3、…」と割り振られるのが自然に思われますが、コメントを降順(新しいもの順)に並べて MTCommentOrderNumber タグを用いた場合、左のスクリーンショットのように、一番新しいコメントに「1」が付与されることになってしまいます。 |
このプラグインはコメント表示の降順・昇順に関わらず
…、3、2、1
と、降順に番号を割り振ります。
コメントを昇順に表示する場合は MTCommentOrderNumber タグ、降順に表示する場合は本プラグインを用いるとよいでしょう。いずれ トラックバック番号のMTタグも作ってみたいと思います。
以下、カスタマイズ方法です。
1.プラグインのダウンロード
下記のリンクよりプラグインアーカイブをダウンロードしてください。
CommentOrderNumberByDescend.zip
CommentOrderNumberByDescend.lzh
2006.10.25 1.03 lastn 属性追加
2006.10.21 1.02 1コメント内にタグを複数設定した場合の不具合修正
2006.10.17 1.01 バグ修正
2006.10.15 1.00 初版
2.プラグインのアップロード
プラグインアーカイブを解凍して、中にある CommentOrderNumberByDescend.pl を plugins ディレクトリにアップロードしてください。
管理画面の
メイン・メニュー > システム・メニュー > プラグイン
で使用中のプラグイン一覧が表示されますので、その中に「CommentOrderNumberByDescend バージョンx.xx」と表示されていればOKです。
3.タグ
このプラグインが提供するMTタグは
<$MTCommentOrderNumberByDescend$>
です。
下記にエントリー・アーカイブ/コメント・プレビューで用いる場合のサンプルを掲載します。
デフォルトテンプレート
<p class="comment-footer">
[<$MTCommentOrderNumberByDescend$>] 投稿者:
<$MTCommentAuthorLink default_name="匿名"$> <$MTCommentAuthorIdentity$> |
<a href="#comment-<$MTCommentID$>"><$MTCommentDate$></a>
</p>
公開テンプレート
<!-- コメント投稿者情報 -->
<p class="comment-footer">
[<$MTCommentOrderNumberByDescend$>] Posted by:
<$MTCommentAuthorLink default_name="Anonymous"$> <$MTCommentAuthorIdentity$> |
<$MTCommentDate$>
</p>
"[]"で括っているのは個人的趣味ですので、ご自由にアレンジしてください。
4.属性
MTCommentOrderNumberByDescend は下記の属性を設定できます。
lastn="[MTComments の lastn属性値]"
MTComments タグに lastn 属性を付与している場合、必ず MTComments の lastn 属性値と同じ値の lastn 属性を付与してください。また MTComments タグに lastn 属性を付与していない場合はこの属性を設定しないでください。
start_max="1|0"
lastn 属性を付与した場合、start_max 属性を併用することで、MTCommentOrderNumberByDescend で表示する初期値を「コメント総数」あるいは「lastn値」のいずれかを選択することができます。"1" を設定するとコメント総数、"0" を指定すると「lastn値」になります。デフォルトは「lastn値」です。
例えばあるエントリーに対するコメントが10件あり、lastn="5" と設定している状態で、start_max="1" とすれば、MTCommentOrderNumberByDescend は "10、9、8、7、6" となり、start_max="0" または設定しなければ、MTCommentOrderNumberByDescend は "5、4、3、2、1" となります。
5.制限事項
プラグイン処理の都合上、複数エントリー・アーカイブで MTCommentOrderNumberByDescend を利用し、かつ lastn 属性値に "1" を設定している場合、正常な表示の保証はできません。
2006.10.28 追記
4項および5項を追加しました。
Thumbnail プラグイン
MTタグに指定した画像ファイルからサムネイル画像を生成し、同時に img タグや画像リンクも生成する Movable Type プラグインを作りました。
Movable Type の既存機能として、ファイルアップロード時のサムネイル画像作成がサポートされていますが、このプラグインの特徴はエントリーに MTタグを直接書き込んで、img タグに変換し、アーカイブ別に元画像とサムネイル画像の表示振り分け機能を実現していることです。
1.設定イメージ
エントリーに、本プラグインで提供する MTThumbnail タグ
<$MTThumbnail file="hogehoge.jpg" width="150" height="100" alt="sample"$>
を記述すると、MTThumbnail タグは img タグ
<img src="http://domain/images/hogehoge_thumb.jpg" width="150" height="100" alt="sample" title="sample" />
に置き換えられ、アップロードした hogehoge.jpg のサムネイル画像 hogehoge_thumb.jpg を自動生成します。src 属性にはサムネイル画像のURLが設定されます。
また MTThumbnail タグにオプション属性でリンクの指定、例えば青色の
<$MTThumbnail file="hogehoge.jpg" width="150" height="100" alt="sample" link="image"$>
を記述すれば、生成された img タグに
<a href="[任意のURL]"><img src="http://domain/images/hogehoge_thumb.jpg" width="150" height="100" alt="sample" title="sample" /></a>
と、元画像のリンクタグを与えることもできます。
2.利用シーン
- ショッピングモール
- メインページやカテゴリー・アーカイブでサムネイル画像を表示、エントリー・アーカイブで元画像を表示。
- Photolog
- メインページにサムネイル画像をパーマリンクつきで表示し、エントリーアーカイブでは元画像を表示。
- 通常の画像表示用
- 全ページでサムネイル画像を表示。画像リンクには元画像のURLを指定して拡大表示。
3.主な仕様
- 本プラグインで提供する MTThumbnail タグに元画像の URL を指定することで、サムネイル画像を自動生成・保存します。
- エントリーを公開すると、MTThumbnail タグが img タグに変換され、src 属性に元画像の URL または、サムネイル画像の URL が埋め込まれます。
- 生成・参照するサムネイルファイル名は Movable Type のサムネイル生成機能のファイル名に準拠(拡張子の前に "-thumb" を付与)していますので、Movable Type のファイルアップロード時に生成したサムネイルを利用することができます。
- アーカイブタイプ(インデックス/カテゴリー・アーカイブ/月別アーカイブ/週別アーカイブ/日別アーカイブ/エントリー・アーカイブ)別に、元画像・サムネイル画像の選択表示を制御できます。
- サムネイル画像のサイズは、「高さ・幅指定」「幅指定」「高さ指定」「デフォルト」の4通りの設定が可能です。「幅指定」または「高さ指定」の場合、縦横比を固定してもう一方のサイズを自動算出します。
- サムネイル画像に元画像のリンクやパーマリンク、あるいは任意のリンクを与えることが可能です。
- 生成する img タグに各属性を設定することが可能です。
4.動作条件
本プラグインご利用にあたって下記の環境が必要です。
4.1 Perl モジュール
下記の Perl モジュールが必要です。さくらインターネット・スタンダードは大丈夫のようです。
Image::Magick
4.2 Movable Type プラグイン
下記のいずれかのプラグインがインストールされ、エントリー内でMTタグが使用可能な状態になっていることが必要です。
eval-template
Process Tags plugin
5.ドネーション
プラグインのご利用および質問に対する回答等について、ご支援・ご賛同くださる方からの寄付をお待ち申し上げます。
将来に向けてのご寄付(例:ドネーションによる機能追加や改善要望)は、それらが実現しない可能性があるため、ご遠慮ください。
- 現状のプラグインで役立った
- 質問の回答で疑問や不具合が解消された
- エントリーの修正等で要望内容が満たされた
等の後に判断して頂ければ結構です。
参考:Web投げ銭
上記の「寄付」のリンクをクリックすると Paypal によるお支払いページにジャンプします。
6.ダウンロード
下記リンクより Thumbnail.zip または Thumbnail.lzh をダウンロードし、アーカイブを解凍してください。
2006.08.01 Ver 1.00
2006.08.03 Ver 1.01 サムネイルファイル名修正、および link 属性に "permalink" 追加
2006.08.12 名称を「MTThumbnail」から「Thumbnail」に変更しました
2006.08.18 Ver 1.02 エラーチェックを強化しました
2006.08.24 Ver 1.11 元画像取得方法を変更
2006.08.26 Ver 1.12 サムネイル設定方法を変更
7.インストール
アーカイブを解凍すると中に Thumbnail フォルダがありますので、フォルダごと Movable Type の plugins ディレクトリにアップロードしてください(下記)。
- MTディレクトリ/plugins/Thumbnail/Thumbnail.pl
- MTディレクトリ/plugins/Thumbnail/tmpl/config.tmpl
管理画面のメイン・メニューの「利用可能なプラグインの設定」に「Thumbnail ?」が表示されればインストールOKです。プラグインの設定については次項以降を参照ください。
8.プラグイン設定
インストール後はプラグインの各設定が初期状態になっています。各設定をするには、ブログ別管理メニューの[設定]→[プラグイン]→[Thumbnail]の右側にある「設定を表示」をクリックして、下記の項目を設定後、「変更を保存」をクリックしてください。
- Thumbnail URL:
- 元画像およびサムネイル画像の URL を指定します。具体的には、次項の「Thumbnail path:」で画像ファイルの保存先を指定しますので、そのURLになります。
例えば、メインページのファイルがあるディレクトリ(トップディレクトリ)の直下に "images" というディレクトリを作成し、そこにサムネイル画像を保存するのであれば、指定する URL は「http://domain/images/」となります。
URLの最後はスラッシュをつけてください。
- Thumbnail path:
- 元画像およびサムネイル画像保存用のパスを指定します。パスの最後にスラッシュを付与しないでください。
このパスは予め作成しておいてください。またファイルを書き込めるよう、事前にパーミッションを変更してください。
- Thumbnail default size:
- サムネイル画像のデフォルトサイズです。MTThumbnail タグに width 属性および height 属性の両方が設定されていない場合のみ、この値が適用されます。
- 幅:サムネイル画像の幅を設定します。
- 高さ:サムネイル画像の高さを設定します。
- Thumbnail:
- サムネイル画像を表示したいアーカイブにチェックをつけます。チェックしないアーカイブには元画像が表示されます。
9.プラグイン利用手順
上記の設定完了後、下記の手順でエントリーしてください。
- 元画像を任意のディレクトリにアップロード
- MTThumbnail タグをエントリーに記述。src 属性には元画像の URL を記述し、その他必要な属性(10項参照)を記述。
- エントリーを公開保存
Movable Type のファイルアップロード機能を利用すれば、もう少し設定の手間が省けます。
- ファイルのアップロード機能で元画像およびディレクトリを指定して「アップロード」をクリック
- 次画面で「エントリーを投稿」を選択、「この画像のサムネイルを作る」にチェックしてサイズを設定し、「埋め込み」をクリック(サムネイルは Movable Type 側の機能で生成されます)
- img タグが埋め込まれたエントリーが表示されるので、"img" を "MTThumbnail" に書き換え、タグ末尾の "/" を削除。width・height をサムネイルの値に修正(もしくは削除)し、その他必要な属性(10項参照)を記述。
- エントリーを公開保存
インデックスおよび各アーカイブページで、プラグインの設定通りにサムネイル画像または元画像が表示されればOKです。
10.タグ・アトリビュート
注:1.11 より src 属性は file 属性に変更されています。
MTThumbnail タグは下記のタグ・アトリビュート(属性)をサポートしています。概ね img タグの属性をイメージしています。
- file
- 元画像のファイル名を設定してください。
- width
- サムネイル画像表示の幅を設定し、width 属性に反映されます。元画像表示の場合、この値は無視されて Image::Magick で取得した値を width 属性に反映します。
- height
- サムネイル画像表示の高さを設定し、height 属性に反映されます。元画像表示の場合、この値は無視されて Image::Magick で取得した値を height 属性に反映します。
- class
- class 属性値を設定した場合、img タグの class 属性に「設定した class 属性値+半角空白+アーカイブ名_[image|thumb]」が反映されます。class 属性値を設定しない場合、「アーカイブ名_[image|thumb]」が反映されます。
例えばメインページでサムネイルを表示する場合、class 属性の指定がなければ、img タグの class 属性は "index_thumb" となります。
- alt
- alt 属性および title 属性として反映されます。
- link
- link="image":img タグを a タグで括り、href 属性に元画像のURLが設定されます。
- link="permalink":img タグ a タグで括り、href 属性にパーマリンクのURLが設定されます。エントリー・アーカイブではパーマリンクは設定されません(パーマリンクを他のアーカイブに設定している場合はご注意ください)。
- link="lightbox":img タグ a タグで括り、href 属性に元画像のURLが設定されます。さらに rel 属性に "lightbox" を付与します。
- link="[url]":img タグに [url] で指定した、任意のURLを与えます。
元画像にはリンクの設定を行わないようにしていますが、ご要望がありましたらご連絡ください。
11.サムネイルの上書きについて
デフォルトでは一旦作成したサムネイルを上書きしない設定にしています。上書きする場合は、
our $overwrite = '0';
を
our $overwrite = '1';
にしてください。
12.FAQ
- Q:MTThumbnail タグがそのまま表示されますが?
- A:表示されたアーカイブに4.2項のプラグインが設定されていません。
- Q:再構築で「Can't call method "permalink" on an undefined value ? MTThumbnail.pl line xxx.」というエラーになりますが?
- A:4.2項のプラグインの設定(eval="1" または process_tag="1")を MTEntries タグではなく、MTEntryBody タグに設定してください。
以上です。
エラーチェック等、不完全な部分があるので暇をみてボチボチなおしていきます。
2006.08.03 追記
サムネイルファイル名を Movable Type 機能で生成するサムネイルファイル名に合わせました。また画像リンクにパーマリンクを設定可能にしました。
2006.08.18 追記
プラグインのエラーチェックを強化しました。
2006.08.22 追記
本文を若干修正しました。
2006.08.25 追記
プラグインを 1.11 にバージョンアップしました。またそれに伴う本文を修正。
ArchiveDateFooter プラグイン
ツリー表示にする場合は、本カスタマイズを実施した後、「月別アーカイブリストの年毎の折りたたみ for Movable Type」を行ってください。 |
1.機能
このプラグインは、MTArchiveList コンテナ・タグ(archive_type 属性が Monthly/Weekly)の中で、次に表示されるアーカイブと比較し、異なる年あるいは月であったときだけ内容を表示するコンテナ・タグを提供します。
このコンテナ・タグは archive_type 属性が Monthly および Weekly の場合のみ有効です。
2.作成の経緯
既存の ArchiveDateHeader プラグインを用いて、
<MTArchiveList archive_type="Monthly">
<MTArchiveDateHeader>
<p><MTArchiveDate format="%Y"></p>
</MTArchiveDateHeader>
<a href="<$MTArchiveLink$>"><MTArchiveDate format="%B"></a>
</MTArchiveList>
というリストを設置することで、例えば下記のような月別アーカイブリストを作成できます。
2006
6 5 4 3 2 1
2005
12 11 10 ...
しかしながら、このプラグインがサポートしているのは MTArchiveHeader タグのみのため、例えば月別アーカイブの場合、最後の表示月(上記の場合であれば2006年1月)の後に任意のタグを与えることができません。
したがって ArchiveDateHeader だけではリスト形式(ul -li)のマークアップを行うことができません。
ネットを検索すると、Movable Type Community Forum:ArchiveDateFooter? に、MTPerlScriptを使ってフッタを生成する記事がありましたが、勉強もかねて今回自作してみました。
3.ダウンロード
下記のリンクより ArchiveDateFooter プラグインアーカイブをダウンロードしてください。
2006.06.19 初版 2007.01.20 MTArchiveList の sort_order="ascend" に対応 2007.03.19 週別アーカイブでの不具合修正(「ダイナミック・パブリッシング対応 ArchiveDateFooter プラグイン」での指摘を反映)
4.インストール
ダウンロードしたアーカイブを解凍し、ArchiveDateFooter を plugins ディレクトリにアップロードしてください。下記の構成になればOKです。
3.x の場合
- plugins/ArchiveDateFooter/ArchiveDateFooter.pl
- plugins/ArchiveDateFooter/tmpl/config.tmpl
4.x の場合
- plugins/ArchiveDateFooter.pl
メイン・メニュー > システム・メニュー > プラグイン で ArchiveDateFooter Plugin が表示されていればOKです。特に設定する項目はありません。
MT3.x 版でプラグインを使用したくない場合は、各ブログの管理メニューより、「設定」→「プラグイン」→「ArchiveDateFooter Plugin」の右側にある「設定を表示」をクリックして「Configuration」のチェックを外し、「変更を保存」をクリックしてください。
MT4.x 版では「設定を表示」のリンクはありませんので、プラグインを利用しない場合は、システムメニューのプラグイン一覧で ArchiveDateFooter 自体を無効にしてください。
5.使用例
冒頭のスクリーンショットのようなリスト形式の月別アーカイブリスト(年月表示)は、下記のように設定します(サンプルリストはエントリー件数も表示するようにしています)。<MTArchiveList archive_type="Monthly">
<MTArchiveDateHeader><$MTArchiveDate format="%Y年"$><ul></MTArchiveDateHeader>
<li><a href="<$MTArchiveLink$>"><$MTArchiveDate format="%B月"$></a> [<$MTArchiveCount$>]</li>
<MTArchiveDateFooter></ul></MTArchiveDateFooter>
</MTArchiveList>
月を英語表記にする場合は language属性を追加します。
<MTArchiveList archive_type="Monthly">
<MTArchiveDateHeader><$MTArchiveDate format="%Y"$><ul></MTArchiveDateHeader>
<li><a href="<$MTArchiveLink$>"><$MTArchiveDate format="%B" language="en"$></a> [<$MTArchiveCount$>]</li>
<MTArchiveDateFooter></ul></MTArchiveDateFooter>
</MTArchiveList>
ラップするコンテナタグ MTArchiveList タグで sort_order 属性に acend を設定した場合には MTArchiveDateFooter タグにも同じ属性・属性値を設定してください。
<MTArchiveList archive_type="Monthly" sort_order="ascend">
<MTArchiveDateHeader><$MTArchiveDate format="%Y年"$><ul></MTArchiveDateHeader>
<li><a href="<$MTArchiveLink$>"><$MTArchiveDate format="%B月"$></a> [<$MTArchiveCount$>]</li>
<MTArchiveDateFooter sort_order="ascend"></ul></MTArchiveDateFooter>
</MTArchiveList>
2007.01.20 追記
MTArchiveList の sort_order 属性で ascend が設定された場合に対応しました。
2007.03.19 追記
週別アーカイブでの不具合を修正しました。
2007.07.08 追記
MT4 対応をリリースしました。
2008.07.28 追記
MT4.2 対応をリリースしました。
2008.09.12 追記
MT4.x のアップロード時の構成を追加しました。

投稿されたコメントに対しリプライをする際、「>hogehoge さん」という元コメント情報を表示することができる Movable Type プラグインです。また、元コメントへのページ内リンクも自動的に設定してくれます。
プラグイン一覧に「Simply Threaded」が表示されればOKです。
埋め込んだタグは、スクリーンショットのように「Reply」が表示されます。
前に設定した「Reply」のリンクをクリックすると、コメント投稿欄に追加したMTタグ(後述)の位置に、リプライ元の情報を引用するチェックボックスが表示されます。
Movable Type のコメントに対し、降順(大きい番号→小さい番号の順に並べる)に番号を付与するプラグインです。左スクリーンショットのコメント投稿者情報の一番左に表示されている番号がそうです。
降順・昇順に関わらず、一番古いコメントから「1、2、3、…」と割り振られるのが自然に思われますが、コメントを降順(新しいもの順)に並べて MTCommentOrderNumber タグを用いた場合、左のスクリーンショットのように、一番新しいコメントに「1」が付与されることになってしまいます。
Movable Type のプラグインを久しぶりに作成しました。このプラグインを利用することで、月別アーカイブを年別にリスト表示することができます。スクリーンショットはデフォルトテンプレートに適用した例です。
