テンプレートの挿入
拡張アプリで様々な拡張をする場合、プログラムだけではなく管理ページを拡張したい場合があると思います。例えば、モジュールID化したいため、モジュール選択肢のテンプレートを拡張したい、拡張アプリ用の管理画面ページ(コンフィグページ)を作りたいなどです。
テンプレートの挿入方法
テンプレートを挿入するためには、ServiceProviderの initメソッド で 挿入処理を書く必要があります。
例: extension/plugins/SamplePlugin/ServiceProvider.php
<?php namespace Acms\Plugins\SamplePlugin; use ACMS_App; use Acms\Services\Common\InjectTemplate; class ServiceProvider extends ACMS_App { /* 省略... */ /** * サービスの初期処理 */ public function init() { $inject = InjectTemplate::singleton(); $inject->add('admin-module-select', PLUGIN_DIR . 'SamplePlugin/template/module-select.html'); } /* 省略... */ }
ポイント
Acms\Services\Common\InjectTemplate のオブジェクトを
$inject = InjectTemplate::singleton();
で取得して addメソッド でテンプレートを挿入します。
$inject->add('挿入先', 'テンプレートのパス');
- 第一引数: 挿入先の識別子
- 第2引数: 挿入するテンプレートパス(PLUGIN_DIR定数 を使うと便利です)
挿入先の仕込み
テンプレートはどこでも挿入できるわけではなく、挿入先に仕込みがされています。
例えば、モジュールIDのセレクトの選択肢のテンプレート(themes/system/admin/module/select.html)を見ると以下のような記述があります。
<!-- BEGIN_MODULE Admin_InjectTemplate id="admin-module-select" --><!-- END_MODULE Admin_InjectTemplate -->
この Admin_InjectTemplateモジュール の id に指定されている識別子が、テンプレートを挿入するときに使う Acms\Services\Common\InjectTemplate の addメソッド の第一引数に指定されます。
挿入先一覧
識別子 | 挿入先パス | 説明 |
---|---|---|
admin-main | themes/system/admin.html | 管理ページのメインHTMLを追加 |
admin-action | themes/system/admin/action.html | アクションボックスに追加 |
admin-topicpath | themes/system/admin/topicpath-list.html | 管理画面のトピックパスを追加 |
admin-module-select | themes/system/admin/module/select.html | モジュールIDの選択肢を追加 |
admin-module-config-%{MODULE_NAME} | themes/system/admin/module/edit.html | モジュール編集ページに追加。%{MODULE_NAME} はモジュール名に変更する。 例: Sampleモジュール -> admin-module-config-Sample |
admin-form | themes/system/admin/form/edit.html | フォームID編集ページに追加 |
admin-entry-field | themes/system/admin/entry/edit.html | エントリーのカスタムフィールドを追加 |
admin-entry-field-foot | themes/system/admin/entry/edit.html | エントリーのカスタムフィールドを追加 |
admin-category-field | themes/system/admin/category/edit.html | カテゴリーのカスタムフィールドを追加 |
admin-blog-field | themes/system/admin/blog/edit.html | ブログのカスタムフィールドを追加 |
admin-user-field | themes/system/admin/user/edit.html | ユーザーのカスタムフィールドを追加 |