Magento 从sitemap.xml生成中排除特定页面

Magento 从sitemap.xml生成中排除特定页面,magento,Magento,我想知道是否有一种方法可以将一个特定的CMS页面排除在Magento的站点地图生成中 一些专家建议将不胜感激。例如,通过覆盖Mage\u Sitemap\u Model\u Resource\u Cms\u Page::getCollection,如下所示: public function getCollection($storeId) { $pages = array(); $select = $this->_getWriteAdapter()->select()

我想知道是否有一种方法可以将一个特定的CMS页面排除在Magento的站点地图生成中

一些专家建议将不胜感激。

例如,通过覆盖Mage\u Sitemap\u Model\u Resource\u Cms\u Page::getCollection,如下所示:

public function getCollection($storeId)
{
    $pages = array();

    $select = $this->_getWriteAdapter()->select()
        ->from(array('main_table' => $this->getMainTable()), array($this->getIdFieldName(), 'identifier AS url'))
        ->join(
            array('store_table' => $this->getTable('cms/page_store')),
            'main_table.page_id=store_table.page_id',
            array()
        )
        // --- exclude single CMS page "enable-cookies"
        ->where('main_table.identifier<>"enable-cookies"')
        // --- exclude multiple CMS pages "home", "enable-cookies"
        // ->where('main_table.identifier NOT IN (?)', array('home', 'enable-cookies')) 
        // ---
        ->where('main_table.is_active=1')
        ->where('store_table.store_id IN(?)', array(0, $storeId));
    $query = $this->_getWriteAdapter()->query($select);
    while ($row = $query->fetch()) {
        if ($row['url'] == Mage_Cms_Model_Page::NOROUTE_PAGE_ID) {
            continue;
        }
        $page = $this->_prepareObject($row);
        $pages[$page->getId()] = $page;
    }

    return $pages;
}

如果您还不知道如何重写Magento模型类,请阅读Alan Storm的文章,特别是“模型和类重写”部分。

谢谢您的指导,Thelen先生。这似乎是一个相当复杂的解决办法。如果我想将我的主主页从站点地图生成中排除,我如何应用此功能。这个名字本身就是家。非常感谢您的专家建议。在上面的示例中,我排除了CMS页面启用cookies作为示例,因此您只需在家中替换启用cookies。非常感谢Thelen先生@JürgenThelen我们正试图从网站地图中排除多个页面和产品,大约10个产品和页面。你知道我们是否可以简单地将多个->where'main_table.identifierenable cookies'链接在一起,每个cookie都带有页面或产品,并使用这种方法,或者这是一种1页排除的方式?感谢任何我对Magento不熟悉的见解。我应该问一下,这是否适用于产品而不是CMS页面too@jasondavis:使用示例where子句更新了我的答案,该子句显示了如何一次排除多个CMS页面。排除产品的工作原理有点不同,但我想在这篇文章中解释这一点可能是离题的。请单独发布一个关于从网站地图中排除产品的问题。我相信,它会被回答的。