2012-08-03 13 views
6

Ayer escribí un código para extraer una colección de productos. Este código funcionó bien, sin embargo hoy, el código funciona, nada ha cambiado, no puedo entender por qué no va a funcionar.Colección Magento no selecciona el atributo

Esto es lo que codifiqué

$collection = Mage::getModel('catalog/product')->getCollection() 
->addAttributeToSelect('MPN') 
->addAttributeToSelect('JAN') 
->addAttributeToSelect('UPC') 
->addFieldToFilter(array(
    array('attribute'=>'type_id','eq'=>'simple') 
)) 
->setPage(1,10); 
$collection->load(); 
foreach($collection as $item) 
{ 

echo print_r($item->getdata()); 
} 

Ayer pude ver una lista de productos que contenía mi MPN, JAN y la UPC de (estos son los atributos personalizados en el back-end). Hoy no se cargan en absoluto. Es raro como el infierno, creo que tal vez mi comprensión de las colecciones no es tan buena como pensaba.

Cualquier ayuda sería muy apreciada.


EDIT:

La actualización de la memoria caché de Magento parecía que todo funcione de nuevo. ¿Esto significa que la recopilación a veces usa el caché, hay alguna manera de que pueda escribir el código para que no use el caché?

Respuesta

12

Depende de dónde use su colección. Si la colección se usa en la interfaz y el modo Plano está activado, sus atributos no estarán disponibles, ya que no están incluidos en el índice Plano.

Para incluirlos en el índice plana es necesario agregar la siguiente configuración XML en el archivo config.xml del módulo

<config> 
    <frontend> 
     <product> 
       <collection> 
        <attributes> 
         <MPN /> 
         <JAN /> 
         <UPC /> 
        </attributes> 
       </collection> 
      </product> 
    </frontend> 
</config> 

En este caso, estará disponible en el modo plano. Además, al agregar atributos en este nodo XML, sus atributos también se agregarán automáticamente a todas las colecciones de listas de productos en la interfaz.

Diviértete con Magento Development!

+1

Observación: Funciona también para colecciones de categorías (reemplace '' con '') – Alex

Cuestiones relacionadas