tôi muốn lọc và phân trang bộ sưu tập sản phẩm. mọi thứ đều ổn - ngoại trừ phân trang. im chỉ nhận lại toàn bộ bộ sưu tập, thay vì 3 mục cho trang đầu tiên.Magento: bộ sưu tập sản phẩm được lọc theo nhóm
//fetch all visible products
$product_collection = Mage::getModel('catalog/product')->getCollection();
//set wanted fields (nescessary for filter)
$product_collection->addAttributeToSelect('name');
$product_collection->addAttributeToSelect('description');
$product_collection->addAttributeToSelect('price');
$product_collection->addAttributeToFilter('visibility', array('neq' => 1));
//filter by name or description
$product_collection->addFieldToFilter(array(
array('attribute'=>'name','like'=>$sTerm),
array('attribute'=>'description','like'=>$sTerm)
));
//filter for max price
foreach ($product_collection as $key => $item) {
if($item->getPrice() >= $priceTo){
$product_collection->removeItemByKey($key);
}
}
//pagination (THIS DOESNT WORK!)
$product_collection->setPageSize(3)->setCurPage(1);
//TEST OUTPUT
foreach ($product_collection as $product) {
echo $product->getName().'<br />';
}
cảm ơn sự hỗ trợ của bạn!
cảm ơn cho đến nay! Tôi đã cố gắng tạo lại bộ sưu tập: '$ product_filtered_collection = new Varien_Data_Collection(); foreach ($ product_collection là $ item) { $ product_filtered_collection-> addItem ($ item); } '... và thêm phân trang vào bộ sưu tập mới này nhưng không hoạt động hoặc –
Ugh. Tôi vừa đọc lại bài đăng của bạn. Bạn sẽ có hai vấn đề lớn hơn để giải quyết. Để phân trang bộ sưu tập của bạn, lọc giá cần phải là một phần của truy vấn ban đầu để tải dữ liệu (mà nó không phải là, vì 'foreach()' tải dữ liệu đầu tiên. Ngoài ra, tùy thuộc vào nhu cầu của bạn, logic giá cuối cùng trong Magento có thể bị ảnh hưởng bởi các nhà quan sát sẽ không chạy cho các mục trong bộ sưu tập này. Xin lỗi! – benmarks
yeah @Ben! bạn đã chỉ cho tôi đúng hướng. Bây giờ nó hoạt động. Tôi sẽ đăng ví dụ làm việc trong khoảng 4h (nguyên nhân tín dụng của tôi quá thấp) về cơ bản là tạo bộ sưu tập mới, lọc theo các id sản phẩm của các mục và phân trang nó sau đó. –