2012-08-03 24 views
6

Wczoraj napisałem kod, aby pobrać kolekcję produktów. Ten kod zadziałał dobrze, jednak dzisiaj kod nie działa, nic się nie zmieniło, nie rozumiem, dlaczego nie zadziała.Kolekcja Magento nie wybiera atrybutu

To co mam zakodowane

$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()); 
} 

Wczoraj udało mi się zobaczyć listę produktów, które zawarte na mój MPN, Jan i UPC (są to atrybuty niestandardowe w backend). Dzisiaj nie ładują się wcale. To dziwne jak na diabła, myślę, że może moje rozumienie kolekcji nie jest tak dobre, jak myślałem.

Każda pomoc będzie mile widziana.


EDIT:

Odświeżanie pamięci podręcznej magento wydawało się zrobić wszystko działa ponownie. Czy to oznacza, że ​​kolekcja czasami korzysta z pamięci podręcznej, czy istnieje sposób, w jaki mogę napisać kod, aby nie korzystał z pamięci podręcznej?

Odpowiedz

12

To zależy, gdzie używasz swojej kolekcji. Jeśli kolekcja jest używana na interfejsie, a tryb płaski jest włączony, twoje atrybuty nie będą dostępne, ponieważ nie są uwzględniane w indeksie płaskim.

Aby włączyć je do indeksu płaskiej trzeba dodać następującej konfiguracji XML do pliku config.xml modułu

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

W tym przypadku będzie ona dostępna w trybie płaskim. Również dodając atrybuty do tego węzła XML, twoje atrybuty zostaną automatycznie dodane do wszystkich kolekcji list produktów w interfejsie użytkownika.

Baw się z Magento Development!

+1

Uwaga: działa również w kolekcjach kategorii (zamień '' na '') – Alex

Powiązane problemy