2013-03-05 6 views
6

Câu hỏi rất đơn giản. Nếu tôi biết sku của sản phẩm và không có gì khác, làm cách nào tôi có thể truy xuất url vào mục đó. Điều này thường hữu ích cho việc tích hợp bên thứ ba trong đó id duy nhất tại dịch vụ từ xa sẽ không khớp với id sản phẩm. Hoặc có thể bạn muốn tạo hộp tìm kiếm để chỉ tìm kiếm theo sku.Làm cách nào để nhận được Url của sản phẩm từ SKU của nó trong Magento

Trả lời

11

Bạn chỉ có thể làm điều này:

$sku = 'ecco'; // SKU you want to load. 'ecco' is a sku in the Magento demo data 

$url = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku)->getProductUrl(); 
echo $url; 
1
$product = Mage::helper('catalog/product')->getProduct($this->getData('sku'), Mage::app()->getStore()->getId(), 'sku'); 

$url = Mage::getUrl($product->getUrlPath()); 

Bạn có thể truy cập vào url đầy đủ các sản phẩm dựa trên sku của nó bằng cách thêm này đến một phương pháp và sau đó thiết lập các thuộc tính sku trên lớp để các sku mà bạn muốn tìm kiếm theo.

+0

Lỗi nghiêm trọng: Sử dụng $ this khi không có trong ngữ cảnh đối tượng trong /sku.php trên dòng 16 lỗi là trên $ product = line ... lạ. –

+0

Nếu bạn không thể tìm ra những gì sai ở đó, bạn nên xem xét các nguyên tắc của OOP hoặc thay thế $ this-> getData ('sku') với giá trị bằng chữ. – ajameswolf

2

Bạn có thể sử dụng phương pháp tải. Điều này nhanh hơn và dễ dàng hơn tất cả các giải pháp khác.

Mage::getModel('catalog/product')->load('sku', 'sku'); 

Để biết thêm thông tin về sản phẩm bốc Click Here

+0

mã này không hoạt động trên magento 1.7 nó nói không tìm thấy, nhưng có một sản phẩm với SKU –

+0

không tìm thấy, nó sẽ không nói không tìm thấy nó sẽ chỉ trả về mô hình mà không có bất cứ điều gì trong đó. – ajameswolf

3

Ngoài ra .... Bạn có thể thêm video này vào một file có tên 'geturlbysku.php' trong Magento root dir. Mã này cho phép một lượng nhỏ json đại diện cho sản phẩm được kéo dễ dàng, cho phép tích hợp javascript nhỏ. URL sản phẩm là một phần của tập dữ liệu

<?php 

require_once '/app/Mage.php'; 
umask(0); 
Mage::app('admin'); 

$actual_link = "http://$_SERVER[HTTP_HOST]"; 

$sku = $_GET['sku']; 
$product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku); 
$fullUrl = "/catalog/product/view/id/" . $product->getId(); 

header("Content-Type: application/json"); 

    echo $_GET['callback'] . '('.json_encode($product->getData()).')'; 
?> 

Sử dụng như thế này ... www.yoursite.com/geturlbysku.php?sku=theskuoftheproduct

Một phần của dữ liệu trả về bao gồm "url_path": "bạn -product-name.html "tương ứng với url thực.