2013-01-14 9 views
6

category IDに属するすべての製品を、バックエンドで設定されているPositionの順番で取得しようとしています。Magentoは、特定のカテゴリのすべての製品を 'Position'フィールドで注文します。

私は役に立たないすべての例を試したようです。

私が働いている基本的なコードは(手動でMagentoのをロードし、外部のphpファイル)を、次のとおりです。

// 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()); 
} 

私はこれをどのように実現するのでしょうか?これは$product_id = $positionの配列を返す必要があり

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

答えて

19

これは最終的に働いたものでした。

+4

Magento-1.8ではまだ参考になっています。 –

+1

@WilliamIstedを続行するには、これは1.9でもまだ動作しています。 – Leonidas

+0

参照のために、それはEE 1.13.1のために働いています – rramiii

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

+0

なぜ賛成投票ですか?確かに私のフォーマットは素晴らしくはなかったが、3行を1にして、正しいモデルを使うのは良い方法ではない?私は、OPが位置の順に配列を望んでいたのでより具体的にできると思いますが、この点で配列を値で並べ替えるだけで済みます。 – theycallmepepper

関連する問題