2014.01.15
1つのブログで、複数の検索結果テンプレートを出し分ける方法。
例えばレイアウトが違う2種類のブログ記事リストがあって、
検索フォームから検索したらそれぞれのレイアウトにあった検索結果を
表示させたいときなどに便利です。
検索フォームAで検索 → 検索結果テンプレートAで表示
検索フォームBで検索 → 検索結果テンプレートBで表示
という感じ。
■代替テンプレートを作成
まずは出し分けするもう1種類の検索結果テンプレートを作成します。
MTディレクトリの中に「search_templates」フォルダがあるので、
その中にある「default.tmpl」を複製します。
ここでは「test.tmpl」というファイル名にします。
■mt-config.cgi に記述
mt-config.cgi に、このテンプレートを使うための記述をします。
一番下に次のように追記してください。
SearchAltTemplate test test.tmpl
■検索フォームにタグを追加
代替テンプレートを使用したい検索フォームに、次の1行を追加します。
<input type="hidden" name="Template" value="test" />
<form>タグの真下あたりでOKです。
これでこの検索フォームからの結果は代替テンプレートで表示されるようになります!
例えばレイアウトが違う2種類のブログ記事リストがあって、
検索フォームから検索したらそれぞれのレイアウトにあった検索結果を
表示させたいときなどに便利です。
検索フォームAで検索 → 検索結果テンプレートAで表示
検索フォームBで検索 → 検索結果テンプレートBで表示
という感じ。
■代替テンプレートを作成
まずは出し分けするもう1種類の検索結果テンプレートを作成します。
MTディレクトリの中に「search_templates」フォルダがあるので、
その中にある「default.tmpl」を複製します。
ここでは「test.tmpl」というファイル名にします。
■mt-config.cgi に記述
mt-config.cgi に、このテンプレートを使うための記述をします。
一番下に次のように追記してください。
SearchAltTemplate test test.tmpl
■検索フォームにタグを追加
代替テンプレートを使用したい検索フォームに、次の1行を追加します。
<input type="hidden" name="Template" value="test" />
<form>タグの真下あたりでOKです。
これでこの検索フォームからの結果は代替テンプレートで表示されるようになります!
2013.12.18
MTで生成するページの文字エンコーディングを変更するCharsetEncoderプラグインですが、
ほぼ毎回といっていいほど実装するPageButeプラグイン(ページ分割プラグイン)と
合わせると上手く動きません。
それについては小粋空間さんのページで対処法を紹介されています。
PageButeプラグインにコードを1行追加するという簡単なものなのですが、
PageButeのバージョン3.4.2向けだったため最新のバージョン3.5.7(おそらく3.5.6以降)ではコードの追記場所が変わっているようでした。
で、プラグインが書けないなりに動く場所を探してみたのでメモしておきます。
■PageBute 3.5.7
580行目、
if($page_count == 1) {
の直前に
MT->run_callbacks('page_bute', \$output, %opt);
を追記。
$output =~ s/\Q$garbage{IFPAGENOEMPTY}\E|\Q$garbage{IFPAGENOEMPTY_END}\E//g;
の下なら大丈夫なんだろうと思います。
上述の通りだいぶ手探りなので、
もし、どこどこのほうが良いだとか、こうしないと上手く動かないよ、などがありましたら是非お知らせください。
ほぼ毎回といっていいほど実装するPageButeプラグイン(ページ分割プラグイン)と
合わせると上手く動きません。
それについては小粋空間さんのページで対処法を紹介されています。
PageButeプラグインにコードを1行追加するという簡単なものなのですが、
PageButeのバージョン3.4.2向けだったため最新のバージョン3.5.7(おそらく3.5.6以降)ではコードの追記場所が変わっているようでした。
で、プラグインが書けないなりに動く場所を探してみたのでメモしておきます。
■PageBute 3.5.7
580行目、
if($page_count == 1) {
の直前に
MT->run_callbacks('page_bute', \$output, %opt);
を追記。
$output =~ s/\Q$garbage{IFPAGENOEMPTY}\E|\Q$garbage{IFPAGENOEMPTY_END}\E//g;
の下なら大丈夫なんだろうと思います。
上述の通りだいぶ手探りなので、
もし、どこどこのほうが良いだとか、こうしないと上手く動かないよ、などがありましたら是非お知らせください。
2013.10.29
便利そうなプラグインのメモです。
有料なため今はメモだけですが・・。
■Movable Type用画像アップロード機能補助プラグイン ImageUploadUtility
http://skeleton.juxtaposition.jp/image-upload-utility/
画像アップロードに関する、様々な便利機能が使えるようになります。
中でも気になったのがマルチバイトリネーム機能。
日本語ファイル名でアップされるのを防ぐことができます!
この機能だけ、安価で利用できるようにならないものでしょうか。
有料なため今はメモだけですが・・。
■Movable Type用画像アップロード機能補助プラグイン ImageUploadUtility
http://skeleton.juxtaposition.jp/image-upload-utility/
画像アップロードに関する、様々な便利機能が使えるようになります。
中でも気になったのがマルチバイトリネーム機能。
日本語ファイル名でアップされるのを防ぐことができます!
この機能だけ、安価で利用できるようにならないものでしょうか。
2013.07.30
MTで書き出したファイルを別のドメインにアップするような場合、
http://から始まる<$mt:BlogURL$>や<$mt:EntryPermalink$>をそのまま使うことはできません。
そういうときに役立った記述をメモしておきます。
■サイトURLをルートパスで出力
<$mt:BlogRelativeURL$>
→ /blogurl/
■記事リストのURLをルートパスで出力
<$mt:BlogRelativeURL$><$mt:CategoryBasename$>/
→ /blogurl/category/
※階層数によって、<mt:ParentCategory>などを使って全ての階層を出力します
■記事のURLをルートパスで出力
<$mt:BlogRelativeURL$><$mt:EntryDate format="%Y/%m/"$><$mt:EntryBasename separator="-"$><$mt:BlogFileExtension$>
→ /blogurl/2013/07/basename.html
以上。
他にもあれば追記してきます。
http://から始まる<$mt:BlogURL$>や<$mt:EntryPermalink$>をそのまま使うことはできません。
そういうときに役立った記述をメモしておきます。
■サイトURLをルートパスで出力
<$mt:BlogRelativeURL$>
→ /blogurl/
■記事リストのURLをルートパスで出力
<$mt:BlogRelativeURL$><$mt:CategoryBasename$>/
→ /blogurl/category/
※階層数によって、<mt:ParentCategory>などを使って全ての階層を出力します
■記事のURLをルートパスで出力
<$mt:BlogRelativeURL$><$mt:EntryDate format="%Y/%m/"$><$mt:EntryBasename separator="-"$><$mt:BlogFileExtension$>
→ /blogurl/2013/07/basename.html
以上。
他にもあれば追記してきます。
MT
2013.03.26
MTのグローバルモディファイアで、"sanitize"というものがあります。
ブログ設定の「HTMLを許可」に当たるもので、1(有効)と0(無効)で
指定できるのですが、特定のタグ以外を取り除く使い方もできます。
<$mt:EntryBody sanitize="b,br"$>
上記のようにすると、bタグとbrタグを残し、
それ以外のHTMLタグは全て消去して出力されます。
あまり使っていませんでしたが、
事故防止に使えるかも?
ブログ設定の「HTMLを許可」に当たるもので、1(有効)と0(無効)で
指定できるのですが、特定のタグ以外を取り除く使い方もできます。
<$mt:EntryBody sanitize="b,br"$>
上記のようにすると、bタグとbrタグを残し、
それ以外のHTMLタグは全て消去して出力されます。
あまり使っていませんでしたが、
事故防止に使えるかも?




