Друзья! Многим из вас, экспериментирующим с таксономией, знаком модуль Hierarchical Select.
И, наверняка, кое-кто еще соображает и в form_alter.
Прикрутил к таксономии версию 6.x-3.x-dev (пока единственная для 6-ки), настроил словарь «Каталог товаров» так, что при создании товара теперь чрезвычайно удобно выбирать разделы и даже на лету создавать новые.
Но при включенном модуле, в форме создания/редактирования термина таксономии, независимо от его конфигурации и настроек словарей, поля «Родители» и «Связанные термины» превращаются в иерархические списки с дефолтными настройками модуля, не пригодные к использованию.
Обнаружил, что ответственность за этот терракт несет функция hs_taxonomy_form_taxonomy_form_term_alter() в hierarchical_select/modules/hs_taxonomy.module, но вернуть стандартный вид полей мне не удается.
Выручайте:
- Работает ли у кого этот модуль на 6-ке без такой проблемы?
- Как изменить или перекрыть функцию hs_taxonomy_form_taxonomy_form_term_alter() и вернуть вывод стандартной taxonomy_form_term()?
- Как еще можно победить этот глюк?
Комментарии
Решил перекрытием формы термина в
template.php
. Просто скопировал фрагмент исходной функции:function garland_theme() {
return array(
'taxonomy_form_term'=> array(
'arguments'=> array('form' => NULL),
),
);
}
//перекрываем форму
function garland_taxonomy_form_term($form) {
$output = '';
$vid = $form['#vocabulary']['vid'];
$tid = $form['tid']['#value'];
$parent = isset($tid) ? array_keys(taxonomy_get_parents($tid)) : array();
$parent = array_keys(taxonomy_get_parents($tid));
$children = taxonomy_get_tree($vid, $tid);
// A term can't be the child of itself, nor of its children.
foreach ($children as $child) {
$exclude[] = $child->tid;
}
$exclude[] = $tid;
$form['advanced']['parent'] = _taxonomy_term_select(t('Parents'), 'parent', $parent, $vid, t('Parent terms') .'.', 1, '<'. t('root') .'>', $exclude);
$output .= drupal_render($form);
return $output;
}