EZ Publish/EZ Publish 改进的商品配送系统
EZ Publish | EZ Publish安装与卸载 | EZ Publish的使用 | EZ Publish常见问题 | EZ Publish其他 |
eZ Publish 3.8 允许为网络商店定制配送选项(例如:配送费用可以依赖于商品分类)。这可以通过实现配送处理器来实现。配送处理器是一个PHP 类,它提供了保存商品集(购物篮或订单)信息与计算配送费用的机制。eZ Publish 没有内建任何配送处理器,因此需要开发您自己的配送处理器来支持配送选项。不能在一个站点入口中同时使用两个配送处理器。配送处理器必须在"Handler"INI 配置中指定。
当用户查看商品页面时,配送费用不会被显示也不会被包含在商品费用中。向系统的购物篮中添加商品后,系统会计算它们的配送价格,配送价格会显示在商品列表中,也会被包含到订单总价中。配送处理器不但返回配送费用,也会返回配送选项简介和一个到配送管理界面(可以修改配送选项)的链接。这些信息会在购物篮中与配送费用一起显示。在订单确定页面和管理界面中的订单视图中也会显示配送费用和配送选项简介。
INI 配置[ ]
"shop.ini"文件中"[ShippingSettings]"分区定义了用于计算配送费用的配送处理器。在这个分区内,可以指定一下配置:
• "Handler"配置指定使用的配送处理器
• "RepositoryDirectories[]"数组指定eZ Publish 从哪里搜索内建的配送处理器。
• "ExtensionDirectories[]"数组指定eZ Publish 从哪里搜索附加的配送处理器。默认情况下,eZ Publish 会在extension 的"shippinghandlers"子目录中搜索。
例1
以下配置可以在"shop.ini"重设文件中"[ShippingSettings]"下添加:
[ShippingSettings] Handler=ezcustom RepositoryDirectories[]=kernel/classes/shippinghandlers
这些配置会要求eZ Publish 使用"kernel/classes/shippinghandlers/ezcustomshippinghandler.php"定义的配送处理器。
例2
如果有一个扩展"myextension",它包含一个配送处理器"mycost",您可以在"shop.ini"重设文件中加入如下配置:
[ShippingSettings] Handler=mycost ExtensionDirectories[]=myextension
或
[ShippingSettings] Handler=mycost RepositoryDirectories[]=extension/myextension/shippinghandlers
这些配置会要求eZ Publish 使用"extension/myextension/shippinghandlers/mycostshippinghandler.php"中定义的配送处理器。
创建新的配送处理器[ ]
本节为希望开发新配送处理器的程序员(只适用于熟悉PHP 的程序员)提供了一些有用的信息。请注意,不建议修改eZ Publish 内核,因此您应该通过扩展来实现。
实现细节[ ]
配送处理器是一个PHP 类,它实现以下方法:
/** * Invoked to get shipping information for given product collection. * \public * \static */ function getShippingInfo( $productCollectionID ); /* * Invoked when shopping basket contents is changed * to update shipping info/cost appropriately. * \public * \static */ function updateShippingInfo( $productCollectionID ); /** * Invoked when the associated product collection is removed * to clean up shipping information. * \public * \static */ function purgeShippingInfo( $productCollectionID );
处理器被eZShippingManager 类中相同方法调用。
$shippingInfo = eZShippingManager::getShippingInfo( $productCollection );
getShippingInfo()方法只用于调用自定义的配送处理器的getShippingInfo()方法。这个方法返回指定商品的配送信息,它是一个包含以下信息的哈希:
创建您自己的处理器[ ]
以下文字描述了如何实现一个简单的用于演示目的的配送处理器。
1. 在"extension"目录中创建如下子目录:
• myextension • myextension/settings • myextension/shippinghandlers
2. 在"myextension/shippinghandlers/"中创建"mycostshippinghandler.php"(这个文件必须包含PHP类"MyCostShippingHandler")并添加如下内容:
<?php class MyCostShippingHandler { function getShippingInfo( $productCollectionID ) { return array( 'description' => 'Manual', 'cost' => 10, 'management_link' => '/shop/basket/' // dummy ); } function purgeShippingInfo( $productCollectionID ) { // nothing to purge } function updateShippingInfo( $productCollectionID ) { // nothing to update } } ?>
3. 在"myextension/settings"目录中创建"shop.ini.append.php"并添加如下内容:
[ShippingSettings] Handler=mycost ExtensionDirectories[]=myextension
4. 要在eZ Publish 中启用扩展,登录到eZ Publish 管理界面,选择“设置”标签,然后选择左侧的“扩展”。系统会列出选存的扩展。选中"myextension"然后点击“应用修改”按钮。
系统会为站点中所有被购买的商品添加固定的配送费用。
如果需要更复杂的配送选项,可以使用http://ez.no/community/contribs/examples/sample_shipping_handler 中的高级示例或开发自己的处理器。