设为首页收藏本站

IITT网络服务中心

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3621|回复: 0
打印 上一主题 下一主题

[开发手册] 详解Discuz插件开发之自定义页面嵌入点

[复制链接]

453

主题

399

帖子

1764

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1764
跳转到指定楼层
楼主
发表于 2018-3-22 13:12:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

毫无疑问,作为一款成功的社区建站软件,Discuz在很多方面确实是花了功夫,尤其是是让数万开发者加入其中,可以这么说,现在Discuz的发展离不开这些第三方的开发者。Discuz应用中心之所以有这么多开发者,这得益于其本身的便捷性,让具备技术功底的开发者能够较快上手对其进行二次开发。

做过Discuz二次开发的童鞋都知道,我们所需要做的就是增加templat和plugin目录,也就是通过自定义的插件和模版来改造属于我们自己个性化的Discuz。而插件开发中不可以不得不提的就是插件嵌入点(hook)了,类似的其他开源程序也有类似的概念,就比如说WordPress其实也有。

我们知道Discuz默认情况下有许多自带的嵌入点,我们可以在config/config_global.php加入如下代码后在网站的前台查看各个自带嵌入点的位置:

  1. <font color="rgb(85, 85, 85)"><font style="font-size: 15px">$_config['plugindeveloper'] = 2;</font></font>
复制代码
可以这么说,这些自带的嵌入点已经帮我们考虑了大多数页面嵌入的场景。然而,我们同时做过插件开发及模版开发的童鞋可能就有体会,有时候当我们的某个插件和自己的某个模版整合后,我们希望在除默认嵌入点之外的位置放上额外的嵌入点。比如我们手机模版forumdisplay.htm这个文件中,有其中如下代码:
  1. <li>
  2. <!--{hook/forumdisplay_thread_mobile $key}-->
  3. <a href="forum.php?mod=viewthread&tid=$thread[tid]&extra=$extra">
  4. <h6>{$thread[subject]}</h6>
  5. .......
  6. </a>
  7. </li>
复制代码

这里官方的默认嵌入点已经给了我们在这条记录上方的一个嵌入点,这个嵌入点可以让我们通过插件来操作这一部分内容。但我们有时候想在h6的下方嵌入内容,那怎么办呢?当然不是一定需要自定义嵌入点,各位民间开发者自然有自己的神奇的技巧,但我只想说如果有自定义嵌入点该多好啊。


我们能想到,那就意味着Discuz可能已经做到。没错!确实做到了,从其官方文档(传送门)我们可以知道是支持自定义嵌入点的,而且实现起来非常简单。但是据了解,部分人看文档的时候可能会觉得文档不好理解,有时候甚至搞半天才成功执行。文档原文为:

  1. <font color="rgb(85, 85, 85)"><font style="font-size: 15px">函数名并不限于以上列表,您可以自定义,只要符合以下规则,函数就会在适当的地方被调用。
  2. function CURMODULE_USERDEFINE[_output]()
  3. CURMODULE指明了此函数在哪个模块执行,可通过常量 CURMODULE 得到当前页面的 CURMODULE 值。 USERDEFINE 可自定义,如果函数名以“_output”结尾则会在模板输出前调用,否则会在模块执行前调用。</font></font>
复制代码
其中forumdisplay_threadsimglist_output这个方法就是为了自定义嵌入点而创造的,而其中的forumdisplay就是CURMODULE,threadsimglist就是USERDEFINE。在模版中的嵌入点为
  1. <!--{hook/forumdisplay_threadsimglist $key}-->
复制代码
相信到这里,大家结合官方文档应该知道如何自定义前端点了,以上实例是我开发的的一个插件的部分代码,所以肯定是可以实现的的。如果在实践中遇到问题,欢迎留言或者联系我交流。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|IITT网络服务中心    

GMT+8, 2024-4-30 04:24 , Processed in 0.075936 second(s), 24 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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