Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

hook功能与模版文件名的关联问题

[复制链接]
Freeng 发表于 2012-10-28 22:27:45 | 显示全部楼层 |阅读模式
本帖最后由 Freeng 于 2012-12-6 12:09 编辑

模版中对门户首页和其他也使用了不同的头部模版文件,故文件名不同,分别为Header.htm,header_portal.htm
经测试使用非header名称的header_portal头部模版的页面Hook调用无效,包括全局Hook和脚本hook,包括如global_footer

应该是function_core.php 当中 function template $file变量相关语句导致的,功力不够,不会改,希望官方进行优化。

顺便问下抓虫为毛没有奖励机制呢 囧

临时解决办法
用统一判断的方法,举例:某个页面使用header_portal作为头部引入文件,另外一个页面使用header_forum作为头部引入文件,则新建一个header.htm文件,内部不放任何内容只做页面判断,再引入对应模板.
举例如下
<!--{if $_G['basescript'] == 'portal' && empty($_G['gp_mod'])}-->
<!--{subtemplate common/header_portal}--><!--{else}--><!--{subtemplate common/header_forum}-->
<!--{/if}-->

这里是思路,具体内容请根据自身情况自主构造

斑竹同志可以结贴了.
m.king 发表于 2012-10-29 15:07:14 | 显示全部楼层
你是怎么调用的啊?我看下你的做法是否正确。
回复

使用道具 举报

 楼主| Freeng 发表于 2012-10-29 18:23:21 | 显示全部楼层
本帖最后由 Freeng 于 2012-10-29 18:24 编辑
m.king 发表于 2012-10-29 15:07
你是怎么调用的啊?我看下你的做法是否正确。

矮油,测试过了才来发帖,目前我调整了模版文件,使用默认名称避开了问题。使用问题我会发到使用求助板块的。

但是这个问题是由于核心代码造成的所以来提交一下
简单的说就是如果任意页面的模版中,头部引入的不是header.htm文件,例如说引入header_test.htm作为头部文件,不管文件的内容是什么,hook机制都不能实现
原因是相关函数没有作调用文件的判断,使用了默认的header名称。
代码太复杂没分析完,解决方案的话一个是分离hook机制与header.htm模版文件的关联,二是增加调用文件的判断。
回复

使用道具 举报

我是wxd 发表于 2012-11-12 13:20:13 | 显示全部楼层
我也遇到了类似的问题,哪怕是直接复制header.htm,什么都不作修改,只是重命名下,插件也调取不出来的。
回复

使用道具 举报

5gss.cn 发表于 2012-11-14 17:36:27 | 显示全部楼层
先要做变量声明
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-3-1 20:29 , Processed in 0.028873 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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