一个深圳Java程序员对ECMall的扩展感受

2016-07-07 16:47 来源:www.chinab4c.com 作者:ecshop专家

ECMall我是9月份从2.2开始弄的,安装了几个插件和模块,例如推广积分和秒杀,自己也开发了两个插件,例如购物积分和商品二维码生成。对比和Java的网站开发,感觉蛮有意思的,以下是粗略的汇总:

1、ECMall的扩展机制仍在进化中。
单纯的一种扩展来完成一个任务几乎碰不到。ECMALL有三种扩展方式,官方也说一般的扩展开发实际上都会用得到,不可能只用到一种。例如官方自己推出的那个商城推广积分插件promotion,包括了插件和模块两种。所以,在社区中,大家都已经形成了"插件"其实就是包括了以上三种方式:模块、插件和挂件。为了方便,建议官方以后直接把所有扩展都名正言顺地称作"插件"算了,免得此起混淆。而原来的三种分类依次可称之为插件的功能部分、勾子部分和可视组件。
经过这几轮扩展开发,感觉要吃上“扩展”这块猪肉,真的不容易,要修改已有的model文件和frontbase文件等等,以增加模型,加入前台的菜单项。对比Java世界中的eclipse的插件和Spring中的JavaBean发布,要罗嗦多了。eclipse插件只要直接COPY到插件目录下即可使用。
当然,ECMall每次升级,自己扩展的插件都要重新安装,相当麻烦。不过,这也是其他大多数php框架的通病,目前没有很好地解决吧。wordpress没用过,Joomla!用过。
2、ECMall扩展开发小结。
通过分析模块、插件、挂件这三种扩展方式的不同,最后确定用模块的方式来实现购物积分功能。

模块:最常见和全面的一种扩展方式,往往涉及到的表与界面都是新增的,是对ECMALL前后台功能的整体扩展,包括前后台程序,也可以配合插件与挂件,例如商品数据模块。
插件:拦截性的一种扩展方式,可以对主程序的数据内容或执行流程进行改变。利用勾子让主程序来调用该扩展模块,例如商店短名字插件。
挂件:最小的也是最容易的一种扩展方式,主要是“某个区域”的前台数据的展现,属UI组件,例如各类广告条,商品分类条等。

怎样确定你的开发任务是哪种类型?
往往一个扩展功能,会分别涉及管理后台、前台展示功能,这时即是一种模块开发了;
如果这个扩展功能会被其他好多模块调用,那就要做个插件,让其他模块方便拦截调用;
如果这个功能在前台的不同页面都有一个小区域来显示,那就需要一个挂件了。

案例1:秒杀插件的实现分析
后台需要设定秒杀的参数,例如时间,数量以及商品的指定等等,这可以用modules即模块来实现;
前台需要展示秒杀商品,当然也可以在模块中实现,但要修改已有商品展示界面,不如做成挂件方式widget。
因此,秒杀就可以做成模块+挂件的方式。“插件”是误称了。


案例2:销售积分插件的实现:每销售一笔,用户就会增加积分。
后台:设置销售积分参数的页面
前台:用户中心界面,要展示积分情况
这两种都可以用modules实现
而积分执行时,需要在购买时拦截执行,因此是个插件行为。
因此,这个插件的总体架构为:modules + plugins

ECMall的MVC的架构还是比较清晰的,作为一个新手,M这块需要熟悉一下它的各module间关系的书写方式;View比较容易理解,即html文件,那些smartty标签也比较直观,相信Java中习惯各类标签的朋友应很快接受;Controller这块即app文件是编程的重点,跳转处理都是在这,而许多业务处理代码也都写在这里了,没有另建一个BO层的风气。不过没关系。

至于ECMall的功能缺陷,最头疼是它的购买积分竟然没有,而且打折促销这个也没有。一直在怀疑官网是过分依赖UC去扩展它的积分功能了。
但ECMall还是很优秀的,值得投入精力去研究使用。

基本上就这么多,以后还要继续学习它,希望和大家多多交流!QQ :82889082

回答:
在查找&m这个模块方法时,发现在eccore/ecmall.php文件中有&bm的定义实现,也就是以后的业务对象可通过它来调用。

强者有机会交个朋友QQ:819150634

我也在深圳,可以多交流 http://mall.bb521.com.cn

高手呀..不知能不能认识你呀.











シャネルコピー
スーパーコピーブランド