4

Magento のサイトマップ生成で特定の CMS ページを追加 / 含まれないようにする方法があるかどうか疑問に思っていました。

専門家のアドバイスをいただければ幸いです。

4

1 に答える 1

4

たとえば、Mage_Sitemap_Model_Resource_Cms_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 の記事Magento for Developers: Part 1 - Introduction to Magento、特に「モデル」と「クラスのオーバーライド」のセクションを参照してください。

于 2012-09-21T11:50:41.900 に答える