Коллекция продуктов для получения канонического 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.

Не могли бы вы, пожалуйста, помочь мне сделать это.буду признателен за любое предложение.

Author: liyakat, 2014-06-06

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()) {
}

И вы можете получить значение из таблицы перезаписи.

Надеюсь, что это обязательно поможет вам кому-то, кто может столкнуться с подобной проблемой.

 2
Author: liyakat, 2014-06-06 11:47:55