如何使用layout xml将我的自定义块放在Magento的另一个块中?

时间:2014-02-22 10:58:43

标签: magento

首先,我想说我已经在互联网上搜索了这整天,但找不到我想要的东西。我也是新手,所以如果我违反任何规则,请原谅我。

我正在尝试开发一个模块,将视频添加到产品页面以及图像。我坚持这个概念:

如何将块插入现有基块?例如,在产品页面中,有一个块product.info。在这个区块内有“可用性”,“价格”等。 如何使用我的模块的布局xml和模板在“可用性”下方和“价格”上方插入我的自定义块。

所以我试图用我的模块的布局文件来实现这样的东西:

 <catalog_product_view translate="label">
        <reference name="content">
            <reference name="product.info">
                WRITE BLOCK HERE SO THAT MY BLOCK SHOWS BELOW AVAILABLITY
            </reference>
        </reference>
    </catalog_product_view>

这可能吗?或者我是否必须覆盖核心类Mage_Catalog_Block_Product_View才能执行此操作?

PS:基本上我的目标是在图片旁边列出我的视频。现在,我可以从模块中列出我的视频,但在这种情况下不会出现图像。我用了

<block type="myblock/myblock" name="somename" as="media" template="abc.phtml"/>

所以我想将我的块添加到现有内容中。

3 个答案:

答案 0 :(得分:2)

我解决了。我不得不重写Mage_Catalog_Block_Product_View_Media。

在我的班级中,我像这样覆盖函数_toHtml函数:

public function _toHtml()
{
    $html = parent::_toHtml();
    $html.=$this->getChildHtml('media_video');
    return $html;
}

其中“media_video”是我的块。我的布局xml文件:

<catalog_product_view translate="label">
    <reference name="content">
        <reference name="product.info">
            <reference name="product.info.media">
            <block type="myblock/myblock" name="somename" as="media_video" template="beta/abc.phtml"
                   before="-"/>
            </reference>
        </reference>
    </reference>
</catalog_product_view>

答案 1 :(得分:1)

您可以添加新块而不是过度存在。

 <catalog_product_view translate="label">
    <reference name="content">
        <reference name="product.info">
    <block type="myblock/myblock" name="somename" as="media_new" template="abc.phtml"/>
        </reference>
    </reference>
</catalog_product_view>

使用phtml文件中的以下代码获取新块

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

由于

答案 2 :(得分:1)

请注意以下代码中的output="toHtml"。这将在product.info部分中打印您的块。

<catalog_product_view translate="label">
    <reference name="content">
        <reference name="product.info">
            <block type="myblock/myblock" name="somename" as="media"
                template="abc.phtml" output="toHtml" before="-" />
        </reference>
    </reference>
</catalog_product_view>