在Discuz!插件中使用DIY

Discuz!的DIY是一个非常强大的功能,可惜的是在插件模板中并没有提供这个功能,不过我们可以使用一些其他途径来实现。
    Discuz!引用模板是使用template函数生成模板缓存,并返回缓存的路径。通过该函数源码以及Discuz!源文件来看,只需要在模板路径前加入diy:既可以让该模板实现DIY功能。
    可惜的是,目前Discuz!并未让插件模板支持DIY,好在插件是可以调用系统模板的,那么基本思路就是,在插件的模板放在template/default目录中,然后使用template("diy:目录/模板文件");
    首先在template/default(这个是默认模板路径,如果你使用了第三方模板,也可以在对应模板文件夹中操作,当然推荐在default中操作,这样即使你换了模板,也不会有影响)中新建一个plugin目录(也可以用别的名字),然后将有需要用DIY的模板文件放在这个文件夹中,然后修改插件文件中引用模板的代码,将原有代码template("插件名:模板名")改成template("diy:plugin/模板名"),然后运行插件,在页面的右上角就出现了DIY操作的按钮了。
    当然,如果模板中没有对应的框架,那是无法进行DIY操作的。只需要在需要添入DIY数据的部分加入以下代码:
    <!--[diy=plugin]--><div id="plugin" class="area"></div><!--[/diy]-->
    这里的plugin可以改为任意名称,只要保证注释中的diy=xxxx和div中的id值相同,同时同一页面中值唯一便可。如果一个页面需要多个这样的DIY框,一定要注意区分好哦,一旦值重复了会导致页面出错的。
    今天在调试的时候发现一个问题,我修改了模板以后,页面无法更新,删除了data/template下的所有文件,在后台清除了数据缓存和DIY缓存都无法让页面更新,更诡异的是,我删除了原始模板文件依然能够生成缓存,而且缓存依然是原来的版本,今天纠结了挺久,后来在function_core.php中找到以下代码:
    template函数,第509行:
    $diypath = DISCUZ_ROOT.'./data/diy/'.$_G['style']['tpldirectory'].'/'; //DIY模板文件目录
    这下明了了,Discuz!还会为DIY的模板生成一个缓存文件,存放于“data/diy/template/模板目录/”中,只需要找到这个路径删除掉缓存文件让系统重新生成缓存便可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值