Magento 1.9.0.0。製品とカテゴリのXMLサイトマップを調整する2つのイベントを追加しました:
- sitemap_categories_generating_before
- sitemap_products_generating_before
ではMage_Sitemap_Model_Sitemap::generateXml()、彼らは置き換え
    foreach ($collection as $item) {
と
    $priority   = (string)Mage::getStoreConfig('sitemap/product/priority', $storeId);
    $collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);
    $products = new Varien_Object();
    $products->setItems($collection);
    Mage::dispatchEvent('sitemap_products_generating_before', array(
        'collection' => $products
    ));
    foreach ($products->getItems() as $item) {
カテゴリページについても同じですがforeach ($collection as $item)、CMSページ用に20行下が保持されています。私はこの方法を適合させ、Mage_Sitemap_Model_Sitemapそれを置き換えるために書き換え/変更します...
    $pages = new Varien_Object();
    $pages->setItems($collection);
    Mage::dispatchEvent('sitemap_cms_pages_generating_before', array(
        'collection' => $pages,
        'store_id' => $storeId
    ));
    foreach ($pages->getItems() as $item) {
次に、その新しいイベントを使用して、CMSページのサイトマップを変更できます。
イベント:
<sitemap_cms_pages_generating_before>
    <observers>
        <rename_home>
            <class>[model]/observer</class>
            <method>renameCmsHomePageUrl</method>
        </rename_home>
    </observers>
</sitemap_cms_pages_generating_before>
観察者:
public function renameCmsHomePageUrl(Varien_Event_Observer $observer)
{
    $collection = $observer->getCollection();
    foreach ($collection->getItems() as $item) {
        if ($item->getUrl() === 'home') {
            $item->setUrl('');
            break;
        }
    }
}
               
              
app/code/core/Mage/Sitemap/Model/Resource/Cms/Page.php、ここで