Глюк Hierarchical Select для 6-ки или как перекрыть form_alter?

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

Аватар пользователя index index 15 ноября 2009 в 5:42

Друзья! Многим из вас, экспериментирующим с таксономией, знаком модуль 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()?
  • Как еще можно победить этот глюк?

Комментарии

Аватар пользователя index index 15 ноября 2009 в 19:28

Решил перекрытием формы термина в 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;
}