Tôi tìm thấy câu hỏi này, tự hỏi tương tự. Và chỉ trong trường hợp người khác cần điều này đôi khi, tôi sẽ đăng những phát hiện của riêng tôi ở đây.
Tôi tìm thấy hai phương pháp lấy URL sản phẩm mà không tải sản phẩm hoàn chỉnh. Vì tôi đang làm việc trên một máy chủ chậm, tôi cần tìm phương thức tải nhanh nhất.
Phương pháp đầu tiên:
Bộ sưu tập sản phẩm đầu tiên dựa trên ID sản phẩm:
$_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]"
Phương pháp thứ hai:
Phương thức thứ hai, sử dụng phương pháp của Kalpesh Metha, sẽ là mã này:
Mage::getResourceSingleton('catalog/product')
->getAttributeRawValue($productId, 'url_key', Mage::app()->getStore());
// returns string "product-url-like-this"
Đối với phương pháp này, bạn có thể sử dụng 'url_key'
hoặc 'url_path'
. Tôi đã không tìm ra sự khác biệt mặc dù.
Sự khác biệt giữa các phương thức:
Phương pháp đầu tiên mất nhiều thời gian hơn một chút (thêm khoảng 15% thời gian). Tuy nhiên, phương thức thứ hai chỉ trả về phần cuối của URL. Điều này có nghĩa là nếu cửa hàng sử dụng danh mục trong URL, nó sẽ không hoạt động, vì phần đó không được hiển thị. Đây là trường hợp trong cửa hàng tôi đang làm việc.