2013-03-05 11 views
6

Pytanie jest proste. Jeśli znam sku mojego produktu i nic więcej, w jaki sposób mogę pobrać adres URL tego elementu. Jest to zwykle przydatne w przypadku integracji stron trzecich, w której unikalny identyfikator w zdalnej usłudze nie jest zgodny z identyfikatorem produktu. A może chcesz zrobić pole wyszukiwania do wyszukiwania tylko przez sku.Jak mogę uzyskać adres URL produktu z jego SKU w Magento

Odpowiedz

11

można po prostu to zrobić:

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

Można uzyskać dostęp do pełnego adresu URL produktu na podstawie jego sku przez dodanie tego sposobu, a następnie ustawienie atrybutu sku w klasie do sku, które chcesz wyszukiwać według.

+0

Błąd krytyczny: użycie $ this, gdy nie jest w kontekście obiektowym w /sku.php w linii 16, błąd jest na $ product = line ... weird. –

+0

Jeśli nie wiesz, co jest nie tak, powinieneś przyjrzeć się zasadom OOP lub zamienić $ this-> getData ('sku') z dosłowną wartością. – ajameswolf

2

Możesz użyć metody ładowania. Jest to szybsze i łatwiejsze niż wszystkie inne rozwiązania.

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

Aby uzyskać więcej informacji na temat produktów załadowczych Click Here

+0

ten kod nie działa na Magento 1.7, który mówi, że nie został znaleziony, ale istnieje produkt z tym SKU –

+0

nie znaleziony, nie powiedziałbym, że nie znalazł by zwrócić model bez niczego w nim. – ajameswolf

3

Również .... Można dodać to do pliku o nazwie 'geturlbysku.php' w korzeń magento reż. Kod ten umożliwia łatwe pobieranie niewielkiej ilości jsonów produktu, umożliwiając małą integrację z javascript. URL produkt jest częścią zestawu danych

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

Korzystanie tak ... www.yoursite.com/geturlbysku.php?sku=theskuoftheproduct

część danych zwracanej obejmuje „url_path”: "Państwa -product-name.html ", który odpowiada prawdziwemu adresowi URL.

Powiązane problemy