Xml Magento配置文件未加载布局
我是Magento 1.9的新手,在获取config.xml文件以加载url布局文件时遇到问题:“localhost/index.php/moduleone/index/index”。有人能帮我找出我遗漏了什么吗 /app/code/local/Test/ModuleOne/etc/config.xml:Xml Magento配置文件未加载布局,xml,magento,layout,config,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
<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>
<?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>
<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>
<config>
<modules>
<Test_ModuleOne>
<active>true</active>
<codePool>local</codePool>
</Test_ModuleOne>
</modules>
</config>
<?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
}
}
<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>
<?php
class Test_ModuleOne_Block_myblockclass extends Mage_Core_Block_Template
{
public function myfunction()
{
return "<br>Loaded myblockclass.php class";
}
}
0.1.0
...
moduleone.xml
...
/app/design/frontend/default/layout/moduleone.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>
<?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>
<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>
<config>
<modules>
<Test_ModuleOne>
<active>true</active>
<codePool>local</codePool>
</Test_ModuleOne>
</modules>
</config>
<?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
}
}
<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>
<?php
class Test_ModuleOne_Block_myblockclass extends Mage_Core_Block_Template
{
public function myfunction()
{
return "<br>Loaded myblockclass.php class";
}
}
事实证明,我有许多项阻止Magnet渲染布局。以下是获得模板和渲染块的方法:
- “路由器名称”必须a)与“layout/mymodule.xml”中布局标签的“路由器名称”组件相匹配,
,b)唯一(即-不能在其他模块中使用)
标记需要与“URL名称”(即
标记中的内容)匹配
是需要定义的“块名”,以便在布局文件的
标记中使用“type”属性。与“路由名称”一样,“块名称”也必须是唯一的
<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>
<?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>
<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>
<config>
<modules>
<Test_ModuleOne>
<active>true</active>
<codePool>local</codePool>
</Test_ModuleOne>
</modules>
</config>
<?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
}
}
<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>
<?php
class Test_ModuleOne_Block_myblockclass extends Mage_Core_Block_Template
{
public function myfunction()
{
return "<br>Loaded myblockclass.php class";
}
}
0.1.0
标准
测试模块
mymoduleurl
modulelayoutfile.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>
<?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>
<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>
<config>
<modules>
<Test_ModuleOne>
<active>true</active>
<codePool>local</codePool>
</Test_ModuleOne>
</modules>
</config>
<?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
}
}
<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>
<?php
class Test_ModuleOne_Block_myblockclass extends Mage_Core_Block_Template
{
public function myfunction()
{
return "<br>Loaded myblockclass.php class";
}
}
真的
地方的
<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>
<?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>
<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>
<config>
<modules>
<Test_ModuleOne>
<active>true</active>
<codePool>local</codePool>
</Test_ModuleOne>
</modules>
</config>
<?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
}
}
<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>
<?php
class Test_ModuleOne_Block_myblockclass extends Mage_Core_Block_Template
{
public function myfunction()
{
return "<br>Loaded myblockclass.php class";
}
}
事实证明,我有许多项阻止Magnet渲染布局。以下是获得模板和渲染块的方法:
- “路由器名称”必须a)与“layout/mymodule.xml”中布局标签的“路由器名称”组件相匹配,
,b)唯一(即-不能在其他模块中使用)
标记需要与“URL名称”(即
标记中的内容)匹配
是需要定义的“块名”,以便在布局文件的
标记中使用“type”属性。与“路由名称”一样,“块名称”也必须是唯一的
<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>
<?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>
<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>
<config>
<modules>
<Test_ModuleOne>
<active>true</active>
<codePool>local</codePool>
</Test_ModuleOne>
</modules>
</config>
<?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
}
}
<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>
<?php
class Test_ModuleOne_Block_myblockclass extends Mage_Core_Block_Template
{
public function myfunction()
{
return "<br>Loaded myblockclass.php class";
}
}
0.1.0
标准
测试模块
mymoduleurl
modulelayoutfile.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>
<?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>
<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>
<config>
<modules>
<Test_ModuleOne>
<active>true</active>
<codePool>local</codePool>
</Test_ModuleOne>
</modules>
</config>
<?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
}
}
<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>
<?php
class Test_ModuleOne_Block_myblockclass extends Mage_Core_Block_Template
{
public function myfunction()
{
return "<br>Loaded myblockclass.php class";
}
}
真的
地方的
<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>
<?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>
<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>
<config>
<modules>
<Test_ModuleOne>
<active>true</active>
<codePool>local</codePool>
</Test_ModuleOne>
</modules>
</config>
<?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
}
}
<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>
<?php
class Test_ModuleOne_Block_myblockclass extends Mage_Core_Block_Template
{
public function myfunction()
{
return "<br>Loaded myblockclass.php class";
}
}
通常情况下,当您放置
<module>
Packt_Helloworld
</module>
<frontName>
helloworld
</frontName>
帕克托地狱世界酒店
地狱世界
您应该在线执行此操作,否则路由将无法正常工作:
<module>Packt_Helloworld</module>
<frontName>helloworld</frontName>
Packt_Helloworld
地狱世界
也许这可以帮助某人当你把
<module>
Packt_Helloworld
</module>
<frontName>
helloworld
</frontName>
帕克托地狱世界酒店
地狱世界
您应该在线执行此操作,否则路由将无法正常工作:
<module>Packt_Helloworld</module>
<frontName>helloworld</frontName>
Packt_Helloworld
地狱世界
也许这可以帮助某人启用和使用前端模板提示。您可以使用市场上的Magnetor Debug。请确保在
IndexController
的indexAction()
中,按如下方式呈现布局公共函数indexAction(){$this->loadLayout()->renderLayout();}
谢谢大家。你的两个评论都很有帮助。事实证明,有很多地方出了问题——我所遵循的教程对模块、路由/URL、模板、块等使用了相同的名称,这使得很难理解如何“配置”Magento(就像使用示例1 x 1=1教某人乘法一样)。顺便说一句-使用Magento感觉更像是配置而不是编程。。。只是我的意见。我在下面发布了适合我的解决方案。启用并使用前端模板提示。您可以使用市场上的Magnetor Debug。请确保在IndexController
的indexAction()
中,按如下方式呈现布局公共函数indexAction(){$this->loadLayout()->renderLayout();}
谢谢大家。你的两个评论都很有帮助。事实证明,有很多地方出了问题——我所遵循的教程对模块、路由/URL、模板、块等使用了相同的名称,这使得很难理解如何“配置”Magento(就像使用示例1 x 1=1教某人乘法一样)。