1. 程式人生 > >【shopex】app開發機制

【shopex】app開發機制

添加 dem ges http false .html return index array

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開發機制