Estoy obteniendo una colección de productos de una determinada categoría en una página en algunos sitios diferentes de Magento. Mi código para obtener la colección es:
$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;
Mi problema es que en uno de los sitios de Magento que estamos ejecutando ProductUrl()
se busca una URL como http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/
y no más http://www.site.com/shopcat/product-url-key.html
. Pero en todos los otros sitios aparece como lo queremos.
¿Alguien sabe por qué podría ser esto? ¡Gracias! Intenté usarlo getUrlPath()
también, pero esto no devolvió nada. Sé que puedo solucionar esto haciendo algo como <?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>
eso, ¡pero ese método parece un poco ineficiente!
EDITAR 21/03/14: sigo teniendo este problema. Me di cuenta de que getProductUrl()
recupera la URL deseada en algunos archivos de plantilla del sitio, pero no en otros. Por ejemplo, estoy cargando una colección en la página de inicio y me da las URL que quiero. Pero getProductUrl()
no me está dando las URL que quiero con el mismo código en una vista de categoría.