:::: MENU ::::

Magento: Colección de productos filtrados por marca

4.25 avg. rating (81% score) - 4 votes

En Magento, para obtener una colección de productos de la tienda filtrados de una determinada forma, se utiliza habitualmente una consulta como la siguiente:

  // Todos los productos de una marca
  $collection = Mage::getModel('catalog/product')->getCollection()
        ->addAttributeToSelect('name')
        ->addAttributeToSelect('manufacturer')
        ->addAttributeToFilter(array(
              array('attribute'=>'manufacturer', 'eq'=>$marca)
        ));

El problema surge siempre con el valor que debe tomar la variable marca, ya que si el atributo en Magento es de tipo Dropdown o Multiselect, no podemos indicar el valor en formato texto, sino que debemos indicar el identificador de la opción.

Podemos obtener dicho valor de la siguiente forma:

  $marca = Mage::getResourceModel('catalog/product')
                    ->getAttribute('manufacturer')
                    ->getSource()
                    ->getOptionId('Ray ban');

Y finalmente, recorremos los productos seleccionados de la forma habitual:

  foreach ($collection as $product) {
    echo $product->getName() . '<br />';
  }



9 Comments

Hey! Qué opinas sobre el artículo?