2013-01-14 11 views
6

Tôi chỉ đơn giản là cố gắng lấy tất cả các sản phẩm thuộc một số category ID nhất định trong đơn đặt hàng Position chúng được đặt ở mặt sau.Magento nhận tất cả các sản phẩm trong một danh mục nhất định được sắp xếp theo trường 'Vị trí'

Tôi dường như đã thử mọi ví dụ khả dụng khi không có kết quả.

Mã cơ bản tôi đang làm việc với là như sau (file php bên ngoài mà tải Magento bằng tay):

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

Làm thế nào tôi có thể đạt được điều này?

Trả lời

19

Đây là những gì cuối cùng làm việc:

$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

Điều này vẫn đang hoạt động trong Magento-1.8 để tham khảo. –

+1

Để tiếp tục với @WilliamIsted, thao tác này vẫn hoạt động ở phiên bản 1.9. – Leonidas

+0

Để tham khảo, nó hoạt động cho EE 1.13.1 – rramiii

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

này sẽ trả về một mảng của $product_id = $position.

+0

Tại sao bỏ phiếu xuống? Chắc chắn định dạng của tôi không phải là tuyệt vời nhưng 3 dòng 1 và sử dụng mô hình chính xác không phải là một cách tốt hơn để đi? Tôi cho rằng tôi có thể đã được cụ thể hơn kể từ khi OP muốn mảng theo thứ tự của vị trí nhưng điều đó chỉ đơn giản là đòi hỏi phải phân loại mảng theo giá trị tại thời điểm này. – theycallmepepper