我想在每个产品页面的价格下添加一个静态框,但我不想覆盖现有的模板文件(例如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搜索并阅读了很多内容,但没有找到满意的答案。
答案 0 :(得分:1)
只有从Mage_Core_Block_Text_List块派生的块才有可能,所以在你的情况下它是不可能的,但是你可以将你的块添加到引用内容(一个从布局文件中呈现所有子项的容器)并将你的块包装成一个带有style =“display:none;”的div设置,然后使用javascript将其移动到预期位置。
这是可能的,但您可以在system-&gt; configuration-&gt; general-&gt; design-&gt;包下更改admin中的默认主题 您将在此处使用的名称将是主题文件夹的名称(请注意,这会更改整个商店的主题),因此您可以在desing / your_theme_name_from_admin / {layout,template}中创建文件夹,并只放置您需要的文件在那里重写。使用此功能,您只能复制要覆盖的phtml文件,并在保留默认副本的同时在新位置进行更改。