2009年02月28日
拡張フィールドでブログ記事を絞り込むプラグイン
MultiBlogを利用したMTEntryの中で特定のフィールドの値によってブログ記事を絞り込みたい場合、例えば「MTEntries lastn="9999"の中でMTIfタグで分岐させる」方法があります。
ただ、この方法では表示されるのはあくまでも特定条件を満たしたブログ記事だけですが、実際にはすべてのブログ記事がロードされるためテンプレートの再構築への負荷を考えると望ましくありません(再構築速度の面で不利です)。
そこで、Power CMS for MTの拡張フィールドによってブログ記事を絞り込み表示するプラグインを作成しましたので公開します(スタティック専用)。
インストール方法
plugins/PowerCMS/の中に「ExtendedEntries.pl」を設置してください。
インストール後にエラーが発生する場合
ExtendedEntries プラグインの設置後、一部環境でエラーが発生する場合があります。 エラーの内容は環境によって異なりますが、管理画面のログに以下のような内容が出力されることが共通します。
プラグインでエラーが発生しました: /var/www/cgi-bin/mt/plugins/ExtendedEntries/ExtendedEntries.pl Can't locate ExtFields/Extfields.pm in @INC (@INC contains: 省略 .) at /var/www/cgi-bin/mt/plugins/ExtendedEntries/ExtendedEntries.pl line 6. BEGIN failed--compilation aborted at /var/www/cgi-bin/mt/plugins/ExtendedEntries/ExtendedEntries.pl line 6. Compilation failed in require at lib/MT.pm line 1360.
このような場合はプラグインの設置方法を変える必要があります。
手順として、標準のプラグインディレクトリ (plugins) とは別に、新たにプラグインディレクトリ (例: plugins_customized) を用意し、そこに ExtendedEntries プラグインを設置します。 その際、plugins ディレクトリには (PowerCMS の)ExtFields プラグインが、plugins_customized ディレクトリには ExtendedEntries プラグインに配置します。 ファイル単位では ExtFields.pl と ExtendedEntries.pl が下記の配置関係を正しい配置となります。
/path/to/plugins/PowerCMS/ExtFields.pl /path/to/plugins_customized/ExtendedEntries/ExtendedEntries.pl
プラグインの設置後、mt-config.cgi に下記の記述を行います。
PluginPath /path/to/plugins PluginPath /path/to/plugins_customized
管理画面にログイン後、システムレベルのプラグイン設定画面で ExtendedEntries が一覧にあり、ログに ExtendedEntries プラグインのエラーが出ていなければ正しく設置されたと考えます。
使い方
例えば、画像のように「PowerCMS」という拡張フィールドを作成し、このフィールドにチェックが入っているブログ記事だけを表示したい場合、以下のようにテンプレートを記述します。
テンプレート
<MTExtendedEntries blog_ids="1,2" label="PowerCMS" eq="1" lastn="5" sort_by="authored_on" sort_order="descend">
<MTExtendedEntriesHeader>
<ul>
</MTExtendedEntriesHeader>
<li>
<a href="<MTEntryPermalink>"><MTEntryTitle></a>
</li>
<MTExtendedEntriesFooter>
</ul>
</MTExtendedEntriesFooter>
</MTExtendedEntries>
- カテゴリー
- テンプレート作成Tips
- プラグイン
コメントを投稿する