如何使用XML Magento覆盖:catalog / product / view / type / default.phtml

时间:2013-07-31 13:30:23

标签: xml magento overwrite php

我有一个简单的模块,我想覆盖一些模板文件。

例如,当我想通过XML覆盖view.phtml时,我打开我的模块布局XML文件,然后添加:

<catalog_product_view>
  <reference name="product.info">
    <action method="setTemplate">
      <template>my-module-template-folder/catalog/product/view.phtml</template>
    </action>
  </reference>
</catalog_product_view>

但我也想覆盖:catalog / product / view / type / default.phtml,我尝试过任何东西,但没有任何效果。我(想要简单易行)的想法只是为新文件添加了另一个<action method="setTemplate">,但没有任何背景。

有人可以提供正确的代码吗?

1 个答案:

答案 0 :(得分:2)

您可以将catalog/product/view/type/default.phtml的副本放入app/design/frontend/default/<yourdesign>/template/下的设计覆盖中 或者,您可以先在布局XML中使用取消设置,然后再重新定义再次设置模板的块。

查看app/design/frontend/base/default/layout/catalog.xml:268

<PRODUCT_TYPE_simple translate="label" module="catalog">
    <label>Catalog Product View (Simple)</label>
    <reference name="product.info">
        <block type="catalog/product_view_type_simple" name="product.info.simple" as="product_type_data" template="catalog/product/view/type/default.phtml">
            <block type="core/text_list" name="product.info.simple.extra" as="product_type_data_extra" translate="label">
                <label>Product Extra Info</label>
            </block>
        </block>
    </reference>
</PRODUCT_TYPE_simple>

您可能希望在product.info.simple中引用PRODUCT_TYPE_simple

<PRODUCT_TYPE_simple>
    <reference name="product.info">
        <!-- <action method="unsetChild"><name>product.info.simple</name></action> -->
        <action method="setTemplate">
            <!-- app/design/frondend/default/<yourdesign>/template/my-module-template-folder/catalog/product/view.phtml -->
            <template>my-module-template-folder/catalog/product/view.phtml</template>
        </action>
    </reference>
</PRODUCT_TYPE_simple> 

回复后编辑:

感谢您的回复。只是为了分享有效的结果:

<PRODUCT_TYPE_simple>
    <reference name="product.info.simple">
        <action method="setTemplate">
            <template>my-modus-template-folder/catalog/product/view/type/default.phtml</template>
        </action>
    </reference>
</PRODUCT_TYPE_simple>