/** * Generate sitemap xml * * @return string */ public function generateXml() { $storeId = $this->getStoreId(); $date = date('Y-m-d'); $simplexml = new Varien_Simplexml_Element('<?xml version="1.0" encoding="UTF-8"?><urlset></urlset>'); $simplexml->addAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9'); /** * Generate categories sitemap */ $changefreq = (string) Mage::getStoreConfig('sitemap/category/changefreq'); $priority = (string) Mage::getStoreConfig('sitemap/category/priority'); $categories = Mage::getModel('catalog/category')->setStoreId($storeId)->getCollection()->addAttributeToSelect('*')->load(); foreach ($categories as $category) { $category = Mage::getModel('catalog/category')->load($category->getId()); if (!$category->getIsActive()) { continue; } $url = $simplexml->addChild('url'); $url->addChild('loc', $category->getCategoryUrl()); $url->addChild('lastmod', $date); $url->addChild('changefreq', $changefreq); $url->addChild('priority', $priority); } /** * Generate products sitemap */ $changefreq = (string) Mage::getStoreConfig('sitemap/product/changefreq'); $priority = (string) Mage::getStoreConfig('sitemap/product/priority'); $products = Mage::getModel('catalog/product')->setStoreId($storeId)->getCollection()->addAttributeToSelect('*'); Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products); $products->load(); foreach ($products as $product) { $product = Mage::getModel('catalog/product')->load($product->getId()); $url = $simplexml->addChild('url'); $url->addChild('loc', $product->getProductUrl()); $url->addChild('lastmod', $date); $url->addChild('changefreq', $changefreq); $url->addChild('priority', $priority); } /** * Generate CMS pages sitemap */ $changefreq = (string) Mage::getStoreConfig('sitemap/page/changefreq'); $priority = (string) Mage::getStoreConfig('sitemap/page/priority'); $pages = Mage::getModel('cms/page')->setStoreId($storeId)->getCollection(); foreach ($pages as $page) { $page = Mage::getModel('cms/page')->load($page->getId()); $url = $simplexml->addChild('url'); $url->addChild('loc', Mage::getBaseUrl() . $page->getIdentifier()); $url->addChild('lastmod', $date); $url->addChild('changefreq', $changefreq); $url->addChild('priority', $priority); } // record last generation time $this->setSitemapTime(now()); $this->save(); return $simplexml->asXml(); }
/** * Render remove action * * @return Varien_Simplexml_Element */ protected function _removeRender() { $remove = new Varien_Simplexml_Element('<remove></remove>'); $remove->addAttribute('name', $this->getName()); return $remove; }