Pregunta

He pasado días buscando un tutorial simple sobre cómo agregar filtros a una colección de productos. Si alguien tiene un enlace a un buen tutorial o explantión, realmente lo agradecería. Encontré una piel magento y el archivo list.phtml usa este código:

$products_collection = Mage::getModel( 'catalog/product' )
        ->getCollection()
        ->addAttributeToSelect( '*' )
        ->addCategoryFilter( $_cat )
        ->addOrder( 'position', 'ASC' );
    Mage::getSingleton( 'catalog/product_status' )->addSaleableFilterToCollection( $products_collection );
    Mage::getSingleton( 'catalog/product_visibility' )->addVisibleInCatalogFilterToCollection( $products_collection );
    Mage::getSingleton( 'cataloginventory/stock' )->addInStockFilterToCollection( $products_collection );

No he visto el filtrado realizado con este método "addSalableFilterTocollection". ¿Qué otros atributos se pueden usar de esa manera? ¿Cuáles son las posibles razones por las que un desarrollador usaría ese enfoque? La lista de categorías de temas no tiene la configuración de revisiones. Encontré el código que genera las revisiones, pero creo que las revisiones faltan en el modelo de producto. Lo intenté

Mage::getSingleton( 'review/review' )->addReviewToCollection( $products_collection );

Pero eso no hizo nada.

Estoy más interesado en aprender a pescar en lugar de recibir un pez.

¿Fue útil?

Solución

¿Qué otros atributos se pueden usar [para agregar filtros personalizados]?

Literalmente ningún. Depende del capricho/necesidades del desarrollador o plataforma.

¿Cuáles son las posibles razones por las que un desarrollador usaría ese enfoque?

Ante todo, SECO. Es probable que las condiciones del filtro deban repetirse en múltiples contextos, y el diseño adecuado (sensato) nos diga que la lógica debe encapsularse en un método.

Lo intenté Mage::getSingleton( 'review/review' )->addReviewToCollection( $products_collection ); Pero eso no hizo nada.

Si bien hay mucha magia aparentemente vudú en Magento (generalmente derivada de la arquitectura del evento o Varien_Object::__call(), estos filtros de recolección deben implementarse en alguna parte. Recomiendo buscar a continuación en app/code/ Para encontrar una definición dada:

$ grep -srl 'n addSaleableFilterToCollection'

Otros consejos

Para obtener una visión general de las diferentes opciones para colecciones en Magento, lea Este artículo

Algunas colecciones se pueden modificar mediante el uso de modelos para agregar filtros, básicamente estos modelos solo están cambiando la consulta realizada por Magento para recuperar la colección. Puede usar el siguiente código para imprimir para consultar una determinada colección para ver lo que está sucediendo

var_dump((string)$collection->getSelect());

Los filtros que ha declarado anteriormente cubren todos estos filtros varios, creo. La creación de un filtro de revisión como su descripción podría hacerse escribiendo su propia extensión que tiene un método para unirse a las tablas de revisión a la consulta de colección principal.

Sin embargo, no estoy seguro de que sea un buen curso de acción en cuanto al rendimiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top