Magento 配置文件未加载布局
Magento config file not loading layout
我是 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>
事实证明,我有很多项目阻止 Magneto 渲染布局。这是获取模板和块呈现的方法:
在config.xml:
"Router Name" 必须 a) 匹配布局标签的 "Router Name" 组件,"layout/mymodule.xml" 中的 <mymodule_index_index>
和 b) 是唯一的(即 - 可以't be used in another module).
<mymoduleurl>
标签需要匹配 "URL Name"(即 <frontName>
标签内的内容)。
<moduleoneblockname>
是一个 "Block Name" 需要定义,以便在布局文件的 <block>
标签内使用 "type" 属性。与 "Route Name" 一样,"Block Name" 需要是唯一的。
/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>
- 模块文件 -
/app/etc/modules/Test_ModuleOne.xml 文件:
<config>
<modules>
<Test_ModuleOne>
<active>true</active>
<codePool>local</codePool>
</Test_ModuleOne>
</modules>
</config>
- 控制器 -
/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
}
}
布局文件(注意:存储在/app/design/frontend/base路径下的文件在升级Magento时会被覆盖!)
<mymodulerouter_index_index>
标签的 - "Router Name" 组件应与 config.xml 文件中指定的 "Router Name" 匹配。
- "type" 属性遵循以下格式:type="block name"/"block class"。 "Block name" 被定义为 config.xml 中的标签(在
<blocks>
标签内),而 "block class" 被定义在 class php 文件中 "Block"目录。在此示例中,"Block Name" 在 config.xml 中的 <moduleoneblockname>
标记中定义,"Block Class" 在文件中定义,"Block/myblockclass.php"(参见第 5 项)
/app/design/frontend/base/默认/布局/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>
- 块class文件
- class 名称 "Test_ModuleOne_Block_myblockclass" 的 "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";
}
}
- 模板文件:(注意:存储在/app/design/frontend/base路径中的文件将在升级Magento时被覆盖!)
/app/design/frontend/base/default/template/mytemplate/mytemplate.phtml
<?php
echo "In mytemplate.phtml";
echo $this->myfunction();
?>
通常路由不会在你放置时触发
<module>
Packt_Helloworld
</module>
<frontName>
helloworld
</frontName>
你应该内联,否则路由将无法正常工作:
<module>Packt_Helloworld</module>
<frontName>helloworld</frontName>
也许这对某人有帮助
我是 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>
事实证明,我有很多项目阻止 Magneto 渲染布局。这是获取模板和块呈现的方法:
在config.xml:
"Router Name" 必须 a) 匹配布局标签的 "Router Name" 组件,"layout/mymodule.xml" 中的
<mymodule_index_index>
和 b) 是唯一的(即 - 可以't be used in another module).<mymoduleurl>
标签需要匹配 "URL Name"(即<frontName>
标签内的内容)。<moduleoneblockname>
是一个 "Block Name" 需要定义,以便在布局文件的<block>
标签内使用 "type" 属性。与 "Route Name" 一样,"Block Name" 需要是唯一的。
/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>
- 模块文件 -
/app/etc/modules/Test_ModuleOne.xml 文件:
<config>
<modules>
<Test_ModuleOne>
<active>true</active>
<codePool>local</codePool>
</Test_ModuleOne>
</modules>
</config>
- 控制器 -
/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
}
}
布局文件(注意:存储在/app/design/frontend/base路径下的文件在升级Magento时会被覆盖!)
- "Router Name" 组件应与 config.xml 文件中指定的 "Router Name" 匹配。
- "type" 属性遵循以下格式:type="block name"/"block class"。 "Block name" 被定义为 config.xml 中的标签(在
<blocks>
标签内),而 "block class" 被定义在 class php 文件中 "Block"目录。在此示例中,"Block Name" 在 config.xml 中的<moduleoneblockname>
标记中定义,"Block Class" 在文件中定义,"Block/myblockclass.php"(参见第 5 项)
<mymodulerouter_index_index>
标签的
/app/design/frontend/base/默认/布局/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>
- 块class文件
- class 名称 "Test_ModuleOne_Block_myblockclass" 的 "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";
}
}
- 模板文件:(注意:存储在/app/design/frontend/base路径中的文件将在升级Magento时被覆盖!)
/app/design/frontend/base/default/template/mytemplate/mytemplate.phtml
<?php
echo "In mytemplate.phtml";
echo $this->myfunction();
?>
通常路由不会在你放置时触发
<module>
Packt_Helloworld
</module>
<frontName>
helloworld
</frontName>
你应该内联,否则路由将无法正常工作:
<module>Packt_Helloworld</module>
<frontName>helloworld</frontName>
也许这对某人有帮助