मुझे यह प्रश्न मिला, मुझे आश्चर्य हुआ। और अगर किसी और को किसी समय इसकी आवश्यकता होती है, तो मैं अपने स्वयं के निष्कर्ष यहां पोस्ट करूंगा।
मुझे पूर्ण उत्पाद लोड किए बिना उत्पाद 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 में श्रेणी का उपयोग करती है, तो यह काम नहीं करेगा, क्योंकि यह हिस्सा नहीं दिखाया गया है। मैं जिस दुकान पर काम कर रहा था, उसमें यह मामला था।