Je reçois une collection de produits d'une certaine catégorie sur une page dans quelques sites Magento différents. Mon code pour obtenir la collection est:
$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;
Mon problème est que sur l'un des sites Magento que nous exécutons, la ProductUrl()
récupération est une URL similaire http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/
et non plus similaire http://www.site.com/shopcat/product-url-key.html
. Mais sur tous les autres sites, il apparaît comme nous le voulons.
Est-ce que quelqu'un sait pourquoi cela pourrait être? Merci! J'ai essayé d'utiliser getUrlPath()
aussi mais cela n'a rien retourné. Je sais que je peux contourner cela en faisant quelque chose comme, <?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>
mais cette méthode semble un peu inefficace!
EDIT 21/03/14: J'ai toujours ce problème. J'ai réalisé que getProductUrl()
l'URL recherchée est récupérée sur certains fichiers modèles du site mais pas sur d'autres. Par exemple, je charge une collection sur la page d'accueil et cela me donne les URL que je veux. Mais getProductUrl()
ne me donne pas les URL que je veux avec le même code sur une vue de catégorie.