我是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>
答案 0 :(得分:5)
事实证明,我有许多项目阻止了Magneto渲染布局。这是获取模板和块渲染的方法:
在config.xml中:
“路由器名称”必须a)匹配布局标记的“路由器名称”组件,“layout / mymodule.xml”中的<mymodule_index_index>
和b)是唯一的(即 - 不能使用在另一个模块中)。
<mymoduleurl>
代码需要与“网址名称”匹配(即<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>
/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
}
}
布局文件(注意:升级Magento时,将覆盖存储在/ app / design / frontend / base路径中的文件!)
<mymodulerouter_index_index>
标记的“路由器名称”组件应与 config.xml 文件中指定的“路由器名称”匹配。<blocks>
标记内),而“块类”在“块”目录中的类php文件中定义。在此示例中,“Block Name”在config.xml中的<moduleoneblockname>
标记中定义,“Block Class”在文件“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>
<强> /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/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>
也许这可以帮助某人