虚位以待(AD)
虚位以待(AD)
首页 > CMS教程 > Discuz! > 详解Discuz插件开发之自定义页面嵌入点

详解Discuz插件开发之自定义页面嵌入点
类别:Discuz!   作者:码皇   来源:互联网   点击:

毫无疑问,作为一款成功的社区建站软件,Discuz在很多方面确实是花了功夫,尤其是是让数万开发者加入其中,可以这么说,现在Discuz的发展离不开这些第三方的开发者。Discuz应用中心之所以有这么多开发者,这得益于其 ,魔客吧

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

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

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

  1. $_config['plugindeveloper'] = 2;

可以这么说,这些自带的嵌入点已经帮我们考虑了大多数页面嵌入的场景。然而,我们同时做过插件开发及模版开发的童鞋可能就有体会,有时候当我们的某个插件和自己的某个模版整合后,我们希望在除默认嵌入点之外的位置放上额外的嵌入点。比如我们手机模版forumdisplay.htm这个文件中,有其中如下代码:

  1. <li>
  2. <!--{
    hook/forumdisplay_thread_mobile $key}
    -->
  3. <a href="forum.php?mod=viewthread&amp;
    tid=$thread[tid]&amp;
    extra=$extra"
    >
  4. <h6>{
    $thread[subject]}
    </h6>
  5. .......
  6. </a>
  7. </li>

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

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

函数名并不限于以上列表,您可以自定义,只要符合以下规则,函数就会在适当的地方被调用。

function CURMODULE_USERDEFINE[_output]()

CURMODULE指明了此函数在哪个模块执行,可通过常量 CURMODULE 得到当前页面的 CURMODULE 值。 USERDEFINE 可自定义,如果函数名以“_output”结尾则会在模板输出前调用,否则会在模块执行前调用。

其实很简单,意思就是只要是[脚本名_自定义名称]即可,而CURMODULE常量就是代表当前的脚本名称,比如论坛的首页的CURMODULE值应该是forum,不同页面中我们可以输出下常量就知道是什么,后面就是下划线,接着就是我们自定义的其他名称(建议这个名称是有意义的,让他人和你自己一看这个函数名称就知道这个插件大概干嘛,当然这也是通常的命名规则)。

一个实例

还是拿刚才最开始举的例子来说,就是那个说在手机页面的。这个页面就是手机版的主题列表页面,自定义的位置就是用来显示由插件读取出来的主题的前四张附件图片。对应的这个类的主体代码如下:

  1. //全局嵌入点类
  2. class mobileplugin_muquan_m_seting {
  3. //代码块
  4. }
  5.  
  6. //脚本嵌入点类
  7. class mobileplugin_muquan_m_seting_forum extends mobileplugin_muquan_m_seting{
  8. //读取前面四张附件图片的方法,用于显示在主题列表中
  9. public function forumdisplay_threadsimglist_output(){
  10. //代码块
  11. }
  12. //其他方法
  13. }

其中forumdisplay_threadsimglist_output这个方法就是为了自定义嵌入点而创造的,而其中的forumdisplay就是CURMODULE,threadsimglist就是USERDEFINE。在模版中的嵌入点为

  1. <!--{
    hook/forumdisplay_threadsimglist $key}
    -->

相信到这里,大家结合官方文档应该知道如何自定义前端点了,以上实例是我开发的的一个插件的部分代码,所以肯定是可以实现的的。如果在实践中遇到问题,欢迎留言或者联系我交流。

魔客吧温馨提示:在魔客吧有许多的精品 DZ模板 ,如果你有需要,那么赶快去下载吧!

分享到 更多 <script type="text/javascript" id="bdshell_js"></script><script type="text/javascript">document.getElementById("bdshell_js").src = "http://share.baidu.com/static/js/shell_v2.js?cdnversion=" + new Date().getHours();</script> 本文地址:http://www.moke8.com/article-21853-1.html
文章标题:详解Discuz插件开发之自定义页面嵌入点 收藏邀请 最新分享资源 包装材料生产线设备织梦模板

包装材料生产线设备织梦模板

dedecms模板 by moke 响应式淘宝美工摄影类织梦模板

响应式淘宝美工摄影类织梦模板

dedecms模板 by moke 响应式金属制品dedecms模板

响应式金属制品dedecms模板

dedecms模板 by moke 响应式无人机电子产品dede模板

响应式无人机电子产品dede模板

dedecms模板 by moke

最新评论

验证码 换一个 <script type="text/javascript" reload="1">updateseccode('SdvFyO80');</script>

相关分类

  • discuz教程
  • discuzx教程
  • phpwind教程
  • dedecms教程
  • phpcms教程
  • wordpress教程
  • ecshop教程
  • php168教程
  • shopex教程
  • 帝国cms教程

精品推荐

中英双语响应式电子企业织梦模板

精华 中英双语响应式电子企业织梦模板

dedecms模板 by moke

极品资源

高端建筑装饰带手机版十配色织梦模板

极品 高端建筑装饰带手机版十配色织梦模板

dedecms模板 by moke

原创模板

多配色创意metro风格企业

魔币 多配色创意metro风格企业

下载排行

  • 01包装材料生产线设备织梦模板

资源分类

企业网站模板 企业网站源码 个人网站模板 个人网页模板 手机wap网站 门户网站模板 商业源码 淘宝客程序 html5网站 网站后台模板 html网页模板 学校网站模板 <script type="text/javascript">var cookieLogin = Ajax("TEXT");cookieLogin.get("connect.php?mod=check&op=cookie", function() {});</script><script type="text/javascript">_attachEvent(window, 'load', getForbiddenFormula, document);function getForbiddenFormula() {var toGetForbiddenFormulaFIds = function () {ajaxget('plugin.php?id=cloudsearch&formhash=ea35ca3a');};var a = document.body.getElementsByTagName('a');for(var i = 0;i < a.length;i++){if(a[i].getAttribute('sc')) {a[i].setAttribute('mid', hash(a[i].href));a[i].onmousedown = function() {toGetForbiddenFormulaFIds();};}}var btn = document.body.getElementsByTagName('button');for(var i = 0;i < btn.length;i++){if(btn[i].getAttribute('sc')) {btn[i].setAttribute('mid', hash(btn[i].id));btn[i].onmousedown = function() {toGetForbiddenFormulaFIds();};}}}</script>

联系我们 | 关于我们 | 招商加盟 | 版权声明 | 帮助中心 | 广告服务 | 网站地图

欢迎浏览魔客吧提供的 详解Discuz插件开发之自定义页面嵌入点 信息,若本站中的信息侵犯了您的权益,请与本站管理员联系

Copyright @ 2010-2015 魔客吧 版权所有 蜀ICP备09014119号 川公网安备51050202000165号   <script type="text/javascript" src="http://tcss.qq.com/ping.js?v=1VERHASH" charset="utf-8"></script><script type="text/javascript" reload="1">pgvMain({"discuzParams":{"r2":"5238379","ui":0,"rt":"portal","pn":1,"qq":"000"},"extraParams":""});</script>

积分 0, 距离下一级还需 积分 <script type="text/javascript">_attachEvent(window, 'scroll', function(){showTopLink();});</script><script>(function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s);})();</script> <script type="text/javascript"> var tipsinfo = '5238379|X2.5|0.6||0||0|7|1526822228|f0dff264e3332463eb0d82b2206bd769|2'; </script> <script src="http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1" type="text/javascript" charset="UTF-8"></script><script type="text/javascript" src="https://idm-su.baidu.com/su.js"></script>
相关热词搜索: 详解Discuz插件开发之自定义页面嵌入点