J'ai trouvé cette question, me posant la même question. Et juste au cas où quelqu'un d'autre en aurait besoin, je posterai mes propres découvertes ici.
J'ai trouvé deux méthodes pour obtenir l'URL du produit sans charger le produit complet. Comme je travaillais sur un serveur lent, je devais trouver la méthode de chargement la plus rapide.
La première méthode:
La première collection de produits est basée sur l'ID du produit:
$_item = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('product_url')
->addAttributeToFilter('entity_id', $productId)
->addUrlRewrite()
->load();
foreach($_item as $product){
echo $product->getProductUrl();
}
// returns string "http://www.your-domain.com/[category]/[product_url]"
La deuxième méthode:
La deuxième méthode, utilisant la méthode de Kalpesh Metha, serait ce code:
Mage::getResourceSingleton('catalog/product')
->getAttributeRawValue($productId, 'url_key', Mage::app()->getStore());
// returns string "product-url-like-this"
Pour cette méthode, vous pouvez utiliser 'url_key'
ou 'url_path'
. Je n'ai cependant pas découvert la différence.
La différence entre les méthodes:
La première méthode prend un peu plus de temps (environ 15% de temps supplémentaire). Cependant, la deuxième méthode ne renvoie que la dernière partie de l'URL. Cela signifie que si la boutique utilise la catégorie dans l'URL, cela ne fonctionnera pas, car cette partie n'est pas affichée. C'était le cas dans la boutique sur laquelle je travaillais.