马上注册,免费下载更多dz插件网资源。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在 discuz 模板中,我们经常会看到例如:- <!--{hook/global_header}--><!--{hook/index_top}--><!--{hook/viewthread_top}--><!--{hook/viewthread_postfooter $postcount}-->
复制代码 这样的语句,我们把hook 开头结构的语句,统称为嵌入点(俗称“钩子”),以方便插件应用通过该嵌入点,嵌入相关代码。
而在这里,我们将嵌入点分为了两种类型。一种是可直接嵌入的普通嵌入点;一种是需要遍历的遍历嵌入点。
一,普通嵌入点
是可以直接将PHP、html、css、js、jQuery等语句嵌入到该嵌入点的语句。普通嵌入点与 discuz 的变量一样,又分为:全局嵌入点、局部嵌入点。
全局嵌入点:所有页面都会出现的嵌入点,一般存在于 common文件夹中。如:common/header.htm 里出现的 <!--{hook/global_header}-->局部嵌入点:各个页面之间出现的嵌入点,这些嵌入点往往互不干涉。如:forum/discuz.htm 里出现的 <!--{hook/index_top}-->,仅在论坛首页显示
举例:当新建插件唯一标识符为:yulun_test 时:- <?php/** * (C)2010-2011 New PHP Support Forum * This is NOT a freeware, use is subject to license terms * * $Id: *****.class.php 2018-03-08 上官雨伦 $ */if(!defined('IN_DISCUZ')) { exit('Access Denied');}class plugin_yulun_test {}class plugin_yulun_test_forum extends plugin_yulun_test {}?>
复制代码 全局嵌入点需写在class plugin_yulun_test {}内局部嵌入点需写在class plugin_yulun_test_forum extends plugin_yulun_test{}内- class plugin_yulun_test { function global_header(){ }}class plugin_yulun_test_forum extends plugin_yulun_test { function viewthread_bottom_output(){ }}
复制代码 这样就可以把嵌入点内的部分嵌入到对应的嵌入点中了。
二,遍历嵌入点
这是一个比较特殊的存在,它往往出现在主题列表页、主题内容页这种 loop的数据中。比如在主题内容页中,包括一楼的主题以及往下的回复楼层中,都会出现一个 <!--{hook/viewthread_posttop $postcount}-->
如果直接在其中嵌入对应的比如pid,那么很明显是行不通的。这个时候,我们就需要换一种方式。
先来解析一下这个hook,它是存在于每一个楼层内,也就是说它是存在于 loop 的 $postlist 中,那么要想使得 pid 于楼层的pid对应,就需要先遍历一遍 $postlist,则- function viewthread_posttop(){ global $_G,$postlist; foreach ($postlist as $id=>$post){ $return[] = $post['pid']; } return $return;}
复制代码
©DZ插件网所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 网站部分内容来源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,得到更好的正版服务。 您在本站任何的赞助购买、下载、查阅、回复等行为等均表示接受并同意签订《DZ插件网免责声明协议》。 如有侵权请邮件与我们联系处理: discuzaddons@vip.qq.com 并出示相关证明以便删除。敬请谅解!
|
|