Я знайшов це питання, цікаво те саме. І лише на випадок, коли комусь це буде потрібно колись, я опублікую свої власні висновки тут.
Я знайшов два способи отримання URL-адреси продукту без завантаження повного продукту. Оскільки я працював на повільному сервері, мені потрібно було знайти найшвидший метод завантаження.
Перший спосіб:
Перше отримання - це колекція продукту на основі ідентифікатора продукту:
$_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]"
Другий спосіб:
Другим методом, що використовує метод Калпеша Мети, буде такий код:
Mage::getResourceSingleton('catalog/product')
->getAttributeRawValue($productId, 'url_key', Mage::app()->getStore());
// returns string "product-url-like-this"
Для цього методу можна використовувати 'url_key'
або 'url_path'
. Я не дізнався різниці, хоча.
Різниця між методами:
Перший метод займає трохи більше часу (приблизно 15% часу більше). Однак другий метод повертає лише остаточну частину URL-адреси. Це означає, що якщо магазин використовує категорію в URL-адресі, він не працюватиме, оскільки ця частина не відображається. Так було в магазині, в якому я працював.