如何从Magento中的SKU获取产品的Url

如何从Magento中的SKU获取产品的Url,magento,Magento,问题很简单。 如果我只知道产品的sku,而不知道其他内容,我如何检索该项目的url。这对于远程服务的唯一id与产品id不匹配的第三方集成非常有用。或者,您可能希望创建一个搜索框,以便仅按sku进行搜索 $product = Mage::helper('catalog/product')->getProduct($this->getData('sku'), Mage::app()->getStore()->getId(), 'sku'); $url = Mage::get

问题很简单。 如果我只知道产品的sku,而不知道其他内容,我如何检索该项目的url。这对于远程服务的唯一id与产品id不匹配的第三方集成非常有用。或者,您可能希望创建一个搜索框,以便仅按sku进行搜索

$product = Mage::helper('catalog/product')->getProduct($this->getData('sku'), Mage::app()->getStore()->getId(), 'sku');

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

您可以根据其sku访问产品的完整url,方法是将其添加到方法中,然后将类上的sku属性设置为要搜索的sku。

您可以使用load方法。这比所有其他解决方案更快、更容易

Mage::getModel('catalog/product')->load('sku', 'sku');
有关加载产品的详细信息,请执行以下操作:

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

还有。。。。您可以将其添加到magento根目录中名为“geturlbysku.php”的文件中。此代码允许轻松提取表示产品的少量json,从而实现小型javascript集成。产品URL是数据集的一部分

<?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=TheskoutheProduct


返回的部分数据包括“url_path”:“your product name.html”,它对应于真实的url。

致命错误:在第16行的/sku.php中不在对象上下文中使用$this时,错误在$product=line。。。奇怪。如果你不能找出哪里出了问题,你应该研究OOP的原理,或者用一个文本值替换$this->getData('sku')。这段代码在magento 1.7上不起作用,它说找不到,但有一个产品的SKUnot found,它不会说找不到。它只会返回没有任何内容的模型。