【shopex】app開發機制

來源:互聯網
上載者:User

標籤:font   out   目錄   資料庫表   事件   htm   control   流程   new   

shopex的app開發機制詳解shopex的app開發機制,讓我們可以實現以下特性:

    1、建立自己的資料庫表。
    2、建立自己的控制器。
    3、在前後台增加欄目。
    4、用自己的控制器替換系統預設的(自訂商務程序)。
    5、添加事件接聽程式,使得系統事件時調用自己的代碼。

下面我們一個小例子來闡述下這種app功能包基本開發步驟:    1、在網站根目錄的/plugins/app目錄下建立demo目錄,那麼同時這個檔案下面就必須要有個app.demo.php檔案,此檔案可以如下定義:
class app_demo extends app{    var $ver = 0.8;    var $name=‘範例程式‘;    var $website = ‘http://www.shopex.cn‘;    var $author = ‘[email protected]‘;    //可選函數    //定義接管系統哪些流程,由自身的哪個類/方法去執行    //本例表示,啟用後前台將把所有訪問購物車的控制器請求重新導向    //到本軟體包內 democtl對象的cartidx方法裡。    function ctl_mapper(){        return array(            ‘shop:cart:index‘ => ‘demo_ctl:cartidx‘,        );    }    //可選函數    //偵聽系統哪些事件    //此處可用關鍵字any表示所有事件    //本例表示:    //偵聽訂單建立事件 -> 調用event_handle類的order_new方法執行    //偵聽會員建立事件 -> 調用event_handle類的member_create方法執行    function listener(){        return array(            ‘trading/order:create‘ =>                ‘demo_event_handler:order_new‘,             ‘member/account:register‘ =>                ‘demo_event_handler:member_create‘,             ‘any‘=>‘demo_event_handler:any‘,        );    }    //可選函數, 返回需要建表的資訊    //本例是建立兩個表, 系統會自動加首碼 sdb_    function dbtables(){        $tables[‘table_2‘] = array (            ‘columns‘ =>            array (                ‘controller‘ =>                array (                    ‘type‘ => ‘varchar(100)‘,                    ‘required‘ => true,                    ‘pkey‘ => true,                    ‘editable‘ => false,                ),                ‘plugin‘ =>                array (                    ‘type‘ =>‘varchar(100)‘,                    ‘required‘ => true,                    ‘editable‘ => false,                ),            ),        );        $tables[‘table_1‘] = array (            ‘columns‘ =>            array (                ‘controller‘ =>                array (                    ‘type‘ => ‘varchar(100)‘,                    ‘required‘ => true,                    ‘pkey‘ => true,                    ‘editable‘ => false,                ),                ‘plugin‘ =>                array (                    ‘type‘ =>‘varchar(100)‘,                    ‘required‘ => true,                    ‘editable‘ => false,                ),            ),        );        return $tables;    }    //我承認這是個非常邪惡的設計...    //但你要承認它可以讓你無所不能    function output_modifiers(){        return array(         ‘admin:goods/product:index‘=>‘demo_modifiers:product_edit‘        );    }    //重載安裝時的方法...    //同樣可重載的還有:    //   uninstall -> 卸載    //   enable -> 程式啟動    //   disable -> 程式關閉    function install(){        //別忘了調用父類的install        return parent::install();    } }

 

    2、為了防止命名衝突,請使用自己包的名字作為類的首碼,檔案plugins/app/demo/demo_event_handler.php,這裡的是對應上面的app.demo.php定義的與系統的本身的方法對接,該檔案的代碼如下:
class demo_event_handler{    //訂單建立時本方法將被自動執行    //此處event被賦值為 order:new    function order_new($event_type,$order_data){        ...    }//會員建立時本方法將被自動執行    //此處event被賦值為 order:new    function member_create($event_type,$member_data){        ...    }//任何事件都將調用此函數    function any($event_type,$event_data){        ...    }}

 

    3、例如與前台購物車操作對接,我們可以定義一下檔案來實現此功能,如檔案plugins/app/demo/demo_ctl.php,代碼如下:
require(‘app_page.php‘);class demo_ctl extends app_page{function cartidx(){        //輸出模板:軟體包檔案夾裡的cart.html        $this->system; //可以調用系統入口        $this->db; //可以直接使用資料庫//載入包裡的類...        require(dirname(__FILE__).‘/demo_my_model_layer.php‘);        $obj = new demo_my_model_layer;$this->output(‘view/cart.html‘);    } }

 

    4、建立一個類來重定義購物車頁面用關鍵字<{$_BASE_PATH_}>可以定位到外掛程式檔案夾的url,如我們建立一個模板檔案plugins/app/demo/view/cart.html在檔案裡面我們就可以使用此關鍵詞例如輸出 plugins/app/demo/images/cart.png 。以上的代碼只是稍微的闡述了下shopex的協助工具功能包的一些小特性,如果用得好的話,就會感覺如魚得水,希望這些代碼對你有協助。

 

【shopex】app開發機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.