关于Magento v1.4.2 购物车去掉账单地址,要进行此操作,较完美的方案是通过新建package,module,然后rewrite相关的block、model、controller来实现,我们的开发基本要求是不修改core里面的任何文件,模板的话,最好不要直接在base那里改,拷贝一份文件到自建的模板来改,这些熟悉Magento二次开发的朋友,都很了解了。总的来说,动此手术需要修改下列文件,后面是修改的要点:
Core/Mage/Checkout
1. controllers/onepageController.php 在保存收货地址的同时,保持账单地址,使订单的保存过程完整
2. Model/Type/Onepage.php 将shipping 设置为默认打开项
3. Block/Onepage.php 把onepage的5个步骤减少为4个,即隐藏第一步骤账单地址
4. Block/Onepage/Shipping.php 将送货地址选项卡默认打开(原设定为账单地址,现已不再载入了)
design/checkout/
5. onepage/shipping.phtml 防止js错误,需要将billing对象初始化为一个空对象,还有做一些小修改。
6. onepage/progress.phtml 去除onepage左边(原版模板好像是右边?)的信息对照栏目中的“账单地址”
比较直观的修改顺序是:6->3->2->4->1->5
1, onepage/progress.phtml,删除/注释下面代码
getCheckout()->getStepData('billing', 'is_show')): ?>
getCheckout()->getStepData('billing', 'complete')): ?>
__('Billing Address') ?> | __('Change') ?>
getBilling()->format('html') ?>
__('Billing Address') ?>
2, Block/Onepage.php,修改两个地方
A. $stepCodes = array( 'billing', 'shipping', 'shipping_method', 'payment', 'review')
=> $stepCodes = array( 'shipping', 'shipping_method', 'payment', 'review');
B. return $this->isCustomerLoggedIn() ? 'billing' : 'login'
=> return $this->isCustomerLoggedIn() ? 'shipping' : 'login';
3, Model/Type/Onepage.php,修改 initCheckout() 方法内容
A. if (!($step==='login' || $customerSession->isLoggedIn() && $step==='billing')) {
=> if (!($step==='login' || $customerSession->isLoggedIn() && $step==='shipping')) {
4, Block/Onepage/Shipping.php,修改 _construct() 方法内容
A. $this->getCheckout()->setStepData('billing', 'allow', true);
=> $this->getCheckout()->setStepData('shipping', 'allow', true);
5, controllers/onepageController.php 在 saveShippingAction() 方法添加内容
A. $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
前面 增加 $result_billing = $this->getOnepage()->saveBilling($data, $customerAddressId);
6, onepage/shipping.phtml 在文件地下的js部分增加下面内容,给billing赋值,以免报错
var billing = new Billing('co-billing-form',
'getUrl('checkout/onepage/getAddress') ?>address/',
'getUrl('checkout/onepage/saveBilling') ?>');
到此,购物车的账单地址已经基本去除,由于我的开发是基于自己的模板,换成你的模板也可能会有点js的错误,自行调整即可,
有问题,可以咨询
[email protected]。