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

을하지만 쿼리처럼 제대로 벌금과 쇼 카테고리 목록을 노력없이이 코드는 같은 쿼리 작동하지 않습니다. 제발 같이 쿼리를 제공하십시오.

답변

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'); 

이 도움이 알려줘, 또는 당신은 여전히 ​​문제로 실행하고 있습니다.