Magento 1.9 - 修改布局

时间:2015-06-24 02:42:34

标签: magento layout block magento-1.9

修改Magento 1.9布局的最佳方法是什么?我一直在使用admin后端更新布局,但现在需要以编程方式执行此操作。有几篇文章提到过使用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 个答案:

答案 0 :(得分:1)

以下是我注意到应该改变的两件事:

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

    在幕后,全局配置的<updates />部分包含要加载所有文件名的节点。一旦组合中列出的文件合并,Magento将合并到最后一个xml文件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>
    2.   

      由于能够在Magento及其后备机制中使用不同的主题,所有与扩展相关的主题文件都放在前端的“base / default”包中...