Magento-如何使用模块在产品详细信息页面中添加新的自定义块

时间:2013-01-29 03:55:05

标签: php block magento-1.7

我正在做一个magento习惯化网站,我需要添加产品的附加属性,比如它的类型,版本等。我是magento的新手,如何将新的自定义块添加到产品详细信息页面。我创建了一个模块,我正在使用以下编码。

应用\代码\本地\明智开发\ CompatibleWith \块\ compatible.php

类SmartGrowth_CompatibleWith_Block_CompatibleWith扩展Mage_Catalog_Block_Product_View

{

protected function _prepareLayout()
    {

            //$this->getProduct()->setName($this->getProduct()->getPrice());
            $this->getProduct()->setName($this->getProduct()->getShortDescription());


      parent::_prepareLayout();
  } 


}

我在_prepareLayout()中使用了以下编码,但它似乎重复了5次块,并且块出现的位置是probs

$block = $this->getLayout()->createBlock(
'Mage_Core_Block_Template',
'my_block_name_here',
array('template' => 'catalog/product/compatiblewith.phtml')
);
$this->getLayout()->getBlock('content')->append($block);

请帮助我如何做到这一点,我是magento的新手,任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:5)

不需要在代码中添加块,应该使用配置XML文件来完成。

为您的模块创建XML配置(有很多关于此的教程)。

检查catalog.xml(app / design / frontend / base / default / layout /)

<catalog_product_view translate="label">
 ....
</catalog_product_view>

这是设置块以在产品视图页面上显示的位置。您可以使用自己的模块XML文件对其进行修改,如下所示:

<catalog_product_view translate="label">
    <reference name="content">
        <block type="compatiblewith/compatible" name="my.block" template="compatiblewith/compatible/template.phtml" />
    </reference>
</catalog_product_view>

这将在产品视图页面的内容区域内显示您的自定义块。

如果块的名称为Compatible.php,则块的命名也会出错。该类应为SmartGrowth_CompatibleWith_Block_Compatible

答案 1 :(得分:0)

您可以在快速查看区域下方的product-shop(产品图像旁边的部分的css类名称)中添加自定义模板,而无需修改核心文件。在模块的布局文件中添加此代码以获取所需的结果(将“module”“block”替换为您的实际模块和块名称):

<catalog_product_view>
         <reference name="content">
            <reference name="product.info">
                <block type="module/block" name="module_block" as="other" template="module/block.phtml"/>
            </reference>
        </reference>
</catalog_product_view>

使用的自定义块的目标是“其他”,它是magento的view.phtml(/app/design/frontend/base/default/template/catalog/product/view.phtml)中默认提供的子HTML。

希望它会有所帮助。