Запрет выбора верхнего уровня в таксономии

Главные вкладки

Аватар пользователя igigo igigo 20 сентября 2010 в 12:56

Создал разделы сайта на основе таксономии, меню потом тоже на основе нее буду делать. Структура такая

Регион1
- подрегион1
- подрегон2
Регион2
- подрегион1
- подрегон2

При создании материала выбирается в какой раздел идет материал. Так вот нужно чтобы пользователь при создании материала не мог добавить материл в верхний уровень, т.е. Регион1 или Регион2, а только в подрегионы. Находил подобные темы, более того знаю что есть такой hierarchical_select который позволяет это делать, но мне не нравится что он сначала дает выбрать верхний уровень, и только после нажатия на верхний раскрывается нижний уровень рубрик, в моем случае это неудобно - надо сразу видеть всю иерархию рубрик. Подскажите как это реализовать пожалуйста.

Комментарии

Аватар пользователя Ch Ch 20 сентября 2010 в 13:21

Была такая же задача, когда делал самодельный форум:

function mymodule_form_alter(&$form, &$form_state, $form_id) {

  $options = array('' => ' - Пожалуйста, выберите раздел форума - ');
  foreach(taxonomy_get_tree(FORUM_VID) as $k => $v) {
    if($v->parents[0] == 0) {
      $container[$v->tid] = $v->name;
    }
    else {
      $options[$container[$v->parents[0]]][$v->tid] = $v->name;
    }
  }

}

Если каталог имеет более двух уровней, то код будет немного другой.

Еще наверно, надо сюда проверку прикрутить через hook_nodeapi.

Аватар пользователя igigo igigo 21 сентября 2010 в 4:46

спасибо за код. Правда я думал есть готовый модуль чтоб не лезть в код, странно что для такой не совсем редкой задачи его нет. Надеюсь в 7 друпале это пявится...