![](/img/trans.png)
[英]Magento get child categories / category collection handling. Programming efficiency
[英]Get category collection with like query in 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>';
但是此代碼無法與類似查詢一起使用,如果沒有類似查詢,它就可以正常工作並正確顯示類別列表。 請給我查詢喜歡。
可能是由於使用了“ 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');
讓我知道這是否有幫助,或者您仍然遇到問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.