1

我想在每个产品页面的价格下添加一个静态框,但我不想覆盖现有的模板文件(例如目录/产品/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>

然后我构建了一个基本模块:
app/code/local/MyPackage/TellLowerPriceLink/Block/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>

还有我的模板文件:
design/frontend/base/default/template/telllowerpricelink/link.phtml

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

所以我的问题是:
1. 主要问题:是否可以在不编辑其模板的情况下在父块元素的末尾添加 html 输出(顺便说一句:我没有看到)(a la renderChildHtml)?2.是否可以将我的模板文件存储在此文件夹中,或者我必须将洞默认主题文件夹复制到自己的主题中?

非常感谢,我用谷歌搜索并阅读了很多,但没有找到令人满意的答案。

4

1 回答 1

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

  2. 这是可能的,但您可以在系统->配置->通用->设计->包下更改管理员中的默认主题您将在此处使用的名称将是您的主题文件夹的名称(请注意,这会更改您的主题整个商店),因此您可以在 desing/your_theme_name_from_admin/{layout, template} 中创建您的文件夹,并仅将您需要覆盖的文件放在那里。有了这个,您可以只复制您想要覆盖的 phtml 文件并在新位置更改它,同时保持默认副本完好无损。

于 2013-01-24T12:09:20.810 回答