2013-05-11 48 views
1

我想在自動提示字段中顯示所有類別列表。所以我有一個像查詢代碼 -在magento中獲取帶類似查詢的類別集合

function res($cur_category){ 
     $children_categories = Mage::getModel('catalog/category')->getCategories($cur_category->getId()); 
    $children_categories->addAttributeToFilter('name', array('like' => '%a%')); 
     foreach($children_categories as $child){ 
      $name = $child->getName(); 
     $option.='<li onClick="fill(\''.addslashes($child->getName()).'\');">' .$child->getName(). "</li>"; 
     $option.=res($child); 
     } 
    unset($children_categories); 
     return $option; 
} 

function GetTree(){ 
    $rootcatId= Mage::app()->getStore()->getRootCategoryId(); 
    $categories = Mage::getModel('catalog/category')->getCategories($rootcatId); 
    $categories->addAttributeToFilter('name', array('like' => '%a%')); 
    foreach($categories as $category) 
    { 
     $option.='<li onClick="fill(\''.addslashes($category->getName()).'\');">'.$category->getName()."</li>"; 
     if($category->hasChildren()){ 
     $option.= res($category); 
     } 
    } 
    unset($categories); 
    return $option; 
} 
echo $select = '<ul>'.GetTree().'</ul>'; 

但這種代碼是不一樣的查詢工作,而不會像查詢它是否工作正常罰款和顯示分類列表。請用like提供我的查詢。

回答

2

這可能是由於使用「addAttributeToFilter」方法,或使用「getCategories」來定義集合...我最好的建議是改變你拉動集合的方式。我沒有在功能測試這一點,它一直是一個直接的一個.phtml文件,但我總是用下面的結構來拉動集合(修改,以適應您的變量):

$children_categories = Mage::getModel('catalog/category')->getCollection() 
       ->addAttributeToSelect('*') 
       ->addFieldToFilter('parent_id',array('eq' => $cur_category->getId())) 
       ->addFieldToFilter('name', array('like' => '%a%')) 
       ->addFieldToFilter('include_in_menu',array('eq' => '1')) 
       ->addFieldToFilter('is_active', array('eq' => '1')) 
       ->addAttributeToSort('position', 'asc'); 

最後的三種方法在你的情況下是可選的,但是我會在這裏爲那些希望僅保留在菜單中使用的可見類別的用戶提供它們,並將它們與你的類別樹進行排序。

而對於GetTree()方法:

$categories = Mage::getModel('catalog/category')->getCollection() 
       ->addAttributeToSelect('*') 
       ->addFieldToFilter('parent_id',array('eq' => $rootcatId)) 
       ->addFieldToFilter('name', array('like' => '%a%')) 
       ->addFieldToFilter('include_in_menu',array('eq' => '1')) 
       ->addFieldToFilter('is_active', array('eq' => '1')) 
       ->addAttributeToSort('position', 'asc'); 

讓我知道如果這能幫助,或者您仍然遇到的問題。