我正在努力扩展针对城市的送货方式。
senerio:
当我以统一费率选择国家/地区时,自动按照所选国家/地区填充城市。
我如何更改或延长送货方式
答案 0 :(得分:2)
要在将来回答您自己的问题,请始终探索抽象类中的方法,并发现每个送货方法都在其对象中定义了父方法isActive()。
因此,您的任务是在扩展Mage_Shipping_Model_Carrier_Abstract的送货方法类中将此限制写入此方法
public function isActive(){
parent::isActive();
//your logic to follow and check the selected shipping or billing city and return boolean true/false
}
或者您可以将您的需求缩小到抽象的特定方法(不要忘记在覆盖中调用父方法)
checkAvailableShipCountries()
isActive()
isCityRequired()
isStateProvinceRequired()
isZipCodeRequired()
答案 1 :(得分:0)
经验告诉我(在美国以外)用户不能被信任正确输入他们的城市名称,即您的代码希望与之匹配。但是,可以可靠地输入邮政编码,因为用户熟悉这部分地址是正确的。
您是否通过尺寸检查进行统一费率或重量/位置?这使事情变得非常复杂。
如果您的计算很简单,那么您可以使用现有内置方法的邮政编码,例如标准表费率需要在 admin-> system-> shipping 方法的商店视图中加载CSV:
Country County/State Postcode Weight (and above) Delivery Price
USA * 12345 1 10
USA * 16384 1 10
USA * 65536 1 10
USA * 32768 1 10
如果你想对你自己的代码做同样的事情,那个模式与post / zip代码的一部分相匹配,那么一个起点就是将现有的Flatrate.php从核心复制到本地。
从这里开始,您可以使用$order->getShippingAddress()->getPostcode()
并自行计算。
使用类似的方法你也可以做城市,虽然你必须明白,并非一个城市的每个人都能正确地把他们的“城市”条目放入,但肯定不是在标题案例中。