Magento 1.9 - 修改布局

Magento 1.9 - modifying layout

为 Magento 1.9 修改布局的最佳方法是什么?我一直在使用管理后端更新布局,但现在需要以编程方式执行此操作。有几篇文章提到了使用 layout.xml,但出于某种原因,我的系统没有获取布局更新。

具体来说,这是我要修改的内容:

原布局

<block type="catalog/product_view_options" name="product.info.options" as="product_options" template="catalog/product/view/options.phtml">
        <action method="addOptionRenderer">
           <type>text</type>
           <block>catalog/product_view_options_type_text</block>
           <template>catalog/product/view/options/type/text.phtml</template>
        </action>
        ...
 </block>

修改布局

<block type="catalog/product_view_options" name="product.info.options" as="product_options" template="catalog/product/view/options.phtml">
        <action method="addOptionRenderer">
           <type>text</type>
           <block>catalog/product_view_options_type_text</block>
           <template>catalog/product/view/options/type/newfile.phtml</template>
        </action>
        ...
 </block>

我修改后的布局位于:app/design/frontend/default/(公司名称)/(模块名称)/layout/layout.xml

layout.xml(只是检查它是否会添加块,"test"):

<layout>
   <default>
      <block type="core/text_list" name="test"/>
   </default>   
</layout>

app/code/local/(公司名称)/(模块名称)/etc/config.xml:

<config>    
    <modules>
        ...
    </modules>
    <frontend>
         <layout>
            <updates>
                <(module name)>
                    <file>local.xml</file>
                </(module name)>
            </updates>
        </layout>
    </frontend>        
</config>

有人能指出我正确的方向吗?谢谢!

我注意到以下两点应该更改:

  1. 您的布局更新文件应该有一个不会与现有模块冲突的唯一名称。在您的 config.xml 中,您指定了 <file>local.xml</file>。问题是,local.xml 已经是 loaded automatically by Magento。因此,如果您尝试添加一个特定于您的模块的新布局更新文件,则不应将该文件名用于您的布局更新文件,但是您可以向该文件添加其他更新,它们将被自动拾取并 最后应用 到最终的合并布局。

Behind the scenes there’s an <updates /> section of the global config that contain nodes with all the file names to load. Once the files listed in the config have been combined, Magento will merge in one last xml file, local.xml.

  1. 您的布局更新文件 app/design/frontend/default/(company name)/(module name)/layout/layout.xml 似乎不在正确的位置。您应该在 app/design/frontend/base/default/layout/(company name)/(module_name).xml 处创建 your new layout update file。然后,您需要更新 config.xml 以指向此文件:<file>(company name)/(module name).xml</file>.

Because of the ability to use different themes in Magento and its fallback mechanism, all extension related theme files are placed in “base/default” package for frontend...