为了账号安全,请及时绑定邮箱和手机立即绑定

Discuz!X二次开发——前台篇

难度高级
时长 3小时42分
学习人数
综合评分9.70
17人评价 查看评价
10.0 内容实用
9.9 简洁易懂
9.2 逻辑清晰
  • 新建控制器入口文件。

    // 定义常量
    define('CURSCRIPT',1);
    define('APPTYPE',0);
    
    // 引入核心类库
    require './source/class/class_core.php';
    
    // 初始化核心类库
    $discuz =  C::app();
    $discuz->init_cron = false;
    $discuz->init();
    
    // 引入第三方类库
    // 使用的时候再引入
    
    // 逻辑分发处理
    $mod = !empty($_GET['mod']) ? $_GET['mod'] : 'index';
    if (empty($mod) || !in_array($mod, array('index'))) {
        exit('Access Denied');
    }
    
    //定义常量
    define('CURMODULE',$mod);
    // 定义全局常量
    $_G['disabledwithauto'] = 1;
    // 根据Mod参数分发到对应的模块
    require_once libfile('tool/'.$mod, 'module');


    查看全部
  • 如果我们要更改系统已经存在的css,可以在模板目录下建立以extend_为前缀的源文件名的CSS文件即可。

    我们以添加新的common.css文件举例,如何进行操作,比如提添加一个/template/default/common/common.css文件。

    • 在自己的模板目录下新建一个extend_common.css文件,文件路径为/template/new/common/extend_common.css

    • 在文件中编写a{color:red}

    • 生成的css文件,需要在discuz后台更新css缓存才能生效,在后台切换模板处更新缓存。


    扩展的css文件会追加到css缓存文件中,扩展css文件加载顺序是先加载默认的css文件,然后再加载扩展的css文件

    查看全部
  • 在source/class/table下建立以table_为前缀的php文件

    构造模型类

    if(!defined('IN_DISCUZ')) exit('Access Denied');

    class table_xxx extends discuz_table{

        public function __construct(){

            $this->_table = ''; //表名

            $this->_pk = ''; //主键名

            parent::__construct();

    }}

    编写查询方法

    在控制器中用C::t('文件名')来实例化模型类,->执行方法

    查看全部
  • 根目录新建xxx.php作为新的入口文件

    入口文件:

    1. 定义常量

    2. 引入核心类库并初始化

    3. 引入第三方库,模块分发逻辑处理

    4. 设置全局变量

    5. 引入URL参数分发类库文件并配置参数


    查看全部
  • 资料库

    http://faq.comsenz.com/library

    查看全部
  • 分页查询数据

    $curpage = (int)$_GET['page'] ?? 1;
    $perpage = (int)$_GET['num'] ?? 10;
    // 控制器
    $model = C::t('tool_info');
    $num = $model->count();
    $tools = $model->list($curpage, $perpage);
    
    $page_html = multi($num, $perpage, $curpage, 'tool.php?mod=index&action=list');
    var_dump($tools);
    
    echo $page_html;
    
    // 模型
    public function  list($page,$perpage=10)
    {
        $result = DB::fetch_all('SELECT * FROM %t'.' ORDER BY '.DB::order('tool_id','desc').DB::limit(($page-1)*$perpage,$perpage),[$this->_table]);
        return $result;
    }


    查看全部
  • 注意我们在创建表的时候是有表前缀的,表前缀是多少,这根据你在安装Discuz时指定的表前缀为例。

    如果不知道表前缀是多少,可以看下现在数据库中表名前缀是多少就知道了

    查看全部
  • 在模型类中编写查询方法,在控制器中调用模型中的方法即可。

    // 实例化模型类
    C::t('文件名')


    查看全部
    • Discuz 中的模型文件放在/source/class/table目录下

    • 模型文件名由”table_表名“组成

    • 编写模型文件类

    // 安全验证
    if(!defined('IN_DISCUZ')) {
        exit('Access Denied');
    }
    
    // 表类 
    class table_common_admincp_cmenu extends discuz_table
    {
        public function __construct() {
    
            // 表名
            $this->_table = 'common_admincp_cmenu';
            // 主键名
            $this->_pk    = 'id';
            // 调用父类方法
            parent::__construct();
        }
    }


    查看全部
  • 模板文件的头部文件,和尾部文件需要自己手动引入。

    这里举例/template/PHPchina/tool/index.htm文件引入头部、尾部文件

    #引入头部文件
    <!--{template common/header}-->
    <link rel="stylesheet" href="static/css/tool/tools.css" />
    ......
    # 引入尾部文件
    <!--{template common/footer}-->


    查看全部
  • 在控制器中引入模板文件

    include template('tool/index')

    引入的模板后缀为.htm, 这个模板放在/template/PHPchina\tool目录下,这里的PHPChina是一个自定义风格的目录。

    查看全部
  • 建立控制器文件。

    • 在source/module目录下建立以入口文件名相同的目录。

    • 在上面建立的目录下建立 “入口文件_mode.php“格式的文件

    • 在上一步文件中定义安全常量 

    if(!defined('IN_DISCUZ')) {
        exit('Access Denied');
    }
    • 使用if/else 语句来区分action 参数,编写业务代码。

    if(!defined('IN_DISCUZ')) {
        exit('Access Denied');
    }
    $action  = $_GET['action'] ?? 'index';
    
    if($action == 'index'){
        echo '这是工具的首页';
    }elseif($action == 'upload'){
        echo '这是上传的首页';
    }


    查看全部
  • Discuz是一个面向过程的PHP框架,建立控制器入口文件,需要的操作也不一样,这些操作简单的记录一下,方便后期回顾。

    具体如何建立控制器文件,可以看截图

    查看全部
  • Discus 读取模板是有自己的流程的

    首先会读取自己定义的目录下的common目录中的文件,如果该目录下的文件不存在,会到default默认目录下的common目录中读取指定的文件

    查看全部
  • 条件判断 if

    查看全部
首页上一页123456下一页尾页

举报

0/150
提交
取消
课程须知
对PHP语法有基础的掌握,有一定开发经验
老师告诉你能学到什么?
1、Discuz二次开发基本流程 2、Discuz框架运行流程 3、Discuz模板机制 4、如何在Discuz中建立Controller、Model与View 5、在Discuz中如何操作MySQL数据库 6、Discuz模板语法 7、一起完成工具上传实例

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!