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.
Respostas:
Tente obter a coleção assim:
Em outras palavras, informe o modelo para fornecer a chave da URL em vez da URL longa e feia
$collection->addUrlRewrite();
.fonte
Obtendo um URL de produtos
Potencialmente confuso devido aos 3 métodos que você poderia usar, todos os quais estão no Mage_Catalog_Model_Product:
A melhor maneira de explicar é simplesmente mostrar os resultados de várias chamadas. Dado um produto cuja chave de URL é mondrian-large-table-table-set-multicolour no domínio http: //made.local, os resultados são:
fonte