Znalazłem to pytanie, zastanawiam się tak samo. I na wypadek, gdyby ktoś inny tego potrzebował, opublikuję tutaj własne ustalenia.
Znalazłem dwie metody uzyskania adresu URL produktu bez ładowania pełnego produktu. Ponieważ pracowałem na wolnym serwerze, musiałem znaleźć najszybszą metodę ładowania.
Pierwsza metoda:
Pierwsze pobranie to kolekcja produktów na podstawie identyfikatora produktu:
$_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]"
Druga metoda:
Drugą metodą, wykorzystującą metodę Kalpesh Metha, byłby następujący kod:
Mage::getResourceSingleton('catalog/product')
->getAttributeRawValue($productId, 'url_key', Mage::app()->getStore());
// returns string "product-url-like-this"
Dla tej metody możesz użyć 'url_key'
albo 'url_path'
. Nie znalazłem jednak różnicy.
Różnica między metodami:
Pierwsza metoda zajmuje nieco więcej czasu (około 15% dodatkowego czasu). Druga metoda zwraca jednak tylko ostatnią część adresu URL. Oznacza to, że jeśli sklep używa kategorii w adresie URL, nie będzie działać, ponieważ ta część nie jest wyświetlana. Tak było w sklepie, nad którym pracowałem.