【discuz X2】discuz X2结构总结

一、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.'&amp;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.'&amp;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);

$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(

    array('menu_xx1', 'xx11'),

    array('menu_xx2, 'menu_x22'),

);

添加权限:在入口的admin.php文件

$admincp_actions_normal数组中添加action后面的变量 否则会提示无权限



discuz后台文件结构

1、后台文件位置
             discuz后台的文件在source里面,命名规则以admincp_开始。
2、后台文件加载顺序
             后台文件基本加载顺序,先过滤所有的operation条件,然后过滤所有的提交条件,最后才是加载页面的代码。不过在discuz里面后台文件不存在模板,所有的输出都是打印在php文件里面。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值