用户
 找回密码
 入住 CI 中国社区
搜索
查看: 15174|回复: 12
收起左侧

dilicms代码全面剖析(1),持续更新中。。。

[复制链接]
发表于 2014-3-22 04:05:14 | 显示全部楼层 |阅读模式
本帖最后由 沫音十三 于 2014-3-22 06:04 编辑

事实上,我算不上一个称职的程序猿,也并不是CodeIgniter的粉丝,更没有加入完善dilicms的能力和心态。我仅仅是写了多年的程序后发现,程序的世界太小了,我更喜欢人际交流的环境,所以毅然决然地踏上了网络运营的方向。当老板担心国内知名cms的版权问题时,我翻出了dilicms,因为我不喜欢重复造轮子,对于一个新项目而言,市场机会远比程序本身来得重要。本来预计一个月的开发计划,我用10个工作日就完成了。当然,对于熟悉dilicms的人来说,我觉得3天就足够了。所以我很感谢作者提供了这样的代码,并让我有更多的时间投身在运营学习中。

本来打算很正经地用chm手册的形式做一个比较全的使用说明出来,之后想想,我应该只领悟了dilicms的皮毛,所以想用帖子的形式不断完善,等完善的差不多了再生成chm文档。

其实,作者开放这个作品的本意,应该是想让程序猿们更加关注核心功能的实现,而不是做机械性码农。可浏览了板块的帖子,很多人却在问怎么使用。说实话,我也花了一两天时间研究用法。但我最终发现,dilicms的模块管理和插件什么的扩展性很强大,但最精髓的,觉得是作者对CI框架的理解和运用,是应该用“哇”、“牛”、“妙”、“崇拜”这样的字眼去形容的。


所以我不打算用专题讲界面的操作,而是像一个程序猿一样,去剖析每一段代码的作用,再从代码逻辑上去讲界面的操作,我觉得这样会让大家更加深入地了解和灵活运用dilicms。




下面代码块中用"#"注释的文字内容,是我对dilicms的理解,有理解偏差的地方,请大家雅正!




//------------第一步:咱们就从 /admin/index.php 开始吧,其实这个文件也没啥可说的,就是多了一句代码-----------

PHP复制代码
/*
 * --------------------------------------------------------------------
 * 加载DiliCMS 环境常量
 * --------------------------------------------------------------------
 */
       
require_once BASEPATH . '../' . 'shared/config/constant.php';
复制代码



//------------第二步: /shared/config/constant.php,一些自定义的常量-----------

PHP复制代码
/*--------------------------------------------------------------------------
| DiliCMS 环境常量
|--------------------------------------------------------------------------
*/

    define('IN_DILICMS', TRUE);    #检查单一入口用

    define('DILICMS_VERSION', 'V2.3.0');     #版本号,这个没什么用,仅仅在安装程序时用到了

    define('DILICMS_SHARE_PATH', BASEPATH . '../shared/');    #指定shared绝对路径,这个目录其实上就是把CI默认application下自定义的公用文件,如配置项、函数、类库、模型、数据缓存等文件搬到了这里

    define('DILICMS_EXTENSION_PATH', BASEPATH . '../extensions/');   #指定extensions绝对路径,这个目录一般放模型字段扩展或者模型内容功能扩展的文件
复制代码



//------------第三步: /admin/core/Dili_Loader.php,把CI默认的视图路径改成了/admin/templates/default/----------

PHP复制代码
/** * DiliCMS Loader 扩展CI_Loader,用于支持多皮肤
 */

class Dili_Loader extends CI_Loader
{
    /**
     * 切换视图路径
     */

        public function switch_theme($theme = 'default')
        {
                $this->_ci_view_paths = array(APPPATH . 'templates/' . $theme . '/' => TRUE);    #这一句其实就是把$this->load->view()的默认路径改掉了,改成了/admin/templates/default/。这样就可以通过后台界面随时切换不同风格的前台模板了
       }
}
复制代码



//------------第四步: /admin/core/Dili_Controller.php,在控制器基类初始化时就完成了每个页面几乎都要有的相同处理,使得模块控制器只专注于功能的具体实现---------

PHP复制代码
/**
 * DiliCMS 后台控制器基类
 */
               
abstract class Admin_Controller extends CI_Controller
{
    /**
     * 检查http auth
     */

    protected function _check_http_auth()    #利用超全局变量对当前用户名和密码进行权限访问效检

    /**
     * 检查用户是否登录
     */

     protected function _check_login()
 
    /**
     * 加载视图
     */

     protected function _template($template, $data = array())    #加载后台页面的公共头部

    /**
     * 检查权限
     */

      protected function _check_permit($action = '', $folder = '')    #检查当前用户有无当前操作权限

    /**
     * 信息提示
     */

        public function _message($msg, $goto = '', $auto = TRUE, $fix = '', $pause = 3000)   #错误或提示信息时的中转页面,自动跳转

}
复制代码



//------------第五步: /admin/config/hooks.php,/admin/hooks/MethodHook.php -----------

PHP复制代码
/*| -------------------------------------------------------------------------
| pre_controller 钩子
| -------------------------------------------------------------------------
| 此钩子使用于处理POST请求的函数只能通过POST请求访问
*/

$hook['pre_controller'] = array(     #在配置项中定义一个钩子,在控制器基类初始化之前就执行
          'class'    => 'MethodHook',
           'function' => 'redirect',
           'filename' => 'MethodHook.php',
          'filepath' => 'hooks'
           );
复制代码
PHP复制代码
class MethodHook
{
    /**
     * 将POST请求的方法method变成_method_post。
     */
       
        public function redirect()   #为了安全,将非get请求的操作通通挂载到私有操作上,以禁止url访问
}
复制代码



//----------------------------------上面是核心代码的初始化,剩下的就是具体功能上的代码了,有时间继续更新---------------------------------------------
单选投票, 共有 25 人参与投票
您所在的用户组没有投票权限

评分

参与人数 2威望 +10 收起 理由
帝国设计师 + 5 赞一个!
Hex + 5 赞一个!

查看全部评分

发表于 2015-11-26 14:58:05 | 显示全部楼层
确实不错
回复

使用道具 举报

发表于 2014-10-16 12:00:42 | 显示全部楼层
楼主咋不更新了呢!!!!
回复

使用道具 举报

发表于 2014-8-21 11:12:52 | 显示全部楼层
期待续集
回复

使用道具 举报

发表于 2014-6-21 15:40:21 | 显示全部楼层
等待更新
回复

使用道具 举报

发表于 2014-6-9 17:09:16 | 显示全部楼层
这快3个月了,怎么还不更新?
回复

使用道具 举报

发表于 2014-5-9 15:18:59 | 显示全部楼层
很不错,学习了。
回复

使用道具 举报

发表于 2014-4-16 16:46:17 | 显示全部楼层
留下 慢慢看
回复

使用道具 举报

发表于 2014-4-15 11:26:05 | 显示全部楼层
分析的不错,期待更多分享~
回复

使用道具 举报

发表于 2014-3-31 11:32:05 | 显示全部楼层
现在就是内容太少了,期待更多的更新……
回复

使用道具 举报

本版积分规则