Discuz!X 插件打造教程(三) - 页面嵌入 & 导航

Discuz!X 插件制作教程(三) ------ 页面嵌入 & 导航

    现在我遇到一个问题:我想更改自己网站的页面内容,比如我希望能在不使用二次开发更改系统模板的情况下来更改部分布局和内容,我应该怎么做?    似乎现在的DX很强大,但是这样的功能它支持么?很高兴地告诉你:你完全可以做到!你甚至可以通过自己的内容来对页面的任意一部分内容进行更改,这就是DX插件最最强大的地方,当然前提是你需要去了解它。
    现在我们来实现一个内容,我们以我自己的一个插件:帖子导读的显示部分为例。
    首先,我们需要了解DX的一个概念:嵌入点。
    在每个标准的DX页面都有一些DX已经设定好的嵌入点,要查看这些嵌入点,我们需要对系统的代码进行一些修改,方法如下:

查找 source/class/class_template.php 中找到以下代码,去除 //for Developer 注释后,更新缓存即可查到。
$dev = '';//for Developer $dev = "echo '[$hookid]';";
   更新一下缓存,然后你就会看到如下图的内容:Discuz!X 插件打造教程(三) - 页面嵌入 & 导航 
    帖子导读需要我们在每个页面都进行调用,我们需要编写一个调用类:
Discuz!X 插件打造教程(三) - 页面嵌入 & 导航 

    同样,我们需要在我们的插件目录下来编写这个插件了,在这里,我们以我们最常见的方式来写一段JS代码:HELLO,WORLD!
<?php
if(!defined('IN_DISCUZ')) {

exit('Access Denied');
}
class plugin_mtest{

function global_footer(){

return '<script language="javascript"> alert("Hello,world!"); </script>';

}
}
?>
   保存这个文件为:source/plugin/mtest/m.class.php 假定mtest是你的标识符,然后更新缓存,再点击你的广场页面试试,看看有什么奇迹发生。
    关于具体的嵌入调用规则,这里无法完全讲解给您,您可以参考:http://www.bbsapp.com/PluginDevloper/ 来帮助您了解。当然,您也看到了,您可以随意地输出您想要的JS代码,这也就是意味着,即使在一些没有嵌入点的地方,您也可以同输出的JS代码来改变您想作出的改变,当然,嵌入点能做的远远不止如此,那得看您能想到多少了。
    现在,您基本上已经可以做常用的插件了。不过,如果您需要一个导航栏怎么办?天啊!我需要一个类似于每日签到 这样的一个签到页面,我应该怎么来做呢?
    不用着急,接下来我们就来实验一个导航栏,然后进去之后输出一个hello,world的代码。
    首先,我们需要在设计模块里面增加一个导航栏
Discuz!X 插件打造教程(三) - 页面嵌入 & 导航 
    有了它,我们就可以写:mtest.inc.php这个文件了,不过我们似乎还需要一点点模板的支持,那么我们在这个文件夹下,新建一个文件夹:template,然后在它的下面新建一个文件:mtest.htm,内容如下:
{template common/header}
<p>HELLO,WORLD!!!!</p>
{template common/footer}
   在mtest.inc.php这个文件里,我们写入:
<?php
if(!defined('IN_DISCUZ')) {

exit('Access Denied');
}
include template("mtest:mtest");
?>
   然后,更新一下缓存,然后刷新一下站点首页,看看有什么效果?
Discuz!X 插件打造教程(三) - 页面嵌入 & 导航 

hello,world!


Discuz!X 插件打造教程(三) - 页面嵌入 & 导航 

导航栏


Discuz!X 插件打造教程(三) - 页面嵌入 & 导航 

最后的现实


    怎么样,是不是很棒?你可以浏览我的以下插件来学习如何使用插件:


    1. 每日签到 http://www.discuz.net/thread-1703440-1-1.html


    2. 帖子导读 http://www.discuz.net/thread-1799341-1-1.html

 

海口论坛