自定义模块的自定义布局不会在 Magento 1.9 中加载
Posted
技术标签:
【中文标题】自定义模块的自定义布局不会在 Magento 1.9 中加载【英文标题】:Custom Layout for Custom Module wont Load In Magento 1.9 【发布时间】:2017-12-04 09:52:59 【问题描述】:我在 Magento 中制作了一个自定义模块。我现在正试图让它加载自定义布局/模板。我确信这是我想念的简单的东西。请看看我的代码,告诉我我做错了什么。
我的包叫“Ben”,我的模块叫“Distribution”
首先在“App/etc/modules”中,我让 magento 知道我的模块 "Ben_Distribution.xml"
<?xml version="1.0"?>
<config>
<modules>
<Ben_Distribution>
<active>true</active>
<codePool>local</codePool>
</Ben_Distribution>
</modules>
</config>
然后在“app/code/local/Ben/Distribution/controllers”我把我的控制器“IndexController.php”
<?php
class Ben_Distribution_IndexController extends Mage_Core_Controller_Front_Action
public function indexAction()
//echo 'Hello World';
$this->loadLayout();
$this->renderLayout();
?>
然后在“App/code/local/Ben/Distribution/etc”我把我的配置文件“config.xml”
<config>
<modules>
<Ben_Distribution>
<version>0.1.0</version>
</Ben_Distribution>
</modules>
<frontend>
<routers>
<distribution>
<use>standard</use>
<args>
<module>Ben_Distribution</module>
<frontName>distribution</frontName>
</args>
</distribution>
</routers>
<layout>
<updates>
<distribution>
<file>distribution.xml</file>
</distribution>
</updates>
</layout>
</frontend>
</config>
然后在“App/Design/Frontend/Packagename/themename/template/ben/”中放入包含一些 html 的“distribution.phtml”来显示
最后我尝试制作 layout.xml 文件,所以在“App/Design/Frontend/Packagename/themename/layout/ben/”中我放了“distribution.xml”
<?xml version="1.0"?>
<layout version="0.1.0">
<distribution_index_index>
<reference name="content">
<block type="core/template" name="distribution" template="distribution.phtml"/>
</reference>
</distribution_index_index>
</layout>
最终结果是我的页面按预期加载到 www.url.co.uk/distribution/。当我在控制器中使用 echo 语句时,它加载正常(带有“Hello World”的空白页面。但是当我切换到加载/渲染布局时,我得到了默认的网站布局,而我的 .phtml 文件中的内容没有。所以我的 layout.xml 没有被加载。
谢谢
附加信息 我在控制器中使用此代码加载了我的 .phtml 模板,但是由于这加载了标准的“3 列”页面布局,并且我需要 1 列布局,因此我尝试使用 layout.xml 文件来代替。
<?php
class Ben_Distribution_IndexController extends Mage_Core_Controller_Front_Action
public function indexAction()
//Get current layout state
$this->loadLayout();
$block = $this->getLayout()->createBlock(
'Mage_Core_Block_Template',
'ben.distribution',
array(
'template' => 'ben/distribution.phtml'
)
);
$this->getLayout()->getBlock('content')->append($block);
$this->_initLayoutMessages('core/session');
$this->renderLayout();
?>
【问题讨论】:
【参考方案1】:我发现了自己的简单错误。很抱歉浪费您的时间。
<block type="core/template" name="distribution" template="distribution.phtml"/>
应该是
<block type="core/template" name="distribution" template="ben/distribution.phtml"/>
【讨论】:
以上是关于自定义模块的自定义布局不会在 Magento 1.9 中加载的主要内容,如果未能解决你的问题,请参考以下文章
从 magento 的自定义模块中添加 sales_flat_order_item 表中的新字段
history.phtml 上 Magento 中的自定义状态
Magento:自定义模块错误(在 Layout.php 中找不到类)