Quiero filtrar y paginar una colección de productos. todo está bien, excepto la paginación. Solo estoy recuperando toda la colección, en lugar de 3 artículos para la primera página.Magento: paginate colección de productos filtrados
//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 />';
}
gracias por su apoyo!
gracias hasta ahora! Traté de regenerar la colección: '$ product_filtered_collection = new Varien_Data_Collection(); foreach ($ product_collection as $ item) { $ product_filtered_collection-> addItem ($ item); } '... y agregó la paginación a esta nueva colección pero eso tampoco funciona –
Ugh. Acabo de volver a leer tu publicación. Tendrás dos problemas más grandes que abordar. Para paginar su colección, el filtrado de precios debe ser parte de la consulta original para cargar datos (que no es así, ya que el 'foreach()' carga primero los datos. Además, según sus necesidades, la lógica del precio final en Magento pueden verse afectados por los observadores que no se ejecutarán para los artículos de esta colección. Lo siento! – benmarks
sí, Ben! me apuntaste en la dirección correcta. Ahora sí funciona. Publicaré el ejemplo de trabajo en aproximadamente 4 horas (causa mis créditos son demasiado bajos) básicamente se trata de crear una nueva colección, filtrarla por los identificadores de los productos y paginarla después. ¡Genial! –