Otrzymuję kolekcję produktów określonej kategorii na stronie w kilku różnych witrynach Magento. Mój kod do pobrania kolekcji to:
$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;
Mój problem polega na tym, że na jednej z witryn Magento, z której korzystamy ProductUrl()
, pobierany jest adres URL podobny do podobnego, http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/
a nie podobny http://www.site.com/shopcat/product-url-key.html
. Ale na wszystkich innych stronach pojawia się tak, jak tego chcemy.
Czy ktoś wie, dlaczego tak może być? Dzięki! Próbowałem getUrlPath()
też użyć, ale to nic nie zwróciło. Wiem, że mogę to obejść, robiąc coś takiego, <?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>
ale ta metoda wydaje się nieco nieefektywna!
EDYCJA 21.03.14: Nadal mam ten problem. Uświadomiłem sobie, że getProductUrl()
pobiera pożądany adres URL w niektórych plikach szablonów witryny, ale nie w innych. Na przykład ładuję jedną kolekcję na stronie głównej i zawiera ona adresy URL, które chcę. Ale getProductUrl()
nie daje mi adresów URL, które chcę z tym samym kodem w widoku kategorii.