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的掛件模塊了吧,雖然用起來方便,但是二次開發起來可能會麻煩一點。

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