我在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();
}
}
?>
答案 0 :(得分:1)
我发现了自己的简单错误。抱歉浪费你的时间。
<block type="core/template" name="distribution" template="distribution.phtml"/>
应该是
<block type="core/template" name="distribution" template="ben/distribution.phtml"/>