Ноябрь
10
Таксономия: запрет выбора термина верхнего уровня (корневого термина) в форме добавления материала
Drupal Трекбэки (0) Комментарии (1)
Иногда необходимо запретить выбор корневых терминов словаря в форме добавления материала. Тогда в файл template.php вашей темы нужно добавить следующий код:
function имятемы_theme() {
return array(
'gallery_node_form'=> array(
// Forms always take the form argument.
'arguments' => array('form' => NULL),
),
'comment_form'=> array(
// Forms always take the form argument.
'arguments' => array('form' => NULL),
),
'Ид_необходимой_формы'=> array(
// Forms always take the form argument.
'arguments' => array('form' => NULL),
),
);
}
//function имятемы_ИД_формы($form) {
function имятемы_gallery_node_form($form) {
$op1=array();
$op2=array();
$op3=array();
$rootterms=array();
$vocvid=6; //здесь ИД_необходимого_словаря;
$tree =taxonomy_get_tree($vocvid,$max_depth=0);
foreach ($tree as $term) {
if ($term->depth<1>name]=$term->tid;
}
}
foreach($rootterms as $rootterm => $rvalue){
$tree =taxonomy_get_tree( $vocvid,$parent=$rvalue);
foreach($tree as $term) {
$op3['option'][$term->tid]=$term->name;
$op2[]=(object)$op3;
unset($op3);
}
$op1['------']="-----"; //добавил пустышку
$op1[$rootterm]= $op2;
//print krumo_ob($op2);
unset($op2);
}
//записываем в массив #options наши значения
$form['taxonomy']['$vid_словаря']['#options']=$op1;
$output .= drupal_render($form);
return $output;
}
Ну и конечно не забудьте поменять "Имя_Темы" на название Вашей темы, "ИД_Формы" на конкретный идентификатор формы и подставить в переменную $vocvid vid необходимого словаря.
05 Ноябрь 2011, 21:11
Прикольный if получается, я еще такого не видал.
foreach ($tree as $term) {
if ($term->depthname]=$term->tid;//что это????
}
}