Я создал словарик с иерархией терминов, термины из этого словаря можно выбирать при создании нод разных типов. Как можно горнаичить глубину терминов при создании нода определенного типа?
Словарь:
- Термин
-- термин 2
-- термин 3
-Еще термин
-- под термин
-- последний термин
Хотелось бы чтобы при создании нода типа "А" было видно все дерево, а при создании нода типа "Б" видны были только "Термин" и "Еще термин"
Дошел до этого:
<?php
function mytheme_form_alter($form_id, &$form) {
if ($form_id == 'master_p_node_form') {
//Вот тут надо что-то сделать с элементом формы...
}
}
?>
Спасите ...
Комментарии
Можно попробовать использовать Hierarchical Select + Content Taxonomy
Завести для типов нод поля типа taxonomy, и задавать таксономию в них, при этом выставить настройку "Save values additionally to the core taxonomy system (into the 'term_node' table)."
И ограничивать глубину посредством "Depth of taxonomy tree:"
Или еще попробовать такую фишку, как возможность нахождения одного термина в нескольких словарях, где-то я такое читал. Привязать первый уровень ко всем N словарям, второй ко N-1 и т.д. И словари назначить на разные типы нод.
N - число типов нод
Как то сложновато для данной задачи мне кажется.. плюс "storage settings: save values additionally to the core taxonomy database table. (Drupal 6)" необходимо для 5го друпала.
Спасибо за идею, но хочется проще
Проще не знаю...
Может кто другой подскажет?
Со второй попытки все же осилил данную проблему, на случай если кому пригодится - ниже решение:
if ($form_id == 'YOUR-FORM_p_node_form') {
$form['taxonomy'][8]['#options'] = fill_vocabulary_only_with_top_level_terms(8);
}
}
function fill_vocabulary_only_with_top_level_terms($vocab_id) {
$tree = taxonomy_get_tree($vocab_id, 0, -1, 1);
foreach ($tree as $term) {
$opt = new stdClass();
$opt->option = array($term->tid => $term->name);
$new_tax_values[] = $opt;
}
return $new_tax_values;
}
Надеюсь кому-нибудь пригодится. Удачи!