自定义模块的自定义布局不会在Magento 1.9中加载

时间:2017-12-04 09:53:00

标签: php xml magento

我在Magento制作了一个自定义模块。我现在正在尝试使其加载自定义布局/模板。我确信这是我想念的简单事。请看一下我的代码并告诉我我做错了什么。

我的套餐被称为" Ben"和我的模块"发布"

首先在" 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>

然后在&#34; app / code / local / Ben / Distribution / controllers&#34;我把我的控制器&#34; IndexController.php&#34;

<?php
class Ben_Distribution_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {
        //echo 'Hello World';
        $this->loadLayout();    
        $this->renderLayout();
    }
}
?>

然后在&#34; App / code / local / Ben / Distribution / etc&#34;我把我的配置文件&#34; config.xml&#34;

<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>

然后在&#34; App / Design / Frontend / Packagename / themename / template / ben /&#34;我把&#34; distribution.phtml&#34;包含一些要显示的HTML

最后我尝试将layout.xml文件设置为&#34; App / Design / Frontend / Packagename / themename / layout / ben /&#34;我把&#34; distribution.xml&#34;

<?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语句时它加载得很好(一个空白页面带有&#34; Hello World&#34;但是当我切换到加载/渲染布局时,我得到默认的网站布局而没有关于内容的内容我的.phtml文件。所以我的layout.xml没有加载。

由于

附加信息 我使用我的.phtml模板在控制器中使用此代码加载我,但因为这加载了标准的&#34; 3列&#34;页面布局,我需要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 个答案:

答案 0 :(得分:1)

我发现了自己的简单错误。抱歉浪费你的时间。

<block type="core/template" name="distribution" template="distribution.phtml"/>

应该是

<block type="core/template" name="distribution" template="ben/distribution.phtml"/>