ecmall开发记录(一)

    ecmall是一个开源的C2C网上商城系统,但是它的功能还比较不完善,ShopEx把它从康盛收购过来以后好像也有打入冷宫的意思。不过免费的有的用就不错了,程序员的座右铭就是自己动手,丰衣足食。我是学.NET出身,对PHP只是略知一二,无奈公司只有我一个技术,我只能自己慢慢研究啦。

    首先就是打开index.php,我对php项目的第一印象就是一大堆include和require,这个无可厚非,就像我们用using一样。然后我看到了ECMall的startup方法。

    

/* 启动ECMall */
ECMall::startup(array(
    'default_app'   =>  'default',
    'default_act'   =>  'index',
    'app_root'      =>  ROOT_PATH . '/app',
    'external_libs' =>  array(
        ROOT_PATH . '/includes/global.lib.php',
        ROOT_PATH . '/includes/libraries/time.lib.php',
        ROOT_PATH . '/includes/ecapp.base.php',
        ROOT_PATH . '/includes/plugin.base.php',
        ROOT_PATH . '/app/frontend.base.php',
        ROOT_PATH . '/includes/subdomain.inc.php',
    ),
));

 

  如此一来便知道ECMall应该是MVC设计的了。在/app目录下的每一个*.app.php文件就是每一个控制器。既然看到了'default_app'是'defalut',那就去找一下default.app.php,终于看到了比较靠谱的index()方法,这应该就是网站的入口了。

  

function index()
    {
        $this->assign('index', 1); // 标识当前页面是首页,用于设置导航状态
        $this->assign('icp_number', Conf::get('icp_number'));

        /* 热门搜索 */
        $this->assign('hot_keywords', $this->_get_hot_keywords());

        $this->_config_seo(array(
            'title' => Lang::get('mall_index') . ' - ' . Conf::get('site_title'),
        ));
        $this->assign('page_description', Conf::get('site_description'));
        $this->assign('page_keywords', Conf::get('site_keywords'));
        $this->display('index.html');
    }

 

     这个index()方法分配了一堆变量,现在也不知道都有啥用,看名字差不多能知道点。最后来了个display()方法。对于有着几天“深厚”smarty功底的我来说,这肯定就是把变量分配到模板中了。再去/themes/mall/default中找到了index.html文件,只看到了一堆div和 <!--{widgets page=index area=banner}-->之类的标记。widgets就是ECMall的挂件模块了吧,虽然用起来方便,但是二次开发起来可能会麻烦一点。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章