覆盖Magento的谷歌站点地图:如何覆盖Mage_Sitemap_Model_Resource_Catalog_Category?



我试图覆盖Magento的功能来创建一个sitemap.xml文件(Catalog > Google Sitemap在后端)。我重写的想法是,并不是所有的产品和类别url都应该包含在站点地图中,我需要产品或类别的类别路径来决定是否包含它。

这就是我所做的,我将它添加到模块的config。xml中:

...
<global>
    ...
    <models>
        ...
        <sitemap>
            <rewrite>
                <sitemap>Company_Module_Model_Sitemap</sitemap>
            </rewrite>
        </sitemap>
        ...
    </models>
    ...
</global>
...

Company_Module_Model_Sitemap被很好地覆盖了,但事实证明我还需要覆盖资源模型才能实现我的目标,因此我向config.xml文件(在models标记之间)添加了以下内容:

<sitemap_resource>
    <rewrite>
        <sitemap>Company_Module_Model_Sitemap_Resource_Catalog_Category</sitemap>
    </rewrite>
</sitemap_resource>

现在开始出错了…它甚至不会加载后端网格,导航到Google Sitemap的后端页面产生以下错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sitemap_id' in 'order clause'

目前,Company_Module_Model_Sitemap_Resource_Catalog_Category类的唯一内容如下:

class Company_Module_Model_Sitemap_Resource_Catalog_Category
     extends Mage_Sitemap_Model_Resource_Catalog_Category { }

所以最后,我的问题:如何正确地覆盖Mage_Sitemap_Model_Resource_Catalog_Category类在Magento?

啊!没关系,我自己发现了错误。:

<sitemap_resource>
    <rewrite>
        <sitemap>Company_Module_Model_Sitemap_Resource_Catalog_Category</sitemap>
    </rewrite>
</sitemap_resource>

应该是这样的:

<sitemap_resource>
    <rewrite>
        <catalog_category>Company_Module_Model_Sitemap_Resource_Catalog_Category</catalog_category>
    </rewrite>
</sitemap_resource>

最新更新