Home Communication board WiKi Get Quote

Multiple xml sitemap in Magento

When the amount of the products/categories/pages in Magento is becoming bigger then 50000 in sum, it's required to split the xml sitemap to a few chunks. It's possible to do with the small fix in the code/core/Mage/Sitemap/Model/Sitemap.php.

We need to add the new function here

    public function check_counter(&$io) {
        static $counter;
        $counter++;

        if ($counter == 50000) {
            $io->streamWrite('</urlset>');
            $io->streamClose();
            $filename = preg_replace('/\.xml/', '-'.round($counter/50000).'.xml', $this->getSitemapFilename());
            $io->streamOpen($filename);
            $io->streamWrite('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            $io->streamWrite('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">');
        }
    }

This function will check the amount of the written urls and will create the new file if required. We need to call this function after each url writing, So in default Magento it should be called 3 times in each collection cycle:

        foreach ($collection as $item) {
            ...
            $io->streamWrite($xml);
            $this->check_counter($io);
        }
 
Home About us Privacy statement Terms & Conditions Refund policy © 2007–2021 ArsCommunity