Eu encontrei essa pergunta, imaginando o mesmo. E, caso alguém precise disso em algum momento, postarei minhas próprias descobertas aqui.
Encontrei dois métodos para obter o URL do produto sem carregar o produto completo. Como eu estava trabalhando em um servidor lento, precisava encontrar o método de carregamento mais rápido.
O primeiro método:
A primeira é uma coleção de produtos com base no ID do produto:
$_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]"
O segundo método:
O segundo método, usando o método de Kalpesh Metha, seria este código:
Mage::getResourceSingleton('catalog/product')
->getAttributeRawValue($productId, 'url_key', Mage::app()->getStore());
// returns string "product-url-like-this"
Para esse método, você pode usar 'url_key'
ou 'url_path'
. Ainda não descobri a diferença.
A diferença entre os métodos:
O primeiro método leva um pouco mais de tempo (cerca de 15% de tempo extra). O segundo método, no entanto, retorna apenas a parte final do URL. Isso significa que, se a loja usar a categoria no URL, ela não funcionará, pois essa parte não será exibida. Este era o caso na loja em que eu estava trabalhando.