Нужно вывести категории чекбоксами, древовидно

Тема в разделе "DLE", создана пользователем danneo, 1 дек 2013.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Модераторы: killoff
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    уже 4 дня решаю задачу. Продвижение жутко медленное.
    Задача: вывести категории из кэша в виде чекбоксов. Но чтобы каждый уровень чекбоксов имел свой стиль, чтобы потом выстроить как древовидное меню со смещением и т.п. (CSS).
    Это я сделал.
    Но нужно еще: если у категории есть вложенные, то сделать именно ее неактивной для выбора чекбоксом (disabled), а чтобы выбирались только конечные, у которых нет вложенных. Вот с этим глухо...
    то, что я уже сделал (функция по формированию массива с HTML кодом всех чекбоксов:(
    PHP:
    public function print_tree_cat_by_id$arr_cat$id_cat /*родитель*/$arr_cat_id false$i /*счетчик уровней вложенности*/){
                if( 
    is_array$arr_cat ) ){
                    foreach( 
    $arr_cat as $cat){
                        if( 
    $cat['parentid'] == $id_cat ){                       
                            
    $arr_cat_id[] = '<label class="cat_checkbox_'$i .'"><input type="checkbox"  value="' $cat['id'] . '" name="" /> ' $cat['name'] . ' </label><br />';
                            
    $res_req $this->print_tree_cat_by_id$arr_cat,  $cat['id'], $arr_cat_id, ++$i );
                            if( 
    count($res_req) ){                           
                                
    $arr_cat_id $res_req;
                                
    $i--;
                            }   
                        }
                    }
                }
                else return 
    false;           
                return 
    $arr_cat_id;
            }
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.116
    Симпатии:
    2.130
    Я так понял, $arr_cat отвечает за список всех категорий. Тогда делаешь так:
    После $arr_cat_id[] = добавляешь код:
    PHP:
    $found 0;
    foreach (
    $arr_cat as $value) {
       if (
    $value[parentid] == $id$found 1;
    }
    if (
    $found) {
       
    //Добавляешь disabled
    }
    Не красиво, зато работать будет.
     
    danneo нравится это.