Magento覆盖块

时间:2014-11-04 13:53:17

标签: magento rewrite block shipping

已移至此处:https://magento.stackexchange.com/questions/42434/overwriting-core-shipping-block

我正在从事Magento工作,因为我涉足黑暗艺术已经有一段时间了。我目前正在编写一小部分脚本,它将覆盖结账屏幕上的送货方式。你不得不原谅我代码中的任何平庸,正如我所说的那样。

所以我有两个文件:

应用/代码/本地/ ClarkStudios / Shipmentfilter的/ etc / config.xml中

<global>
    <blocks>
        <checkout>
            <rewrite>
                <onepage_shipping_method_available>ClarkStudios_Shipmentfilter_Block_Onepage_Shipping_Method_Available</onepage_shipping_method_available>
            </rewrite>
        </checkout>
    </blocks>
</global>

应用/代码/本地/ ClarkStudios / Shipmentfilter /砌块/ Onepage /运输/方法/ Available.php

class ClarkStudios_Shipmentfilter_Block_Onepage_Shipping_Method_Available extends Mage_Checkout_Block_Onepage_Shipping_Method_Available
{
    public function getShippingRates()
    {
        die('HAHAHAHAHAH!');

         $rates = parent::getShippingRates();

         $two_kg_array = array('AU','US','CA','BR','VE'); 
         $quote = Mage::getSingleton('checkout/session')->getQuote();
         $shipping_country = $this->getQuote()->getShippingAddress()->getCountry(); 
         $weight = $quote->getShippingAddress()->getWeight(); 
         if( in_array( $shipping_country, $two_kg_array ) && $weight > 2 ) {
            $rates = array();
         }

         if( !in_array( $shipping_country, $two_kg_array ) && $weight > 30 ) {
            $rates = array();
         }


        return $rates;
    }
}

我似乎无法开火,这说Magento没有认出我的块重写。我可能在这里做了一些根本错误的事情,但是对于正确方向的举手会非常感激。

我应该指出,我正在尝试根据购物车的重量更改“单页结帐”页面上显示的送货方式。对于初学者,我只是想让它解雇模具功能,所以我知道它的工作原理。我也刷新了缓存。

史蒂夫

1 个答案:

答案 0 :(得分:2)

您错过了config.xml file中的课程。所以你的config.xml应该是,

<?xml version="1.0"?>
<config>
  <modules>
    <ClarkStudios_Shipmentfilter>
      <version>0.1.0</version>
    </ClarkStudios_Shipmentfilter>
  </modules>
  <global>
    <helpers>
      <shipmentfilter>
        <class>ClarkStudios_Shipmentfilter_Helper</class>
      </shipmentfilter>
    </helpers>
    <blocks>
      <shipmentfilter>
        <class>ClarkStudios_Shipmentfilter_Block</class>
      </shipmentfilter>
            <checkout>
                <rewrite>
                    <onepage_shipping_method_available>ClarkStudios_Shipmentfilter_Block_Checkout_Onepage_Shipping_Method_Available</onepage_shipping_method_available>
                </rewrite>
            </checkout>
    </blocks>
  </global>
</config> 

而且,你错过了Checkout目录。你的目录结构应该是,

app/code/local/ClarkStudios/Shipmentfilter/Block/Checkout/Onepage/Shipping/Method/Available.php

所以你的课应该是,

<?php
class ClarkStudios_Shipmentfilter_Block_Checkout_Onepage_Shipping_Method_Available extends Mage_Checkout_Block_Onepage_Shipping_Method_Available
{
}

我在config.xml中添加了Helper。所以你的助手应该是, 辅助/ Data.php

<?php
class ClarkStudios_Shipmentfilter_Helper_Data extends Mage_Core_Helper_Abstract
{
}

最后我们覆盖了一个页面结帐。因此,如果出现任何问题,您无法移动到下一级,(我的意思是您没有收到任何消息)所以不要使用die()。只需打印一些价值或东西。