2012-08-03 62 views
6

昨天我寫了一些代碼來拉取產品集合。這段代碼工作得很好,但是今天,代碼做了snot工作,沒有任何改變,我不明白爲什麼它不起作用。Magento集合未選擇屬性

這是我編寫

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

昨天我能夠看到,包含的產品列表我的MPN的,JAN的和UPC的(這些都是在後臺自定義屬性)。今天,他們根本沒有加載。這很奇怪,我想也許我對收藏的理解不如我想象的那麼好。

任何幫助將不勝感激。


編輯:

刷新Magento的緩存似乎讓一切重新工作。這是否意味着集合有時會使用緩存,是否有某種方式可以編寫代碼以便它不使用緩存?

回答

12

這取決於你在哪裏使用你的收藏。如果在前端使用集合,並且平面模式處於打開狀態,那麼您的屬性將不可用,因爲它們不包含在Flat索引中。

要包括他們變成扁平索引,你需要下面的XML配置添加到模塊

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

的config.xml文件在這種情況下,它會在平板模式下可用。通過在此XML節點中添加屬性,您的屬性也將自動添加到前端的所有產品列表集合中。

與Magento開發玩得開心!

+1

備註:也適用於類別集合(將''替換爲'') – Alex 2013-05-29 08:24:11