Ajax中的addPriceBlockType调用Magento

时间:2015-10-01 06:19:47

标签: ajax magento

我使用FireGento中的一些插件覆盖price.html,以显示税率和交货时间以下我的品红价格(德国特定)的其他信息。

在某些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 Calls时,我的价格显示没有附加信息。

可以更新我的layout.xml以进行ajax调用,或者在我获得产品集合时设置addPriceBlockType是可以实现的吗?

1 个答案:

答案 0 :(得分:0)

当我的价格区块不是来自FireGento_MageSetup_Block_Catalog_Product_Price

的实例时,我使用一个观察者从FireGento添加特殊的phtml代码
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;

    }