·设为首页收藏本站📧邮箱修改🎁免费下载专区🔐设置/修改密码👽群雄群聊
返回列表 发布新帖

详解 Discuz! 嵌入点使用方式

586 0
发表于 2020-9-22 09:40:01 | 显示全部楼层 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在 discuz 模板中,我们经常会看到例如:
  1. <!--{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 时:
  1. <?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{}内
  1. 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}--> 详解 Discuz! 嵌入点使用方式 详解,嵌入,使用,方式,discuz

如果直接在其中嵌入对应的比如pid,那么很明显是行不通的。这个时候,我们就需要换一种方式。
先来解析一下这个hook,它是存在于每一个楼层内,也就是说它是存在于 loop 的 $postlist 中,那么要想使得 pid 于楼层的pid对应,就需要先遍历一遍 $postlist,则
  1. function viewthread_posttop(){        global $_G,$postlist;        foreach ($postlist as $id=>$post){                $return[] = $post['pid'];        }        return $return;}
复制代码
我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图

您的IP:13.59.9.236,124.238.241.53,GMT+8, 2024-5-2 12:00 , Processed in 0.166189 second(s), 70 queries , Gzip On, Redis On.

Based on Discuz! W1.0 Licensed

© 2001-2024 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表