【问题标题】:Magento new custom block moduleMagento 新的自定义块模块
【发布时间】:2014-05-22 10:16:23
【问题描述】:

我使用的是 Magento 版本 1.8.1.0。

我正在尝试创建一个新的自定义块模块,我将使用它来创建一个新的主页。

  • 命名空间:十字军
  • 模块:CLHomePage
  • 方块类型:十字军之家
  • 类: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 的块类型更改为core/template,它会起作用,并且我会看到“Home Wrapper”和“Adverts”。所以我知道问题与对我的新块类型(称为 crusaderhome)的引用有关。

我在这里做错了什么..?

【问题讨论】:

    标签: php xml magento


    【解决方案1】:

    我在 Magento 堆栈交换网站上发布后找到了答案:

    https://magento.stackexchange.com/questions/18098/magento-new-custom-block-module

    这是 Magento 编译器,一旦我禁用编译器,它似乎可以工作。

    管理 > 系统 > 工具 > 编译

    【讨论】:

      【解决方案2】:

      首先

      \app\etc\modules\Crusader_All.xml改成

      \app\etc\modules\Crusader_CLHomePage.xml

      在块类型中使用cLHomePage(检查命名约定。你应该使用像Clhomepage这样的小写字母)而不是crusaderhome

      <block type="crusaderhome/qwerty" name="homeads" as="homeads" template="crusader/homeads.phtml" />
      

      【讨论】:

      • 好的,你是说我应该将我的块类型(在 config.xml 中)称为与我的模块名称(CLHomePage)相同的名称,但只有第一个字母大写..?我不知道块类型必须与模块同名。
      • 不不..不像那样..crusaderhome它是正确的,但你应该检查命名约定..或者你可以在这里粘贴整个配置文件
      • 我的原始问题显示了 CLHomePage 模块的整个配置文件。据我所知,我使用的命名约定对于块类型名称是正确的,在 config.xml 文件和块类型属性中都是小写。我找不到任何其他命名约定的示例...
      • 我把Crusader_All.xml改成了Crusader_CLHomePage.xml...没有效果,还是不行...
      • @AmitBera 它不是写那个的地方...如果你能找到错误请通知..帮助他
      猜你喜欢
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 2013-10-18
      • 1970-01-01
      相关资源
      最近更新 更多