2014-11-04 2 views
1

Переехал сюда: https://magento.stackexchange.com/questions/42434/overwriting-core-shipping-blockMagento перезапись Блок

Im работая на работу Magento и его было некоторое время, так как я пробовал себя в темных искусств. В настоящее время я пишу небольшой скрипт, который будет переопределять методы доставки на экране проверки. Вы должны извинить любую посредственность в моем коде, поскольку я сказал, что это было некоторое время.

Так у меня есть два файла:

приложения/код/​​местные/ClarkStudios/Shipmentfilter/и т.д./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/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; 
    } 
} 

Я не могу показаться, чтобы получить кубик, чтобы стрелять бее ch говорит, что Magento не признает мою переделку блока. Я, наверное, сделал что-то принципиально неправильное здесь, но рука, проведенная в правильном направлении, была бы высоко оценена.

Возможно, я должен указать, что я пытаюсь изменить, какие методы доставки появляются на странице One Page Checkout, исходя из веса тележки. Для начала я просто хочу, чтобы он запустил функцию штампа, чтобы я знал, что он работает. Я также сбросил кеш.

Стив

ответ

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 
{ 
} 

Наконец мы перезапись OnePage проверки. Поэтому, если что-то пойдет не так, вы не можете перейти на следующий уровень (я имею в виду, что вы не получили никаких сообщений), поэтому не используйте die(). Просто напечатайте какую-то ценность или что-то еще.

Смежные вопросы