Коллекция продуктов для получения канонического URL-адреса продукта с помощью процесса cron
Действительно странно, что такая проблема связана с получением правильного URL-адреса продукта
Ниже приведена моя коллекция для получения информации о продукте
$store = Mage::app()->getDefaultStoreView();
$rootCategoryId = $store->getRootCategoryId();
// Gets the current store's id
$storeId = $store->getStoreId();
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*')
->addStoreFilter($storeId)
->addAttributeToFilter(
'entity_id',
array('lt' => 2500)
)
->addAttributeToFilter(
'entity_id',
array('gt' => 2100)
)
->addAttributeToFilter(
'status',
array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
)->addUrlRewrite($rootCategoryId);
Когда я запущу этот процесс с помощью командной строки (означает, что любой php-файл для вызова этой коллекции содержит мой правильный URL-адрес продукта
Но проблема возникает, когда эта коллекция вызывается любым процессом cron с таблицей cron_schedule
Я опускаюсь ниже url-адрес
Http://www.anydomain.com/index.php/catalog/product/view/id/2107/s/product-url
Мне нужно только
Http://www.anydomain.com/product-url
Приведенный выше результат отлично работает с любым CLI (означает, что с помощью php-файла можно вызвать эту коллекцию)
Но он не работает с процессом Cron.
Не могли бы вы, пожалуйста, помочь мне сделать это.буду признателен за любое предложение.
1 answers
Проделал эту работу, чтобы установить идентификатор магазина в объекте продукта коллекции продуктов
Просто нужно добавить это как
foreach ($collection as $product)
{
$product->setStoreId($storeId);
}
Итак, в mode/product/url.php
Это станет правдой
$rewrite = $this->getUrlRewrite();
$rewrite->setStoreId($product->getStoreId())
->loadByIdPath($idPath);
if ($rewrite->getId()) {
}
И вы можете получить значение из таблицы перезаписи.
Надеюсь, что это обязательно поможет вам кому-то, кто может столкнуться с подобной проблемой.