我使用的是 1.8.1.0.
Magento 版本我正在尝试创建一个新的自定义 block 模块,我将使用它来创建一个新的主页。
- 命名空间:十字军
- 模块:CLHomePage
- block 类型:crusaderhome
- 类:Qwerty(目前正在测试)
- 设计包:十字军
- 主题:默认
这是我目前所拥有的:
\app\etc\modules\Crusader_All.xml
<?xml version="1.0"?>
<config>
<modules>
<Crusader_CLHomePage>
<active>true</active>
<codePool>local</codePool>
</Crusader_CLHomePage>
</modules>
</config>
\app\code\local\Crusader\CLHomePage\etc\config.xml
<?xml version="1.0"?>
<config>
<modules>
<Crusader_CLHomePage>
<version>0.0.1</version>
</Crusader_CLHomePage>
</modules>
<global>
<blocks>
<crusaderhome>
<class>Crusader_CLHomePage_Block</class>
</crusaderhome>
</blocks>
</global>
</config>
\app\code\local\Crusader\CLHomePage\Block\Qwerty.php
<?php
class Crusader_CLHomePage_Block_Qwerty extends Mage_Core_Block_Template
{
// Methods (optional)
}
?>
\app\design\frontend\crusader\default\layout\local.xml
<?xml version="1.0" ?>
<layout>
<cms_index_index>
<reference name="content">
<block type="core/template" name="homepage" template="crusader/home.phtml">
<block type="crusaderhome/qwerty" name="homeads" as="homeads" template="crusader/homeads.phtml" />
</block>
</reference>
</cms_index_index>
</layout>
\app\design\frontend\crusader\default\template\crusader\home.phtml
<div id="home">
<p>Home Wrapper</p>
<?php echo $this->getChildHtml('homeads'); ?>
</div>
\app\design\frontend\crusader\default\template\crusader\homeads.phtml
<p>Adverts</p>
现在,有了上面的内容,我的主页只显示“Home Wrapper”,因此显示了 home.phtml
的内容,但没有显示 homeads.phtml< 的内容
.
如果我将 homeads
的 block 类型更改为 core/template
,它会起作用,并且我会同时看到“Home Wrapper”和“Adverts”。所以我知道问题与对我的新 block 类型(称为 crusaderhome)的引用有关。
我在这里做错了什么......?
最佳答案
首先
将 \app\etc\modules\Crusader_All.xml
更改为
\app\etc\modules\Crusader_CLHomePage.xml
使用cLHomePage
(检查命名约定。你应该像Clhomepage
一样使用小写字母)而不是 block 类型的crusaderhome
。
在
<block type="crusaderhome/qwerty" name="homeads" as="homeads" template="crusader/homeads.phtml" />
关于php - Magento 新的自定义 block 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958701/