ฉันพบคำถามนี้สงสัยเหมือนกัน และในกรณีที่บางคนต้องการเวลานี้ฉันจะโพสต์สิ่งที่ฉันค้นพบที่นี่
ฉันพบสองวิธีในการรับ 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]"
วิธีที่สอง:
วิธีที่สองโดยใช้วิธี Kalpesh Metha จะเป็นรหัสนี้:
Mage::getResourceSingleton('catalog/product')
->getAttributeRawValue($productId, 'url_key', Mage::app()->getStore());
// returns string "product-url-like-this"
สำหรับวิธีนี้คุณสามารถใช้หรือ'url_key'
'url_path'
ฉันไม่ได้พบความแตกต่างว่า
ความแตกต่างระหว่างวิธีการ:
วิธีแรกใช้เวลาเพิ่มขึ้นเล็กน้อย (เพิ่มเวลาประมาณ 15%) อย่างไรก็ตามวิธีที่สองส่งกลับเฉพาะส่วนสุดท้ายของ URL เท่านั้น ซึ่งหมายความว่าหากร้านค้าใช้หมวดหมู่ใน URL มันจะไม่ทำงานเนื่องจากส่วนนั้นจะไม่แสดง นี่เป็นกรณีในร้านค้าที่ฉันทำงานอยู่