模板下拉自定义
Filter_Plugin_OutputOptionItemsOfTemplate 是 Z-BlogPHP OutputOptionItemsOfTemplate() 函数内的接口,该函数扫描当前主题已载入的模板文件,生成"模板名 => 显示文本"的候选数组后输出模板选择 select 下拉(文章编辑页选择正文模板、分类与页面设置等场景)。系统默认已排除 header、footer、comment、sidebar、post- 前缀等内部模板,接口可在最终输出前再做调整。
接口信息
| 接口 | 参数 | 说明 |
|---|---|---|
Filter_Plugin_OutputOptionItemsOfTemplate | $default, $tz | 定义 OutputOptionItemsOfTemplate 函数里的接口 |
完整案例
下例从可选模板列表中隐藏指定的模板文件:
php
<?php
RegisterPlugin("demoAPP", "ActivePlugin_demoAPP");
function ActivePlugin_demoAPP()
{
Add_Filter_Plugin('Filter_Plugin_OutputOptionItemsOfTemplate', 'demoAPP_OutputOptionItemsOfTemplate');
}
function demoAPP_OutputOptionItemsOfTemplate($default, &$tz, $refuse_file_filter, $accept_type)
{
// $tz 的键为模板文件名(不含扩展名),按引用修改即可
$hidden = array('single-demo', 'page-demo');
foreach ($hidden as $name) {
// 不影响当前正在使用的模板,避免编辑时无对应选项
if ($name != $default) {
unset($tz[$name]);
}
}
}启用插件后,single-demo 与 page-demo 两个模板不再出现在后台的模板选择下拉中(除非它们正是当前值)。
注意事项
- 该接口属于输出期接口,在后台渲染模板选择下拉时触发,仅影响下拉显示,不校验提交值;
- 源码调用处实际传入
$default, $tz, $refuse_file_filter, $accept_type四个参数,比清单多出后两个(函数自身的拒绝过滤与接受类型参数); $tz是"模板名 => 显示文本"数组,当前模板会带[当前模板]前缀,须声明为引用(&$tz)修改才能生效;- 若注册时指定
PLUGIN_EXITSIGNAL_RETURN,回调返回值会直接替代整个下拉输出; - 候选列表来自
$zbp->template->templates(即主题模板目录与系统预置模板),模板文件增删后需重建模板才会反映到列表中。