2013-05-11 47 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'); 

让我知道如果这能帮助,或者您仍然遇到的问题。