在Magento中,是否可以通过自定义模块修改默认模板文件而不侵入其* .phtml核心文件?

时间:2011-02-07 05:49:50

标签: php e-commerce magento

我正在创建一个自定义模块,我在产品视图页面中添加了一个按钮(默认文件)。我已将按钮代码插入以下文件中

app\design\frontend\base\default\template\catalog\product\view.phtml

按钮显示&但每次更新Magento时,上面的文件都会被替换,所以我的代码被丢弃了。有没有办法在我的自定义模块中修改或扩展或注入模板编码?我是否需要覆盖核心块或某些内容?

3 个答案:

答案 0 :(得分:8)

  • 为您的模块提供布局文件:

    ...
    <frontend>
        <layout>
            <updates>
                <YOUR_MODULE>
                    <file>YOURMODULE.xml</file>
                </YOUR_MODULE>
            </updates>
        </layout>
    </frontend>
    ...
    
  • 在基本主题的layout/YOURMODULE.xml文件中:

    <layout version="1.0">
        <catalog_product_view>
            <reference name="product.info">
                <action method="setTemplate"><name>YOURMODULE/product/view.phtml</name></action>
            </reference>
        </catalog_product_view>
    </layout>
    
  • 将修改后的view.phtml复制到新目录template/YOURMODULE/product/

  • 打包模块时,请记住包含所有这些文件,但不要覆盖template/catalog/product/view.phtml

下载您的模块的任何人都可能希望对该模板进行自己的更改,因此您还应该包含有关哪个文件已更改以及在何处找到它的说明。由于view.phtml经常被美学家和其他模块所改变,因此更改其中一个子模板会更好一点 - 哪一个取决于你的按钮所在的位置。

作为奖励,在extrahint类型的价格之后有一个名为core/text_list的块 - 它没有模板,因此您在使用template path hints时通常会错过它。您可以安全地添加任意数量的模板,而无需更改任何现有模板:

<layout version="1.0">
    <catalog_product_view>
        <reference name="product.info.extrahint">
            <block type="core/template" name="YOUR.CUSTOM.BLOCK" template="YOUR/CUSTOM/TEMPLATE.phtml" />
        </reference>
    </catalog_product_view>
</layout>

只有在价格对您有用之后才有用。可以安全追加的其他块是选项和容器区域,但它们仅针对具有选项的产品显示。

答案 1 :(得分:1)

问题是您是在app / design / frontend / base / default中安装它。

您需要在另一个目录中创建此目录的副本,例如app / design / frontend / default / yoursite。

Read this for more info on how to do it specifically

答案 2 :(得分:1)

您无法将自定义扩展程序构建为依赖于显示错误计划的默认视图。您应该克隆此模板或扩展它,并有办法启用和禁用您的功能。如果你的模块实现模板或者有办法修改其他模板,那么必须有“设计师指南”。