2013-03-28 72 views
1

我已啓用「使用平面類別目錄」&「使用平面目錄產品」爲「是」以獲得更好的性能。但啓用此選項後,我所得到的所有子類別列表中的一個之前的cms頁面不再有效。 使用它我得到的子類實現之前平面數據的代碼是:Magento如何顯示/列出目錄類別平面表中的所有類別

$_category = Mage::getModel('catalog/category')->load(CATEGORY-ID);  
$_categories = $_category->getCollection()->addAttributeToSelect(array('url_key','name','image','all_children','is_anchor','description')) 
       ->addAttributeToFilter('is_active', 1) 
       ->addIdFilter($_category->getChildren()) 
       ->setOrder('position', 'ASC') 
       ->joinUrlRewrite(); 

注:我已經檢查了,我的兩個平面數據表已成功地填充。如果我將「使用平面目錄類別」選項更改爲「否」,此代碼仍然有效。 現在,應該如何獲取類別列表及其子類別的代碼,因爲它可能會從「catalog_category_flat_store_ *」表中提取數據?

+0

你並不需要,如果你使用平板類表 – Mufaddal 2013-03-28 09:20:51

+0

更改代碼,如果你用它的ID加載類,那麼你就不需要再找回你收集如果我簡單地使用: ' $ cat = Mage :: getModel('catalog/category') - > load(CATEGORY-ID);可以直接使用getChildren方法獲得子節點 – Mufaddal 2013-03-28 09:24:46

回答

1

只需刪除過濾器並檢查。

- > addAttributeToFilter( 'IS_ACTIVE',1) - > addIdFilter($ _分類 - >的getChildren())

也做了getselect,檢查產生什麼樣的SQL查詢。

以上兩點將提供進一步的提示。請在這裏留下您的進一步評論。

+0

$ _categories = $ cat-> getChildren(); ' 然後,我得到一個字符串類型的返回數據,其所有子類別標識以逗號分隔。 – 2013-03-29 06:51:11

+1

Magento Magento並不需要單獨的代碼來從平面類別表或EAV表中拉取集合。它檢查平面目錄是否將從平面目錄表中拉出,或從EAV表中拉出 – oscprofessionals 2013-03-29 11:25:15

4

在這裏,我得到這個代碼的工作

$_category = Mage::getModel('catalog/category')->load(CATEGORY-ID);  
    $_categories = $_category 
        ->getCollection() 
        ->addAttributeToSelect(array('name', 'image', 'description')) 
        ->addIdFilter($_category->getChildren()); 

    foreach ($_categories as $_category): 
     echo $_category->getName(); 
    endforeach; 
相關問題