Z-Blog 主题的 include.php:能干什么、不能干什么

· zblog · 阅读 8
摘要

一个 Z-Blog 主题目录里通常有模板、style.css、theme.xml,还有一个容易忽略的 include.php。它在主题启用时被加载,是主题唯一能挂 PHP 钩子的地方。它适合做的事注册自定义侧栏模块挂 Filter 钩子改写

一个 Z-Blog 主题目录里通常有模板、style.css、theme.xml,还有一个容易忽略的 include.php。它在主题启用时被加载,是主题唯一能挂 PHP 钩子的地方。

它适合做的事

  • 注册自定义侧栏模块
  • 挂 Filter 钩子改写前台输出
  • 注入自定义 CSS/JS 的版本号
  • 注册主题自己的配置项

它不该做的事

  • 不要直接操作数据库建表,除非你同时写了卸载清理逻辑,否则主题被删后表会永远留着
  • 不要在这里做重计算,每次请求都会走到,会拖慢整站
  • 不要覆盖全局变量例如 $zbp->option,会影响后台

一个安全的最小写法

<?php
if (!defined('ZC_IN_ZBP')) exit;

function theme_mycss_hook(){
    global $zbp;
    echo '<link rel="stylesheet" href="' . $zbp->host . 'zb_users/theme/你的主题/style/custom.css?v=' . $zbp->theme->version . '">' . "\n";
}
$zbp->Add_Filter_Plugin('Filter_Plugin_Zbp_MakeTemplatetags','theme_mycss_hook');

注意第一行的常量判断:没有它,别人直接访问这个文件会看到一段裸 PHP 报错。

主题被换掉之后

Z-Blog 切换主题会重新加载新主题的 include.php,旧主题挂的钩子自然失效,所以不用担心冲突。但如果你在 include.php 里写过 register_shutdown_function 或者启动过定时任务,那些东西不会自动停,需要自己处理好。