Magento:如何使用覆盖功能的块和另一个新的自定义块来编写扩展?

时间:2014-02-05 02:56:35

标签: php magento

我正在为Magento网站编写一些代码,我觉得我与我想要实现的目标不一致。

我正在尝试编写一个插入2个块的扩展名:

  1. Hello_Catalog_Block_Category_View:它使用一些额外功能覆盖Mage_Catalog_Block_Category_View块。

  2. Hello_Catalog_Block_Custom:我想为此扩展程序创建的自定义类

  3. 以下是我尝试在config.xml文件中编写的内容:

    <blocks>
                <catalog>
                    <rewrite>
                        <category_view>Hello_Catalog_Block_Category_View</category_view>
                    </rewrite>
                    <class>
                         <custom>Hello_Catalog_Block_Custom</custom>
                    </class>
                </catalog>
            </blocks>
    

    如果我在刷新浏览器时尝试使用此代码,这种情况无效,因为我必须以错误的方式初始化自定义块。

    现在,如果我试着以这种方式写作:

    <blocks>
                <catalog>
                    <rewrite>
                        <category_view>Hello_Catalog_Block_Category_View</category_view>
                    </rewrite>
                    <class>Hello_Catalog_Block</class>
                </catalog>
            </blocks>
    

    现在,当我刷新浏览器时,目录类别视图的模板不会被渲染,我觉得它被<class>Hello_Catalog_Block</class>覆盖了。

    我的问题是,有没有办法编写一个扩展,允许使用这两个块或一起使用,或者只是你编写一个覆盖块的扩展或编写一个创建新块的扩展的情况只是,不是两个?

    感谢。

1 个答案:

答案 0 :(得分:1)

我认为你认为“自定义区块”将会做什么与他们实际做什么之间存在脱节。没有办法只向config.xml添加内容,并在页面上显示该块。

如果要为模块创建自定义块,第一步是在块下配置新的顶级部分

<blocks>
    <hello_catalog>
        <class>Hello_Catalog_Block</class>
    </hello_catalog>
</blocks>

<hello_catalog>节点是您阻止的组名。当您使用上述配置时,您告诉Magento

  

Hey Magento,如果您在hello_catalog群组中看到某个阻止,则其姓名应以Hello_Catalog_Block开头。

有了上述内容,您就可以在Magento的布局更新XML文件(app/design中的XML文件)中执行此类操作

<block type="hello_catalog/custom" name="me_custom_block" />

上述XML正在创建一个hello_catalog/custom类型的块。这是hello_catalog组中的一个块,其类名为custom。 Magento会将其转换为完整的班级名称Hello_Catalog_Block_Custom(使用config.xml中的信息作为基本名称,然后使用引导词套管custom