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)
事实证明,我有许多项目阻止了Magneto渲染布局.这是获取模板和块渲染的方法:
在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)
/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)
/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)
布局文件(注意:当Magento升级时,存储在/ app/design/frontend/base路径中的文件将被覆盖!)
<mymodulerouter_index_index>
标记的"路由器名称"组件应与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)
/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)
/app/design/frontend/base/default/template/mytemplate/mytemplate.phtml
<?php
echo "In mytemplate.phtml";
echo $this->myfunction();
?>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2205 次 |
最近记录: |