2013-03-05 85 views
6

問題很簡單。 如果我知道我的產品的sku並沒有其他東西,我怎麼才能找到該項目的網址。這對於第三方集成通常很有用,其中遠程服務處的唯一ID不會與產品ID相匹配。或者,也許你想讓一個搜索框只能通過sku進行搜索。如何從Magento中的SKU獲得產品的網址

回答

11

你可以只是這樣做:

$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()); 

您可以通過添加這一個方法,然後在類SKU屬性設置爲你想要搜索的SKU訪問基於其SKU產品的完整URL。

+0

致命錯誤:在不在16行/sku.php中的對象上下文中時使用$ this,錯誤發生在$ product =行......奇怪。 – 2013-03-06 21:30:36

+0

如果你不能弄清楚什麼是錯誤的,那麼你應該研究OOP的原則或用文字值替換$ this-> getData('sku')。 – ajameswolf 2013-10-04 13:32:01

2

您可以使用load方法。這比所有其他解決方案更快更簡單。

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

有關裝載產品的更多信息Click Here

+0

此代碼不起作用在magento 1.7它說沒有找到,但有一個產品與SKU – 2013-03-06 21:34:42

+0

沒有找到,它不會說沒有發現它只會返回沒有任何東西的模型。 – ajameswolf 2013-11-08 19:56:05

3

而且....你可以將它添加到一個名爲 'geturlbysku.php' 文件magento根目錄。這段代碼可以使代表產品的少量json易於被拉動,從而實現小型JavaScript集成。產品網址是數據集

<?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()).')'; 
?> 

使用這樣的... www.yoursite.com/geturlbysku.php?sku=theskuoftheproduct數據

部分退還的部分,包括「url_path」:「你的-product-name.html「,它對應於真實的URL。