Имеется некий модуль, в каком есть вот такая функция:
function module_name_form_alter(&$form, &$form_state, $form_id) {
............................
$form['any']['category'] = array(
'#type' => 'select',
'#title' => t('Any info'),
'#prefix' => '
'#size' => 10,
'#suffix' => '
',
'#options' => $taxonomy,
'#multiple' => TRUE,
);
...........................
}
Пишу еще подуль, в каком необходимо $form['any']['category'] сделать с '#type' == 'checkboxes' и еще некие изменения.
Сделал функцию:
function secondmodule_secondname_form_alter(&$form, &$form_state, $form_id) {
............................
$form['any']['category'] = array(
'#type' => 'checkboxes',
'#title' => t('Any info'),
'#options' => $option,
);
...........................
}
Пробовал и так:
function secondmodule_secondname_form_alter(&$form, &$form_state, $form_id) {
............................
$form['any']['category']['#type'] = 'checkboxes';
$form['any']['category']['#title'] = t('Any info');
$form['any']['category']['#options'] = $option;
...........................
}
Но проблема в том, что в итоге ничего не изменяется. Вывожу в secondmodule_secondname_form_alter print_r'ом массив $form, само-собой как надо все. Но в итоге форма имеет типа select. На сколько я понимаю, тут я никак не сообщаю, hook_form_alter какого модуля надо выполнять раньше, какого позже. Лазанья по докам не очень помогло.
Подскажите, пожалуйста, как в итоге переопределить в модуле тип с select на search.
Сорри, если что-то не так написал, с друпалом познакомился всего неделю назад.
Комментарии
Делается это так:
В файле template.php Вашей темы (если этого файла нет, то создаем) пишем следующее:
<?php
function название темы_theme () {
return array (
'имя формы' => array (
'arguments' => array('form' => NULL),
),
);
}?>
имя формы смотрим в коде. К примеру для формы регистрации имя будет такое:
Затем добавляете еще одну функцию, в которой собственно все и переопределяете:
<?php
function название_темы_имя_формы ($form) {
$output = '';
//начало наших супер-пупер изменений
$form['any']['category'] = array(
'#type' => 'checkboxes',
'#title' => t('Any info'),
'#options' => $option,
);
// конец изменений
$output .= drupal_render($form);//перерисовываем форму
return $output;
}
?>
Вот собственно и все.