Генерация карты сайта Magento по умолчанию создает файл XML, в котором отображаются все продукты, включая простые продукты, связанные с настраиваемыми продуктами. Я хочу только настраиваемый продукт, а не связанные простые продукты, кто-нибудь может мне помочь?
В Mage / Sitemap / Model / Sitemap.php функция, которая генерирует карту сайта XML, является generateXml (), а блок кода, который генерирует URL-адреса продукта:
$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()),
Я получаю правильные продукты (без связанных с ними), но URL-адреса таковы:
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/
Есть идеи что не так?
Вы можете попробовать с приведенным ниже кодом.
$product_collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('entity_id', 16)->addUrlRewrite();
echo $product_collection->getFirstItem()->getProductUrl();
или вы можете загрузить URL-адрес отдельно, так как у вас уже есть коллекция продуктов, чем попробовать что-то вроде этого
Mage::getResourceSingleton('catalog/product')->getAttributeRawValue($productId, 'attribute_code', Mage::app()->getStore());
Других решений пока нет …