Magento - 在产品信息页面上注入自定义模块

时间:2012-01-04 16:37:51

标签: templates magento block

我在网上搜索了如何在产品页面上添加“模板”和模板。我构建了一个显示某种信息的自定义模块,我希望在我的产品的长描述中说明这一点。

我一直在尝试格式化模块的xml布局,但没有运气。

经过一番搜索,我发现了这个:Programatically create Magento blocks and inject them into layout我无法让它为我工作。但可能是因为我错过了什么。

我的模块结构如下:

代码:app / code / local / deveti / Countrypurchase

DESIGN:app / design / frontend / default / default / template / Countrypurchase / index.phtml

布局:app / design / frontend / default / default / layout / countrypurchase.xml

我知道正确的方法是编辑主布局文件,手动添加一个块,但我想在运行中这样做。

编辑:这有效!

所以我会在我的模块布局xml countrypurchase.xml中做这样的事情:

<?xml version="1.0"?>   
<layout version="1.0">
    <catalog_product_view>
        <reference name="product.info">
            <block type="core/template" name="product.countrypurchase" as="countrypurchase" template="countrypurchase/index.phtml" />
        </reference>
    </catalog_product_view>    
</layout>

我添加了对catalog / product / view.phtml的调用:

<?php echo $this->getChildHtml('countrypurchase'); ?>

它有效;)

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

产品视图页面的问题在于它的输出主要由模板catalog/product/view.phtml中的PHP代码控制。 Magento没有提供很多可扩展性的开箱即用点。您可以将其添加到content块,但这会将您的自定义内容完全置于顶部或完全位于底部。

我认为您需要修改模板并添加PHP代码以在您想要的位置呈现自定义块,例如:

<?php
    echo $this->getChildHtml('product.countrypurchase');
?>

有了这个,您可以通过XML布局或以编程方式添加名称为product.countrypurchase的块。