2013-03-05 122 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。

相关问题