Encontré esta pregunta, preguntándome lo mismo. Y en caso de que alguien más necesite esto alguna vez, publicaré mis propios hallazgos aquí.
Encontré dos métodos para obtener la URL del producto sin cargar el producto completo. Como estaba trabajando en un servidor lento, necesitaba encontrar el método de carga más rápido.
El primer método:
El primero es una colección de productos basada en la identificación del producto:
$_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]"
El segundo método:
El segundo método, usando el método de Kalpesh Metha, sería este código:
Mage::getResourceSingleton('catalog/product')
->getAttributeRawValue($productId, 'url_key', Mage::app()->getStore());
// returns string "product-url-like-this"
Para este método, puede usar 'url_key'
o 'url_path'
. Sin embargo, no he descubierto la diferencia.
La diferencia entre los métodos:
El primer método lleva un poco más de tiempo (aproximadamente 15% de tiempo extra). Sin embargo, el segundo método solo devuelve la parte final de la URL. Esto significa que si la tienda usa la categoría en la URL, no funcionará, ya que esa parte no se muestra. Este fue el caso en la tienda en la que estaba trabajando.