找回密码
 立即注册
快捷导航

discuz全局钩子失效问题

[复制链接]
dlsite 2024-4-18 06:07:05 | 显示全部楼层
本帖最后由 dlsite 于 2024-4-18 06:09 编辑

操作
制作模板时,需要修改默认common_header.htm的默认文件,并且可能一些地方需要调用不同的 common_header.htm,故将其改名为 common_header_任意名.htm,改名后出现问题;

问题
局部钩子正常、全局钩子失效

原因
discuz在内部生成模板缓存时,会检查 \source\class\class_template.php
大约45行:
$headerexists = preg_match("/{(sub)?template\s+[\w:\/]+?header\}/", $template);
大约78行:
$headeradd = $headerexists ? "hookscriptoutput('$basefile');" : '';

如果正则匹配,则会在模板缓存开头加入  hookscriptoutput('$basefile');   ,而我们改文件名后,正则无法匹配上,就不会加入这个hookscriptoutput ,所以也就无法走 output 和 全局 的hook了!

解决
模板文件改文件名时,格式务必为:common_任意名_header.htm ,这样正则就会匹配上,问题也就解决了;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

温馨提示

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

Archiver|手机版|小黑屋|DLSite

GMT+8, 2024-5-2 11:46

Powered by Discuz! X3.5 and PHP8

快速回复 返回顶部 返回列表