2016-01-23 50 views
1

我堅持這幾天。我在管理區域中有自定義網格,我需要顯示兩種語言(商店視圖)的產品名稱和說明。 這裏是我的_prepareCollection功能:Magento收集compate兩列

protected function _prepareCollection() 
    { 
     $store = $this->_getStore(); 
     $collection = 
      Mage::getModel('catalog/product') 
       ->getCollection() 
       ->addAttributeToSelect('short_description') 
     ; 

     if ($store->getId()) { 
      //$collection->setStoreId($store->getId()); 
      $adminStore = Mage_Core_Model_App::ADMIN_STORE_ID; 
      $collection->addStoreFilter($store); 
      $collection->joinAttribute(
       'name', 
       'catalog_product/name', 
       'entity_id', 
       null, 
       'inner', 
       $adminStore 
      ); 

      $collection->joinAttribute(
       'custom_name', 
       'catalog_product/name', 
       'entity_id', 
       null, 
       'left', 
       $store->getId() 
      ); 

      $collection->joinAttribute(
       'custom_short_description', 
       'catalog_product/short_description', 
       'entity_id', 
       null, 
       'left', 
       $store->getId() 
      ); 
     } 

     $this->setCollection($collection); 
     parent::_prepareCollection(); 
     return $this; 
    } 

有什麼辦法來篩選集合(父前:: _ prepareCollection();)只選擇行,其中名稱不等於CUSTOM_NAME。任何幫助都感激不盡。謝謝!

回答

0

您無需加入。只需按商店ID過濾產品收集。由於magento自動從商店ID創建的平面表中獲取數據。所以只需要使用$ collection-> addStoreFilter($ store); 感謝 Avik

+0

凡在你的答案是與列「CUSTOM_NAME」比較列「名」的解決方案? – Deskin

+0

正如我所瞭解的,您需要產品名稱和說明取決於商店的看法。所以,請使用此$集合= 法師:: getModel( '目錄/產品') - > getCollection() - > addAttributeToSelect( '*'); $ collection-> addStoreFilter($ store);您無需連接,因爲此查詢將從catalog_product_flat_X表中返回數據。 Magento將商店視圖數據存儲在平坦表格中以加快執行速度,因此您無需連接每個屬性值。希望這會幫助你 。謝謝 –