一、discuz X2添加新模块
1、入口文件
根目录下new.php
主要代码:
<?php
// 定义应用 ID 全局记录当前用户所在位置,不需要可定义为0 不要省略
define('APPTYPEID', 0);
define('CURSCRIPT', 'new');
//====================================
// 基础文件引入
//====================================
require './source/class/class_core.php';
$discuz = & discuz_core::instance();
//====================================
//模块定义以及模块缓存定义
//====================================
$modarray = array('list', 'publish','del','edit');
// 判断 $mod 的合法性
$mod = !in_array($discuz->var['mod'], $modarray) ? 'list' : $discuz->var['mod'];
//定义当前模块常量
define('CURMODULE', $mod);
//====================================
// 加载核心处理,各程序入口文件代码相同
//====================================
$discuz->init();
//====================================
// 以下内容由各个模块根据需要自行撰写程序运行环境
// 位于核心处理与mod加载之前,可以处理一些各mod共用的一些数据,或入口权限判断等...
// 由于本功能只需要游客做发布的限制,所以判断就要放到module/mood/publish.php中去了。
//====================================
//===================================
//加载 mod
//===================================
require DISCUZ_ROOT.'./source/module/new/new_'.$mod.'.php';
?>
2、程序文件
./source/module/new/new_*.php
主要代码:
<?php
// mod文件只能被入口文件引用,不能直接访问
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
include_once template("new // new::* 代表 例如:new::list
#ct h1.mt{ color:#F00;}
.bm a,p{ padding-left:30px;} ///中间为该模板文件的css的代码 如果没有反应跟新后台的缓存
5、图片路径
./static/image/new/ new这个名字可以自己起
调用 例如: <img src="{STATICURL}image/new/1.jpg" alt="kyoercy" /> {IMGDIR}表示static/image/common/ 目录下的图片
补充: {TPLDIR}表示 ./template/default 下的模板文件
{CHARSET} 编码格式
6、js调用 和图片一样 new这个名字可以自己起
./static/js/new/
调用 例如:<script type="text/javascript" src="{$_G[setting][jspath]}new.js?{VERHASH}"></script>
或者 <script type="text/javascript" src="{STATICURL}/js/new.js"></script>
二、Discuz X2 DIY自定义框架
DZ默认DIY 框架中没有2:3 和4:1的比例的框架,但这两种比例的框架用的越来越多,现在说一下,我是怎么制作2:3和3:2的DIY框架的
主要修改文件有三个:common.css css_diy.css header_diy 都在模板文件夹中。
按照 3:1比例的DIY框架的 仿照它修改,用编辑器查找frame-3-1 只要查找到 我们就放找它在后面增加frame-3-2,就这么简单,另外还要增加两张图片图片命名也仿照着修改,图片放在/static/image/diy 路径的文件夹中。
三、为自己的程序模板添加diy功能
1、程序部分
// 这三句是给自己的程序添加diy
loadcache('diytemplatename');
$cachelist = array('yourcache', 'diytemplatelist');
$discuz->cachelist = $cachelist;
include_once template("diy:mood/list"); //模板调用并且支持diy设计而通常的调用可以不加diy:
2、模板部分
<!--[diy=diyid]--><div id="diyid" class="area"></div><!--[/diy]-->
需要注意的是: diyid前后要一致,并且如果要在页面中添加多个diy拖动块要保证diyid不相同才可以。
四、常用模板
common 公共模板文件(头部、底部文件等)
forum 论坛模板(discuz.htm)
group 群组模板 (index.htm)
home 家园模板 (space_home.htm)
member 用户操作模板 (用户登录注册以及用户中心等)
mobile 手机
portal 门户模板
ranklist 排行榜模板 (ranklist.htm)
五、广告位调用
自定义广告 例如:添加自定义的广告位点击内部调用复制代码<!--{ad/custom_1}-->然后添加的前台即可
六、内置模块的调用
进入后台--门户--模块管理--数据调用--点击添加(也可以自己修改模块模板)然后保存点击内部调用复制代码粘贴到需要调用的页面即可
七、内置幻灯的样式的修改
首先是数字的位置修改 找到文件 /static/js/common_extra.js
修改589,590行代码 this.slidebar.style.top = '4px';
this.slidebar.style.left = '5px'; 找不到可以查找
修改样式找到文件 /template/default/common/common.css
可以查找幻灯片找到该位置的代码修改这里的代码即可
八、发帖页面
/template/default/forum/eidtor_ajax.htm
/template/default/forum/post_activity.htm
/template/default/forum/post_debate.htm
/template/default/forum/post_editor_extra.htm
/template/default/forum/post_poll.htm
/template/default/forum/post_trade.htm
九、友情链接调用
$_G['cache']['forumlinks'][2] 其中数字2是代表友情链接的分组 分别为分组1(0)分组2(1)分组3(2)分组4(3)
十、修改一个分页方法给大家分享
文件 source/function/function_core.php 1607行可找到该方法替换下面内容即可
function simplepage($num, $perpage, $curpage, $mpurl,$page,$maxpage) {
$return = '';
$lang['next'] = lang('core', 'nextpage');
$lang['prev'] = lang('core', 'prevpage');
$first="<li><a href=".$mpurl."page=1>第一页</a></li>";
$end="<li><a href=".$mpurl."page=".$maxpage.">末页</a></li>";
$from=$curpage-ceil($maxpage*0.5)<0?$curpage:$curpage-($curpage-ceil($maxpage*0.5)+1);
$to=($curpage+$page)>$maxpage?$maxpage:($curpage+$page);
$next = $num == $perpage ? '<li><a href="'.$mpurl.'&page='.($curpage + 1).'">'.$lang['next'].'</a><li>' : '';
for($i = $from; $i < $to; $i++) {
$multipage .= $i == $curpage ? '<li><a class="in" href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : $a_name).'"'.$ajaxtarget.'>'.$i.'</a></li>' :
'<li><a href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : $a_name).'"'.$ajaxtarget.'>'.$i.'</a></li>';
}
$prev = $curpage > 1 ? '<li><a href="'.$mpurl.'&page='.($curpage - 1).'">'.$lang['prev'].'</a></li>' : '';
if($next || $prev) {
$return = '<div class="page"><ul>'.$first.$prev.$multipage.$next.$end.'</ul></div>';
}
return $return;
}
参数说明
$num 当前页面记录的条数
$perpage 每页显示条数
$curpage 当前页码
$mpurl 分页跳转的路径 比如:portal.php?mod=discount&catid=6& 需要注意的‘&’后面不需要跟’page=‘
$page 你想要显示多少个数字(上一页和下一页中间数字的个数)
$maxpage 记录的总页数
样式的修改:
只需要将自己写好的样式替换方法中对应的类样式即可
调用方法的php文件的代码如下:
//初始化当前页码
$page = empty($_GET['page'])?1:intval($_GET['page']);
if($page<1) $page=1;
//分页
$perpage = 3;
$start = ($page-1)*$perpage;
$list3 = array();
$query3 = DB::query("SELECT * FROM ".DB::table('portal_article_title')." WHERE catid=6 ORDER BY aid DESC LIMIT $start, $perpage");
while($mood3 = DB::fetch($query3)) {
$mood3['dateline'] = dgmdate($mood3['dateline'], 'u');
$list3[] = $mood3;
}
$query2 = DB::query("SELECT * FROM ".DB::table('portal_article_title')." WHERE catid=6 ORDER BY aid");
while($mood2 = DB::fetch($query2)) {
$mood2['dateline'] = dgmdate($mood2['dateline'], 'u');
$list2[] = $mood2;
}
$maxpage=ceil(count($list2)/$perpage);
discuz后台的文件在source里面,命名规则以admincp_开始。
1、入口文件
2、程序文件
5、图片路径
6、js调用 和图片一样
二、Discuz X2 DIY自定义框架
DZ默认DIY 框架中没有2:3 和4:1的比例的框架,但这两种比例的框架用的越来越多,现在说一下,我是怎么制作2:3和3:2的DIY框架的
主要修改文件有三个:common.css
按照 3:1比例的DIY框架的 仿照它修改,用编辑器查找frame-3-1 只要查找到 我们就放找它在后面增加frame-3-2,就这么简单,另外还要增加两张图片图片命名也仿照着修改,图片放在/static/image/diy 路径的文件夹中。
三、为自己的程序模板添加diy功能
1、程序部分
// 这三句是给自己的程序添加diy
loadcache('diytemplatename');
$cachelist = array('yourcache', 'diytemplatelist');
$discuz->cachelist = $cachelist;
include_once template("diy:mood/list");
2、模板部分
<!--[diy=diyid]--><div id="diyid" class="area"></div><!--[/diy]-->
需要注意的是: diyid前后要一致,并且如果要在页面中添加多个diy拖动块要保证diyid不相同才可以。
四、常用模板
五、广告位调用
自定义广告
六、内置模块的调用
进入后台--门户--模块管理--数据调用--点击添加(也可以自己修改模块模板)然后保存点击内部调用复制代码粘贴到需要调用的页面即可
七、内置幻灯的样式的修改
首先是数字的位置修改 找到文件 /static/js/common_extra.js
修改589,590行代码
修改样式找到文件
可以查找幻灯片找到该位置的代码修改这里的代码即可
八、发帖页面
/template/default/forum/eidtor_ajax.htm
/template/default/forum/post_activity.htm
/template/default/forum/post_debate.htm
/template/default/forum/post_editor_extra.htm
/template/default/forum/post_poll.htm
/template/default/forum/post_trade.htm
九、友情链接调用
$_G['cache']['forumlinks'][2]
十、修改一个分页方法给大家分享
文件
function simplepage($num, $perpage, $curpage, $mpurl,$page,$maxpage) {
}
参数说明
$num
$perpage
$curpage
$mpurl
$page
$maxpage
样式的修改:
只需要将自己写好的样式替换方法中对应的类样式即可
调用方法的php文件的代码如下:
//初始化当前页码
$page = empty($_GET['page'])?1:intval($_GET['page']);
if($page<1) $page=1;
//分页
$perpage = 3;
$start = ($page-1)*$perpage;
$list3 = array();
$query3 = DB::query("SELECT * FROM ".DB::table('portal_article_title')." WHERE catid=6 ORDER BY aid DESC LIMIT $start, $perpage");
while($mood3 = DB::fetch($query3)) {
}
$query2 = DB::query("SELECT * FROM ".DB::table('portal_article_title')." WHERE catid=6 ORDER BY aid");
while($mood2 = DB::fetch($query2)) {
}
$maxpage=ceil(count($list2)/$perpage);
$multi = simplepage(count($list3), $perpage, $page, 'portal.php?mod=discount&catid=6&',10,$maxpage);
discuz后台二次开发
在source/admincp 文件夹下面创建相关的后台文件
例如 admincp_xxx.php
然后在admincp_menu.php 中$topmenu数组加上 xxx变量
添加左侧列表栏目
$menu['xxx'] =array(
);
添加权限:在入口的admin.php文件
$admincp_actions_normal数组中添加action后面的变量 否则会提示无权限
discuz后台文件结构
1、后台文件位置
2、后台文件加载顺序
后台文件基本加载顺序,先过滤所有的operation条件,然后过滤所有的提交条件,最后才是加载页面的代码。不过在discuz里面后台文件不存在模板,所有的输出都是打印在php文件里面。