shopexapp开发机制

不飞则已,一飞冲天;不鸣则已,一鸣惊人。这篇文章主要讲述shopexapp开发机制相关的知识,希望能为你提供帮助。
shopex的app开发机制详解 shopex的app开发机制,让我们可以实现以下特性:【shopexapp开发机制】        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(){//别忘了调用父类的installreturn parent::install(); } }

 
        2、为了防止命名冲突,请使用自己包的名字作为类的前缀,文件plugins/app/demo/demo_event_handler.php,这里的是对应上面的app.demo.php定义的与系统的本身的方法对接,该文件的代码如下:
class demo_event_handler{//订单新建时本方法将被自动执行//此处event被赋值为 order:newfunction order_new($event_type,$order_data){...}//会员新建时本方法将被自动执行//此处event被赋值为 order:newfunction 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的辅助功能包的一些小特性,如果用得好的话,就会感觉如鱼得水,希望这些代码对你有帮助。
 





    推荐阅读