Magento自定义站点地图

时间:2014-09-22 13:27:50

标签: php magento sitemap

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/

任何想法有什么不对?

1 个答案:

答案 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());