【问题标题】:Magento Overwriting BlockMagento 覆盖块
【发布时间】:2014-12-31 10:40:24
【问题描述】:

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

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

所以我有两个文件:

app/code/local/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>

app/code/local/ClarkStudios/Shipmentfilter/Block/Onepage/Shipping/Method/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 无法识别我的块重写。我可能在这里做了一些根本性错误的事情,但如果能握在正确的方向上,我将不胜感激。

我可能应该指出,我正在尝试根据购物车的重量更改单页结帐页面上显示的运输方式。对于初学者,我只希望它触发 die 功能,以便我知道它的工作原理。我也刷新了缓存。

史蒂夫

【问题讨论】:

    标签: magento rewrite block shipping


    【解决方案1】:

    您错过了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()。只需打印一些价值或其他东西。

    【讨论】:

      猜你喜欢
      • 2013-10-15
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多