Я отримую колекцію продуктів певної категорії на сторінці в кількох різних сайтах Magento. Мій код отримання колекції:
$category = new Mage_Catalog_Model_Category();
$category->load($id);
$collection = $category->getProductCollection();
$collection->addAttributeToSelect('*');
$collection->addAttributeToFilter('status', 1);
$collection->addFieldToFilter(array(array('attribute'=>'visibility', 'neq'=>"1" )));
$collection->getSelect()->limit(12);
foreach ($collection as $shopProduct) :
echo $shopProduct->getProductUrl();
endforeach;
Моя проблема полягає в тому, що на одному з сайтів Magento, на якому ми отримуємо, ви ProductUrl()
отримано URL-адреса, яка http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/
не подобається http://www.site.com/shopcat/product-url-key.html
. Але на всіх інших сайтах вона з’являється так, як ми цього хочемо.
Хтось знає, чому це може бути? Спасибі! Я також спробував використовувати, getUrlPath()
але це нічого не повернуло. Я знаю, що я можу це вирішити, роблячи щось на кшталт, <?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>
але цей метод здається трохи неефективним!
РЕДАКЦІЯ 21/03/14: У мене все ще є ця проблема. Я зрозумів, що getProductUrl()
отримує шукану URL-адресу в деяких файлах шаблонів сайту, але не в інших. Наприклад, я завантажую одну колекцію на домашню сторінку, і вона дає мені потрібні URL-адреси. Але getProductUrl()
не надає мені потрібних URL-адрес із тим самим кодом на перегляді категорії.