全局模板变量注入
Filter_Plugin_Zbp_MakeTemplatetags 是 Z-BlogPHP 的生成模板标签接口,在 Zbp::PrepareTemplate() 创建模板对象、执行 MakeTemplateTags() 之后触发。回调拿到的是模板标签数组 $template->templateTags,可向其中注入或修改全局模板变量,注入后的变量在所有主题模板中以 {$变量名} 形式使用。该接口是早期预留的老接口,专用于修改 templateTags。
接口信息
| 接口 | 参数 | 说明 |
|---|---|---|
Filter_Plugin_Zbp_MakeTemplatetags | $template | Zbp 类的生成模板标签接口 |
完整案例
下例向全局模板标签注入插件名与构建时间,主题模板无需任何配合即可直接输出:
php
<?php
RegisterPlugin("demoAPP", "ActivePlugin_demoAPP");
function ActivePlugin_demoAPP()
{
Add_Filter_Plugin('Filter_Plugin_Zbp_MakeTemplatetags', 'demoAPP_Zbp_MakeTemplatetags');
}
function demoAPP_Zbp_MakeTemplatetags(&$templateTags)
{
// 注入全局模板变量,模板中以 {$demo_app_name}、{$demo_build_date} 使用
$templateTags['demo_app_name'] = 'demoAPP';
$templateTags['demo_build_date'] = date('Y-m-d');
// 也可以引用全局数据,保持变量随请求更新
$templateTags['demo_guest_ip'] = GetGuestIP();
}在主题模板任意位置写入 {$demo_app_name},前台即可输出 demoAPP。
注意事项
- 该接口属于运行期接口,随
$zbp->Load()每次请求都会触发(PrepareTemplate在每次加载时创建模板对象),注入的变量即时生效,无需重建模板; - 清单中的参数
$template实际传入的是$template->templateTags数组而不是Template对象,回调须声明为引用(&$templateTags)修改才能生效; - 回调没有返回值语义,仅通过修改
$templateTags数组起作用; - 系统已占用
zbp、user、option、lang、modules、title等标签名,注入变量请加插件名前缀避免冲突; - 如需在每次显示前注入仅当次请求有效的变量,或需要修改主题与模板目录,应改用
Filter_Plugin_Template_Display或Filter_Plugin_Zbp_PrepareTemplate接口。