discuz插件开发怎么在模板中定义自己的嵌入点并输出内容

在插件开发中,会遇到需要把一些插件数据输出到模板的某个位置,可是系统自带的嵌入点又无法满足我们这个需求,这个时候就需要我们在模板中自定义一个嵌入点,并把插件数据输出到模板这个相应位置,要实现这个功能

我们先看下官方的文档

文档中涉及这部分功能的原文如下:

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

function CURMODULE_USERDEFINE[_output]()

CURMODULE 指明了此函数在哪个模块执行,可通过常量 CURMODULE 得到当前页面的 CURMODULE 值。 USERDEFINE 可自定义,如果函数名以“_output”结尾则会在模板输出前调用,否则会在模块执行前调用。 如:attachment_test() 函数会在论坛的下载附件的时候执行。 “_output”结尾的函数的第一个参数为数组,含义为 array('template' => 要输出的模板名, 'message' => showmessage 的文字) 如:以下函数将在登录的时候输出调试文字

function logging_test_output($a) {
	print_r($a);
	print_r($_POST);
}

 

 如果对discuz不太熟悉,通常看到这个会有点懵,我下面用一个简单的示例说明下

比如我们要向门户首页的模板中某个位置输出插件的数据

门户首页的链接通常是portal.php这样的,这样不容易看到CURMODULE 值,我们这样写portal.php&mod=index,后面加上这个参数,我们会发现访问还是门户首页,其实这个就是门户首页完整的路径了,

那门户首页的CURMODULE 值就是 “index”

如果想知道其他页面的CURMODULE 值是什么,可以在模板中写

<!--{eval debug(CURMODULE);}-->

这样就可以输出当前页面的CURMODULE 值了

我们获取了CURMODULE 值,就可以先自定义一个嵌入点名称了

<!--{hook/index_test}-->

这里index就是当前页面CURMODULE 值,test是你自己自定义的名称

定义完嵌入点名称,接下来我们就需要写hook.class.php文件中的内容了

<?php

if(!defined('IN_DISCUZ')) {
	exit('Access Denied');
}

class plugin_hl_test {
}

class plugin_hl_test_portal extends plugin_hl_test {
	function  index_ads(){
		//在这里输出插件数据
	}
}

上面文件中hl_test 为你的插件名称

上面plugin_hl_test_portal 为首页所在的模块名为portal

至此,就可以在模板中指定位置插入插件的数据了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值