プラグインを色々なページに表示する
概要
初期状態でエントリーのサイドバーに表示されているカレンダーを index.php/page/xxx
のページで表示させようとして、テンプレートのみを編集しても表示されません。
また、index.php/page/xxx
ページに表示させるためのプラグインを index.php/entry
のページで表示させようとして、テンプレートのみを編集しても表示されません。
このような場合、プラグインを設定ファイルを編集すれば任意のページに表示させることができます。
広告
詳細
特定のタイミングでプラグインを実行させる
初期状態でエントリーのサイドバーに表示されているカレンダーをページ(index.php/page/xxx
)でも表示させる場合を例に、具体例を紹介します。
エントリーのカレンダーを表示している箇所は、テンプレート templates/utility.html
にある
<div class="utility">
<h3>{$plugin_entry_calender_year}年{$plugin_entry_calender_month}月</h3>
<div class="content">
<table summary="カレンダー" class="calender">
<tr>
<th>日</th>
<th>月</th>
<th>火</th>
<th>水</th>
<th>木</th>
<th>金</th>
<th>土</th>
</tr>
~略~
</table>
<ul class="calender">
<li><a href="{$freo.core.http_file}/entry?date={$plugin_entry_calender_previous}">前の月</a></li>
<li><a href="{$freo.core.http_file}/entry?date={$plugin_entry_calender_next}">次の月</a></li>
</ul>
</div>
</div>
の部分です。これをページ表示用のテンプレート templates/page/default.html
に貼り付ければカレンダーが表示されそうですが、実際は表示されません。(中身がカラのカレンダーが表示されます。)
導入されたすべてのプラグインを常に実行していると負荷が増えていくため、プラグインは基本的に、特定のタイミングのみで表示されるように制限されています。
エントリーのカレンダーを表示するプラグインの場合
index.php
(index.php/default
)index.php/entry
index.php/category/xxx
index.php/view/xx
のようなURLでアクセスされた時のみに実行されるように設定されています。(index.php
は、freo内部のプログラムでは index.php/default
にアクセスされたとみなされます。)
こういった設定は、プラグインの設定ファイルに書かれています。設定ファイルは libs/freo/plugins/
内にある、config.
から始まるファイルです。エントリーカレンダー表示プラグインの設定ファイルは libs/freo/plugins/config.entry_calender.php
なので、これをテキストエディタで開きます。そうすると
//displayファイルの読み込み設定
define('FREO_PLUGIN_ENTRY_CALENDER_LOAD_DISPLAY', 'default,entry,category,view');
という箇所がありますが、これがプラグインの実行タイミングを制御している部分です。
コンマ区切りで default
・entry
・category
・view
という4つの値が指定されていますが、ここに page
を加えると、index.php/page/xxx
のようなURLでアクセスした時もプラグインが実行されるようになります。具体的には
//displayファイルの読み込み設定
define('FREO_PLUGIN_ENTRY_CALENDER_LOAD_DISPLAY', 'default,entry,category,view,page');
となります。同じ要領で、URLに応じた値を記述すれば任意のタイミングでプラグインを実行させることができます。
設定例1
エントリーのサイドバーに何かを表示させるプラグインを、ページ(index.php/page/xxx
)に表示させる方法です。
エントリーのサイドバーに何かを表示させるプラグインは、大抵の場合
//displayファイルの読み込み設定
define('FREO_PLUGIN_ENTRY_CALENDER_LOAD_DISPLAY', 'default,entry,category,view');
のように、default,entry,category,view
が設定されています。ですので page
を追加して
//displayファイルの読み込み設定
define('FREO_PLUGIN_ENTRY_CALENDER_LOAD_DISPLAY', 'default,entry,category,view,page');
とすれば、ページにも表示されます。
設定例2
ページに何かを表示させるプラグインを、エントリーのサイドバーに表示させる方法です。
ページに何かを表示させるプラグインは、大抵の場合
//displayファイルの読み込み設定
define('FREO_PLUGIN_PAGE_ALL_LOAD_DISPLAY', 'page');
のように、page
が設定されています。ですので default,entry,category,view
を追加して
//displayファイルの読み込み設定
define('FREO_PLUGIN_PAGE_ALL_LOAD_DISPLAY', 'page,default,entry,category,view');
とすれば、エントリーのサイドバーにも表示されます。
常にプラグインを実行させる
//displayファイルの読み込み設定
define('FREO_PLUGIN_ENTRY_CALENDER_LOAD_DISPLAY', 'default,entry,category,view');
のような設定部分でプラグインの実行タイミングを制限していますが、この部分を丸ごと削除すると、プラグインが常に実行されるようになります。すべてのページで実行したい場合は削除すればOKですが、複雑な処理をするプラグインの場合、負荷が高くなる可能性があるので注意してください。
特定のタイミングでプラグインを実行させない
これまで「特定のタイミングでプラグインを実行させる」方法を紹介してきましたが、「特定のタイミングでプラグインを実行させない」という設定もできます。例えば
//displayファイルの読み込み設定
define('FREO_PLUGIN_ENTRY_CALENDER_UNLOAD_DISPLAY', 'page');
と書くと、ページ(index.php/page/xxx
)以外で常にプラグインが実行されるようになります。LOAD
(読み込む)と書かれていた箇所が UNLOAD
(読み込まない)に変わっているので注意してください。
「管理ページ以外では常に◯◯を表示する」のように、一部のページ以外で常に何かを表示したい場合などに利用できます。