Magento配置文件没有加载布局

时间:2015-05-20 04:40:29

标签: xml magento layout config

我是Magento 1.9的新手,我无法让我的config.xml文件加载我的url布局文件:" localhost / index.php / moduleone / index / index" 。有人可以帮我弄清楚我错过了什么吗?

/app/code/local/Test/ModuleOne/etc/config.xml:

<config>
    <modules>
        <Test_ModuleOne>
            <version>0.1.0</version>
        </Test_ModuleOne>
    </modules>
    <frontend>
        <routers>
            ...
        </routers>
        <layout>
            <updates>
                <moduleone>
                    <file>moduleone.xml</file> <!-- Our layout file name-->
                </moduleone>
            </updates>
        </layout>
    </frontend>
    <global>
        ...
    </global>
</config>

/app/design/frontend/default/layout/moduleone.xml:

<?xml version="1.0"?>
    <layout version="0.1.0">
    <moduleone_index_index>
        <reference name="content">
            <block type="moduleone/moduleone" name="moduleone" template="moduleone/moduleone.phtml" />
        </reference>
    </moduleone_index_index>
</layout>

2 个答案:

答案 0 :(得分:5)

事实证明,我有许多项目阻止了Magneto渲染布局。这是获取模板和块渲染的方法:

  1. 在config.xml中:

    • “路由器名称”必须a)匹配布局标记的“路由器名称”组件,“layout / mymodule.xml”中的<mymodule_index_index>和b)是唯一的(即 - 不能使用在另一个模块中)。

    • <mymoduleurl>代码需要与“网址名称”匹配(即<frontName>代码中的内容)。

    • <moduleoneblockname>是需要定义的“块名称”,以便在布局文件中使用<block>标记内的“type”属性。与“路线名称”一样,“阻止名称”必须是唯一的。

  2. <强> /app/code/local/Test/ModuleOne/etc/config.xml:

    <config>
        <modules>
            <Test_ModuleOne>
                <version>0.1.0</version>
            </Test_ModuleOne>
        </modules>
        <frontend>
            <routers>
                <mymodulerouter> <!-- Router Name -->
                    <use>standard</use>
                    <args>
                        <module>Test_ModuleOne</module> 
                        <frontName>mymoduleurl</frontName> <!-- Url Name -->
                    </args>
                </mymodulerouter>
            </routers>
            <layout>
                <updates>
                    <mymoduleurl> <!-- needs to match frontName tag -->
                        <file>modulelayoutfile.xml</file>
                    </mymoduleurl>
                </updates>
            </layout>
        </frontend>
        <global>
            <blocks>
                <!-- new block definition -->
                <moduleoneblockname> <!-- Block Name -->
                    <class>Test_ModuleOne_Block</class>
                </moduleoneblockname>
            </blocks>
        </global>
    </config>
    
    1. 模块文件 -
    2. /app/etc/modules/Test_ModuleOne.xml文件:

      <config>
          <modules>
              <Test_ModuleOne>
                  <active>true</active>
                  <codePool>local</codePool>
              </Test_ModuleOne>       
          </modules>
      </config>
      
      1. 控制器 -
      2. <强> /app/code/local/Test/ModuleOne/controllers/IndexController.php:

        <?php
            class Test_ModuleOne_IndexController extends Mage_Core_Controller_Front_Action{
                public function indexAction(){
                    $this->loadLayout(); // loads the default layout file, page.xml
                    $this->renderLayout(); // renders the default layout file, page.xml
                }
            }
        
        1. 布局文件(注意:升级Magento时,将覆盖存储在/ app / design / frontend / base路径中的文件!)

          • <mymodulerouter_index_index>标记的“路由器名称”组件应与 config.xml 文件中指定的“路由器名称”匹​​配。
          • “type”属性遵循以下格式:type =“block name”/“block class”。 “块名称”在config.xml中定义为标记(在<blocks>标记内),而“块类”在“块”目录中的类php文件中定义。在此示例中,“Block Name”在config.xml中的<moduleoneblockname>标记中定义,“Block Class”在文件“Block / myblockclass.php”中定义(参见第5项)
        2. <强> /app/design/frontend/base/default/layout/modulelayoutfile.xml:

          <layout version="0.1.0">
              <mymodulerouter_index_index> <!-- Format of tag is: (Router Name)_(controller name)_(controller action)-->
                  <reference name="content">
                      <block type="moduleoneblockname/myblockclass" name="right" template="mytemplate/mytemplate.phtml"/>
                  </reference>
              </mymodulerouter_index_index>
          </layout>
          
          1. 阻止类文件
            • 必须使用类名“test_ModuleOne_Block_myblockclass”的“myblockclass”组件作为文件名。
          2. <强> /app/code/local/Test/ModuleOne/Block/myblockclass.php:

            <?php
            class Test_ModuleOne_Block_myblockclass extends Mage_Core_Block_Template
            {
                public function myfunction()
                {
                    return "<br>Loaded myblockclass.php class";
                }
            }
            
            1. 模板文件:(注意:升级Magento时,将覆盖存储在/ app / design / frontend / base路径中的文件!)
            2. <强> /app/design/frontend/base/default/template/mytemplate/mytemplate.phtml

              <?php
                  echo "In mytemplate.phtml";
                  echo $this->myfunction();
              ?>
              

答案 1 :(得分:0)

当您放置

时,通常不会触发路线
                <module>
                  Packt_Helloworld
                </module>
                <frontName>
                  helloworld
                </frontName>

你应该内联,否则路由将无法正常工作:

                <module>Packt_Helloworld</module>
                <frontName>helloworld</frontName>

也许这可以帮助某人