Magento默认的站点地图生成生成一个XML文件,显示所有产品,包括与可配置产品相关联的简单产品。我只想要可配置的产品而不是相关的简单产品,任何人都可以帮助我吗?
在Mage / Sitemap / Model / Sitemap.php中,生成XML站点地图的函数是generateXml(),生成产品网址的代码块是:
$changefreq = (string)Mage::getStoreConfig('sitemap/product/changefreq', $storeId);
$priority = (string)Mage::getStoreConfig('sitemap/product/priority', $storeId);
$collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);
foreach ($collection as $item) {
$xml = sprintf('<url><loc>%s</loc><lastmod>%s</lastmod><changefreq>%s</changefreq><priority>%.1f</priority></url>',
htmlspecialchars($baseUrl . $item->getUrl()),
$date,
$changefreq,
$priority
);
$io->streamWrite($xml);
}
unset($collection);
我尝试使用
Mage::getModel('catalog/product')->getCollection();
并改变了这一行:
htmlspecialchars($baseUrl . $item->getUrl()),
到此行以使其正常工作
htmlspecialchars($item->getProductUrl()),
我得到了正确的产品(没有相关产品),但网址是这样的:
http://www.domain.com/catalog/product/view/id/532/
我想要Url重写,所以我将其更改为:
$collection = Mage::getModel('catalog/product')->getCollection($storeId)
->addUrlRewrite();
但我还是得到了这个:
http://www.domain.com/catalog/product/view/id/532/
任何想法有什么不对?
答案 0 :(得分:0)
您可以尝试使用以下代码。
$product_collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('entity_id', 16)->addUrlRewrite();
echo $product_collection->getFirstItem()->getProductUrl();
或者您可以单独加载网址,因为您已经拥有产品系列,而不是尝试类似这样的
Mage::getResourceSingleton('catalog/product')->getAttributeRawValue($productId, 'attribute_code', Mage::app()->getStore());