2013-01-14 9 views
6

Po prostu staram się uzyskać wszystkie produkty, które należą do określonego category ID w kolejności Position, że są ustawione w tylnej części.Magento uzyskać wszystkie produkty w określonej kategorii zamówione przez pole "Pozycja"

Wydawało mi się, że próbowałem każdego dostępnego przykładu bez skutku.

Kod podstawowy pracuję z jest następujący (zewnętrznego pliku php, który ładuje Magento ręcznie):

// Load Magento 
require_once $_SERVER['DOCUMENT_ROOT'] . "/app/Mage.php"; 
umask(0); 
Mage::app(); 
// set Store ID 
$store_id = Mage::app()->getStore()->getStoreId(); 
// set Cat ID 
$cat_id = 345; 


$cat = Mage::getModel('catalog/product')->setId(345); 

$products = Mage::getModel('catalog/product') 
    ->getCollection() 
    ->addCategoryFilter($cat) 
    ->addAttributeToSelect("*") 
    ->setOrder('name','asc') 
    ->load(); 

foreach($products as $p) { 
    var_dump($p->getName()); 
} 

Jak mogę to osiągnąć?

Odpowiedz

19

To co w końcu pracował:

$cat_id = 345; 

$category = Mage::getModel('catalog/category')->load($cat_id); 
$collection = $category->getProductCollection()->addAttributeToSort('position'); 
Mage::getModel('catalog/layer')->prepareProductCollection($collection); 

foreach ($collection as $product) { 
    var_dump($product->getName()); 
} 
+4

Nadal działa w wersji Magento-1.8 w celach informacyjnych. –

+1

Aby kontynuować z @WilliamIsted, nadal działa w wersji 1.9. – Leonidas

+0

Dla odniesienia, działa dla EE 1.13.1 – rramiii

2
$product_position_array = Mage::getModel('catalog/category')->load($CategoryID)->getProductsPosition(); 

Należy zwrócić tablicę $product_id = $position.

+0

Dlaczego głosowanie w dół? Pewnie moje formatowanie nie było wspaniałe, ale 3 linie na 1 i użycie właściwego modelu nie jest lepszym rozwiązaniem? Przypuszczam, że mógłbym być bardziej szczegółowy, ponieważ OP chciał mieć tablicę w porządku pozycji, ale to po prostu wymaga sortowania tablicy według wartości w tym momencie. – theycallmepepper

Powiązane problemy