Magento Custom Sitemap

Генерация карты сайта 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/

Есть идеи что не так?

0

Решение

Вы можете попробовать с приведенным ниже кодом.

$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());
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]