4

我正在为 magento 1.7 开发一个自定义块。我在我的配置 xml 中有这样声明的块。该模块还定义了一个运行良好的控制器。我需要一个带有一些逻辑的新块,所以我想我会使用我已经创建的模块。我在下面包含了块声明。

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
    <Company_Catalog>
        <version>0.1.0</version>
    </Company_Catalog>
</modules>
<global>
    <blocks>
        <catalog>
            <class>Company_Catalog_Block</class>
        </catalog>
    </blocks>
</global>
</config>

我使用以下语法在我的主题中使用了 local.xml 中的块:

<block type="catalog/featured" name="featuredproducts" before="-" template="catalog/featured.phtml"/>

该块看起来像我想要的那样,但问题是该站点的大部分其余部分都已损坏,并且 exception.log 充满了 magento,正在我的模块中寻找其他块。例子:

2012-11-27T19:34:47+00:00 ERR (3):
exception 'Mage_Core_Exception' with message 'Invalid block type:Company_Catalog_Block_Product_List' in /home/project/site_content/app/Mage.php:594
2012-11-27T19:34:47+00:00 ERR (3):
exception 'Mage_Core_Exception' with message 'Invalid block type: Company_Catalog_Block_Product_List_Toolbar' in /home/project/site_content/app/Mage.php:594

我不想重写任何现有块,只需在我已经声明的模块中添加一个新块。

我显然已经告诉 Magento 在我的模块中寻找比我想要的更多的东西。这是我第一次尝试在 Magento 中使用自定义块,所以我不确定我做错了什么。

我知道在 Mage 命名空间中也使用了“目录”,但我正在自己的命名空间中工作。据我了解,应该没有冲突。

谢谢

4

1 回答 1

5

您正在覆盖Mage/Catalog/etc/config.xml中的原始目录块类前缀:

<global>
    <blocks>
        <catalog>
            <class>Mage_Catalog_Block

通过这样做,对目录块类型 () 的每个请求都type="catalog/..."使用前缀Company_Catalog_Block

于 2012-11-27T19:57:32.883 回答