Estou recebendo uma coleção de produtos de uma determinada categoria em uma página em alguns sites diferentes do Magento. Meu código para obter a coleção é:
$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;
Meu problema é que, em um dos sites Magento em que estamos ProductUrl()
sendo executados, o URL buscado é um URL semelhante http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/
e não mais semelhante http://www.site.com/shopcat/product-url-key.html
. Mas em todos os outros sites, ele aparece como queremos.
Alguém sabe por que isso pode ser? Obrigado! Eu tentei usar getUrlPath()
também, mas isso não retornou nada. Eu sei que posso contornar isso fazendo algo como, <?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>
mas esse método parece um pouco ineficiente!
EDIT 21/03/14: Ainda estou tendo esse problema. Percebi que getProductUrl()
recupera o URL desejado em alguns arquivos de modelo do site, mas não em outros. Por exemplo, estou carregando uma coleção na página inicial e ela me fornece os URLs que desejo. Mas getProductUrl()
não está me dando os URLs que eu quero com o mesmo código em uma exibição de categoria.