您的位置:首页 > 其它

Magento(社区版)自带模块解析以及在国内的使用建议七

2016-09-18 17:44 302 查看


61、Tax

税模块是一个让人头疼而又没法轻易舍弃的模块。国内的电商,不管是淘宝、京东还是其他网站,商品的标价都是含税价,所以在系统层面是完全不需要考虑税这个概念的,但是Magento是美国朋友做的,美国网站的标价很多时候都是不含税价(是因为美国各个州的税率也不一样?),后续结算还要计算税费等情况。因为税是跟价格紧密相关的概念,所以Magento代码里,税相关的代码也是跟价格代码紧密耦合在一起的,这样的结果就是,即便我们用Magento做中文站,也没办法简单剥离掉税相关的代码,只能带着所有税判断和税计算相关的代码一起跑。税和价格在Magento里有多紧密可以参见价格模板文件 \template\catalog\product\price.phtml

如上所述,Tax模块是没法关闭的,真的要关的话,除非把税和其他模块耦合在一起的代码一点不剩全部剥离干净,这个是一个相当复杂而又耗时的大工程。

62、Usa

前面讲Shipping模块的时候有提到,Usa模块实现了Dhl、Fedex、Ups和Usps这四种配送方式,这几个都是国外的快递公司,国内一般用不到,即便真的要用,比如Fedex联邦快递,也建议用Table Rate来实现,因为Usa模块的代码查询快递进度都是连接的美国公司的api。

Usa模块从名字也可以看出专供美国本土,所以我们可以果断关掉它。

63、Weee

Weee模块是Tax模块的一个扩展,实现了一个所谓Fixed Product Tax功能,因为做中文站用不到税的概念,所以Weee模块对我们也是没有用的。幸运的是Weee模块独立性很好,相比于Tax模块,关闭Weee模块并不会对网站正常流程造成影响。

Tax模块是相关关不掉,Weee模块就可以放心的关了。

64、Widget

Widget模块提供了一种可视化管理页面内容(Block)的机制,除了可以在CMS page或者Static Blocks的内容里插入Widget外,也可以新建Widget插入到各个页面的指定位置,比如下图这样把一个Static Blocks插入到所有简单商品页的左栏。



应该说Widget功能上还是很强大的,可以通过后台操作的方式修改页面内容和布局,而不用修改代码文件。不过恰恰是因为这一点,我其实不太推荐在工作中使用Widget。在实际项目开发流程中,我们一般会用svn或者git来做代码的版本控制,原则上除了纯内容以外所有的网页变化都应该通过修改代码的方式来进行,这样方便做版本控制,code review和生产环境发布的节奏控制 。如果使用Widget就会打破这个原则,后台操作可以直接干预前台放哪些Block,会让管理失控。从程序开发管理的角度来说,同样在前台新增一个Block,既可以通过后台的Widget来实现,也可以通过修改模板layout文件来实现,如果不统一一个标准实现方式,在团队合作开发时就会混乱。理论上,所有Widget

实现的东西,都可以通过修改Layout文件来实现,而反过来,修改Layout文件实现的功能,后台的Widget不一定能做到,而且通过Widget新增的Block,实际上是把布局信息存进了数据库里,前台每次调用都需要先从数据库取出这部分布局信息再来渲染页面,无形中增加了数据库的压力。

Widget模块虽然不推荐用它,但是因为存在一些模块依赖,是无法关闭的。

65、Wishlist

收藏夹模块就没有什么特别可讲的地方了,功能很标准,没有什么特别奇葩的点,同时收藏夹功能应该也算是电商的标配基础功能之一,没有收藏夹的电商才是奇葩。当然现在叫法上会有一些变种存在,比如“关注“,“心愿单“等等,骨子里都还是收藏夹,顶多就是在收藏夹基础功能上做一些扩展。

Wishlist模块也算是核心模块之一。

66、XmlConnect

接触Magento有段时间的人应该听说过,Magento官方曾经推出过官方的APP解决方案,包含了对Android和Ios的支持,XmlConnect模块就是对应的服务端接口,生成的App通过XmlConnect模块与Magento网站实现数据的交互。这个官方项目现在已经死了,原因大概分两方面,一,定价高,Android和Ios分开各自收费,如果我没记错的话还是按年收费,二,不灵活,生成的APP只能换换图片、颜色、布局等等,没办法灵活定制功能,举个例子,在中国用需要接入支付宝,官方的App解决方案就无能为力了。

所以虽然没有具体数据,但可以预计这个官方方案没有几个人真的买单,真正有APP需求的,一般会自己招人做客户端或者外包做客户端,然后是用Magento的SOAP/XML-RPC或者Rest Api做服务端接口,或者直接用http请求Magento控制器的方式自己构建一套供APP是用的服务端Api,这样子不管客户端还是服务端都是可以灵活的针对自己的需求做定制的,相比之下,官方的解决方案就。。。。

因为这个项目已经死了,所以XmlConnect模块原生就已经是关闭状态了,Magento官方只是关闭模块而没有把代码移除,可能是为了留个纪念吧。

67、RedisSession

这个模块不在core目录而在community目录里,不过也是Magento自带的模块。看字面意思就知道,这个模块的作用是把Magento的session存到Redis里面,这个方案差不多已经成为Magento生产环境的事实标准了。Magento默认session是存放于本机磁盘或者数据库表里的,生产环境一般会做服务器集群来应对大流量,集群情况下,session放磁盘先不说性能如何,服务器间的不同步就是大问题,放数据库表的话可以解决集群状态下的session一致性,不过性能和堆数据库造成的压力也是不小的问题,在Magento早期(那时候Redis还没流行),公认的合理解决方案是把session放到memcache里,可以同时解决一致性,性能和减轻数据库压力几个问题,后来Colin
Mollenhour大神为Magento官方贡献了两个基于Redis的实现,session和cache,而Redis本身也越来越成熟,逐渐成为各大公司取代memcache的标配,所以近期的新Magento项目一般都会把session和cache存到Redis作为标准方案。

其实相比于session,存放cache才是Redis相比memcache更有优势的地方,Redis支持的hash结构相比memcache的简单KV结构可以更好的支持Zend_Cache的tag概念,所以在cache已经存到Redis的情况下,为了避免同时维护Redis和memcache带来的成本,把session一起放redis就是很自然的选择了。

PS:如何配置session到redis可以参加自带的local.xml.additional文件

68、Moneybookers

Moneybookers是一家国外的第三方支付公司,类似支付宝的模式,具体我也不是很了解,但是可以确定这个在国内用不到,凡是国内用不到的支付方式,都可以把整个模块关闭掉。

以上是本系列的最后一篇内容,简单总结下上面8个模块,

其中Tax,Widget,Wishlist三个模块是必须开启的(网站正常运行的基础),

RedisSession是可以根据需求自选要不要开启的,

Usa,Weee,XmlConnect,Moneybookers我的建议是关闭(针对做国内中文站),

以上如果有描述不正确的地方,欢迎指正。

下一章就是关闭无用模块前后的性能对比测试,敬请期待!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Magento