2015-10-01 2 views
0

Я использую некоторый плагин от FireGento, который переопределяет price.html, чтобы показать дополнительную информацию, такую ​​как налог и время доставки ниже моей цены magento (зависит от страны).addPriceBlockType в Ajax Call Magento

В некоторых layout.xml плагин определяет, где выводится новый price.html.

Пример:

<!-- 
Adding custom product price block 
--> 
<catalog_category_default> 
    <reference name="product_list"> 
     <action method="addPriceBlockType"> 
      <type>simple</type> 
      <block>magesetup/catalog_product_price</block> 
      <template>catalog/product/price.phtml</template> 
     </action> 
    </reference> 
</catalog_category_default> 

Все работает отлично, но когда я работаю с Ajax звонки моя цена показать без дополнительной информации.

Возможно ли обновить мой layout.xml для вызовов ajax или можно установить addPriceBlockType, когда я получу свою коллекцию продуктов?

ответ

0

Я использую наблюдателя, что добавить специальный код PHTML из FireGento, когда моя цена блок не является экземпляром из FireGento_MageSetup_Block_Catalog_Product_Price

public function addPriceGerman(Varien_Event_Observer $observer) { 

     //lese jeden Block aus 
     $block = $observer->getBlock(); 

     //ist der Block ein Price Block aber kein FireGento_MageSetup Preisblock? 
     if ($block instanceof Mage_Catalog_Block_Product_Price AND !$block instanceof FireGento_MageSetup_Block_Catalog_Product_Price) { 

      $transport = $observer->getTransport(); 
      //hole den eigentlichen HTML Code vom Preisblock 
      $output = $transport->getHtml(); 

      //hole das Produkt 
      $product = $observer->getEvent()->getBlock()->getProduct(); 

      //Instanz vom MageSetup Block erzeugen 
      $productPrice = new FireGento_MageSetup_Block_Catalog_Product_Price(); 
      //setze das Produkt 
      $productPrice->setProduct($product); 

      //Rendern der deutschen Preisinfo 
      $germanTemplate = $block->getLayout()->createBlock('core/template') 
       ->setTemplate('magesetup/price_info.phtml') 
       ->setProduct($product) 
       ->setFormattedTaxRate($productPrice->getFormattedTaxRate()) 
       ->setIsIncludingTax($productPrice->isIncludingTax()) 
       ->setIsIncludingShippingCosts($productPrice->isIncludingShippingCosts()) 
       ->setPriceDisplayType(Mage::helper('tax')->getPriceDisplayType()) 
       ->setIsShowShippingLink($productPrice->isShowShippingLink()) 
       ->setIsShowWeightInfo($productPrice->getIsShowWeightInfo()) 
       ->setFormattedWeight($productPrice->getFormattedWeight()) 
       ->toHtml(); 

      //deutsche preisinfo an ursprünglichen html code anhägen 
      $transport->setHtml($output . $germanTemplate); 

     } 
     return $this; 

    }