学习NO.1 发表于 2016-6-28 15:10:42

教你一分钟实现Discuz可DIY数据的单页,discuz单页制作教程

本帖最后由 学习NO.1 于 2016-6-28 15:16 编辑

我们经常有这样的需求:想在根目录下创建几个独立的文件,实现跟DZ自带的那些东西相似页面;当然对于有一定编程基础的同学可能会觉得很容易,但对于更多的站长来说,如果让这个页面有DIY功能则是一件非常方便的事情了(DIY是dz自带的一个让代码盲也能拖拽实现模板的一种功能)。有朋友可能有一种错误的想法,那就是那根目录下的index.php来动刀子。
      实际上这种想法是错误的,如果那index.php来动刀子的话,那就未免太小题大做了,因为该文件是整个网站的起始页,也就是说它并不是某个特定的页面,当然portal.php和forum.php也是类似的。
      实际上该来怎么做呢?首先我给大家说一下理论的东西,那就是discuz是使用了PHP模板引擎的类,大家可以发现我们在dz的html模板文件中也会看到{loop}、{if}之类的代码,而这些代码显然不是html语法规范的,那为什么不会出现异常呢?原因就是PHP模板引擎让程序和模板分离,各干各的事情。比如我们在网站打开门户首页portal.php,除了这个主php文件外,一个极其重要的模板文件则位于当前模板目录/portal/index.htm(当然还有很多其他的文件来一起实现我们所能看到的效果以及用到的功能)。
      也就是说,对于我们这里说制作一个可diy的单页而言,主要就要两个文件,一个是php文件,一个则是模板的html文件,当然你也可以应用相同的模板,只是既然是单页那么我们还是把它独立起来好。现在就进入正题吧:
1、在根目录建立一个名为test.php的文件,当然名称随便你自己来定;在里面写入以下php代码:


<?php
define('CURSCRIPT', 'portal');//定义常量,用于body标签的id选择器名称,门户首页为该命名,可以更换,可选
define('CURMODULE', 'index');//定义常量,用于body标签的class(类)选择器名称,门户首页为该命名,可以更换,可选
require './source/class/class_core.php';//引入系统核心文件
$discuz = & discuz_core::instance();//以下代码为创建及初始化对象
$discuz->init();
loadcache('diytemplatename');
$navtitle = '这里定义单页的标题';//可选
$metakeywords = '这里定义单页的关键词';//可选
$metadescription ='这里定义单页的描述内容';//可选
include template('diy:portal/test');//调用单页模版文件,路径为当前模板目录/portal/test.htm
?>


2、当然是根据以上引用的文件路径建立一个test.htm的文件了(路径根据上面php文件中最后一行写入的路径),不知道怎么写?如果你是需要一个完全空白可以DIY的页面(当然有底部可以尾部),那么你直接复制index.htm的代码,dz默认的代码为:

<!--{template common/header}--><!--引用公共头部-->
<style id="diy_style" type="text/css"></style>
<div class="wp">
<!----><div id="diy1" class="area"></div><!----><!--一个可以diy的区域-->
</div>
<script src="misc.php?mod=diyhelp&action=get&type=index&diy=yes&r={echo random(4)}" type="text/javascript"></script>
<!--{template common/footer}--><!--引用公共底部-->


这就是一个最基础的可以diy单页的制作过程,就创建两个简单的文件,而且基础代码直接在这里复制进入就可以了,如果有代码基础的大家可以发挥自己的想象去修改。创建完成后,我们可以打开网站首页地址/test.php,如http://www.daoqin.net/test.php访问了,结果就是跟我们刚刚安装好dz后的门户首页一样。
页: [1]
查看完整版本: 教你一分钟实现Discuz可DIY数据的单页,discuz单页制作教程