Новосибирск +7(983)

По всем вопросам :

Телеграм : @radgura

Virtuemart - вывести иерархическое дерево выбранных категорий

Функция собирающие все дерево из представленного списка:

function get_cat_tree($rows,$lvlstr,$parentid,$prodmass)
{
$ret='';$show=0;if (!isset($childmass)) $childmass=array();
foreach($rows as $item_op)
{
if ($item_op->category_parent_id==$parentid)
{
$ret.='
<div class="vmcatname vmcatname_'.$item_op->virtuemart_category_id.' dsn" onclick="jQuery('."'.tovmas'".').hide();jQuery('."'.tovmas_".$item_op->virtuemart_category_id."'".').show();">';
if (isset($prodmass[$item_op->virtuemart_category_id]) and count($prodmass[$item_op->virtuemart_category_id])>0) $ret.='<span class="updwar icon-arrow-down-3">&nbsp;</span>';
$ret.='<h4>('.$item_op->virtuemart_category_id.')'.$lvlstr.$item_op->name;
if (isset($prodmass[$item_op->virtuemart_category_id]) and count($prodmass[$item_op->virtuemart_category_id])>0)
$ret.='<span class="reddiv_ reddiv_'.$item_op->virtuemart_category_id.'"> ('.count($prodmass[$item_op->virtuemart_category_id]).')</span>';
$ret.='</h4>
</div>';
$retmass=get_cat_tree($rows,$lvlstr.'&nbsp;-&nbsp;',$item_op->virtuemart_category_id,$prodmass);
$ret.=$retmass['str'];

if (isset($retmass['chlidmass']) and count($retmass['chlidmass'])>0) $childmass=array_merge($childmass, $retmass['chlidmass']);
//дочерняя ветка имеет товары
if ($retmass['show']==1)
{
$show=1;
//$ret.='<div>['.$item_op->virtuemart_category_id.'] has - child</div>';
$childmass[]=$item_op->virtuemart_category_id;
if ($item_op->category_parent_id>0) $childmass[]=$item_op->category_parent_id;
}
//блок товаров
if (isset($prodmass[$item_op->virtuemart_category_id]) and count($prodmass[$item_op->virtuemart_category_id])>0)
{
$ret.='<div style="display:none" class="tovmas tovmas_'.$item_op->virtuemart_category_id.'"><ul class="tovmassul">';
foreach($prodmass[$item_op->virtuemart_category_id] as $item) $ret.= $item;
$ret.='</ul></div>';
$show=1;$childmass[]=$item_op->virtuemart_category_id;
if ($item_op->category_parent_id>0) $childmass[]=$item_op->category_parent_id;
}
}
}
$childmass=array_unique($childmass);
return array('str'=>$ret,'show'=>$show,'chlidmass'=>$childmass);
}

Вызов:

$db = JFactory::getDbo();
$db->setQuery(" select v.virtuemart_category_id,v.category_parent_id,
(select category_name from #__virtuemart_categories_ru_ru vv where vv.virtuemart_category_id=v.virtuemart_category_id) as name
from #__virtuemart_categories v order by name
");$cat_lists = $db->loadObjectList();
.....
if (count($cat_lists)>0)
{
$tree=get_cat_tree($cat_lists,'',0,$prodmass);
$txt=$tree['str'];
foreach($tree['chlidmass'] as $item) $txt=str_replace('vmcatname_'.$item.' dsn','vmcatname_'.$item.'',$txt);
echo $txt;
}

 

В данном примере мы прячем ветки, без товаров через css.

Комментарии (0)

Здесь ещё нет оставленных комментариев.

Оставьте свой комментарий

  1. Добавление комментария от гостя.
Вложения (0 / 3)
Share Your Location

Как с нами связаться

По всем вопросам пишите  

Телеграм: @radgura

OnLine заказ

Отправить сообщение

Нажимая на кнопку «Отправить сообщение», я соглашаюсь:
* с условиями публичной оферты
* обработку моих персональных данных


RAD компоненты

Please publish modules in offcanvas position.