如何在不编辑现有模板的情况下将块元素添加到magento的产品视图中?

时间:2013-01-24 11:10:23

标签: magento templates module block output

我想在每个产品页面的价格下添加一个静态框,但我不想覆盖现有的模板文件(例如catalog / product / view.phtml)来渲染它的子块。

我尝试通过frontend / base / default / layout / local.xml

添加一个块元素
<layout version="0.1.0">
    <default>

        <reference name="product.info">
           <block type="telllowerpricelink/linkbox" name="telllowerpricelink.linkbox" template="telllowerpricelink/link.phtml" before="product.description" output="toHtml" />
        </reference>

    </default>
</layout>

然后我建立了一个基本模块:
应用程序/代码/本地/ MyPackage的/ TellLowerPriceLink /砌块/ LinkBox.php

<?php
class MyPackage_TellLowerPriceLink_Block_Link extends Mage_Core_Block_Template 
{

}
?>

应用程序/代码/本地/ MyPackage的/ TellLowerPriceLink的/ etc / config.xml中

<?xml version="1.0"?>
<config>
    <modules>
        <MyPackage_TellLowerPriceLink>
            <version>0.1.0</version>
        </MyPackage_TellLowerPriceLink>
    </modules>
    <global>
        <blocks>
            <mypackage_telllowerpricelink>
                <class>MyPackage_TellLowerPriceLink_Block</class>
            </mypackage_telllowerpricelink>
        </blocks>
    </global>
</config>

我的模板文件:
设计/前端/碱/默认/模板/ telllowerpricelink / link.phtml

<?php
echo 'Hello world!';
?>

所以我的问题是:
1.主要问题:是否可以在父块元素的末尾添加html输出(btw:我没有看到它)而不编辑其模板(la renderChildHtml)? 2.是否可以将模板文件存储在此文件夹中,或者是否可以将孔默认主题文件夹复制到自己的主题中?

非常感谢,我用Google搜索并阅读了很多内容,但没有找到满意的答案。

1 个答案:

答案 0 :(得分:1)

  1. 只有从Mage_Core_Block_Text_List块派生的块才有可能,所以在你的情况下它是不可能的,但是你可以将你的块添加到引用内容(一个从布局文件中呈现所有子项的容器)并将你的块包装成一个带有style =“display:none;”的div设置,然后使用javascript将其移动到预期位置。

  2. 这是可能的,但您可以在system-&gt; configuration-&gt; general-&gt; design-&gt;包下更改admin中的默认主题 您将在此处使用的名称将是主题文件夹的名称(请注意,这会更改整个商店的主题),因此您可以在desing / your_theme_name_from_admin / {layout,template}中创建文件夹,并只放置您需要的文件在那里重写。使用此功能,您只能复制要覆盖的phtml文件,并在保留默认副本的同时在新位置进行更改。