Magento配置文件没有加载布局

Vee*_*Vee 1 xml layout config magento

我是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>
Run Code Online (Sandbox Code Playgroud)

/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>
Run Code Online (Sandbox Code Playgroud)

Vee*_*Vee 5

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

  1. 在config.xml中:

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

    • <mymoduleurl>标签需要匹配"URL名称"(即<frontName>标签内的内容).

    • <moduleoneblockname>是否需要定义"块名称",以便<block>在布局文件中的标记内使用"type"属性.与"路径名称"一样,"块名称"必须是唯一的.

/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>
Run Code Online (Sandbox Code Playgroud)
  1. 模块文件 -

/app/etc/modules/Test_ModuleOne.xml文件:

<config>
    <modules>
        <Test_ModuleOne>
            <active>true</active>
            <codePool>local</codePool>
        </Test_ModuleOne>       
    </modules>
</config>
Run Code Online (Sandbox Code Playgroud)
  1. 控制器 -

/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
        }
    }
Run Code Online (Sandbox Code Playgroud)
  1. 布局文件(注意:当Magento升级时,存储在/ app/design/frontend/base路径中的文件将被覆盖!)

    • <mymodulerouter_index_index>标记的"路由器名称"组件应与config.xml文件中指定的"路由器名称"匹​​配.
    • "type"属性遵循以下格式:type ="block name"/"block class"."块名称"在config.xml中定义为标记(在<blocks>标记内),而"块类"在"块"目录中的类php文件中定义.在此示例中,"块名称" <moduleoneblockname>在config.xml 中的标记中定义,"块类"在文件"Block/myblockclass.php"中定义(请参阅第5项)

/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>
Run Code Online (Sandbox Code Playgroud)
  1. 阻止类文件
    • 必须将类名"myblockclass"组件"Test_ModuleOne_Block_myblockclass"用作文件的名称.

/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";
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 模板文件:(注意:当Magento升级时,存储在/ app/design/frontend/base路径中的文件将被覆盖!)

/app/design/frontend/base/default/template/mytemplate/mytemplate.phtml

<?php
    echo "In mytemplate.phtml";
    echo $this->myfunction();
?>
Run Code Online (Sandbox Code Playgroud)