Всем доброго времени суток!
Сайт на drupal 6. Решил темизировать форму поиска search_theme_form, как описано здесь: http://webcoder.kz/content/temizatsiya-poiska-v-drupal-6. Хорошо, всё работает.
Теперь возникла необходимость в html-коде вывести кнопочку "Искать" до поля для строки поиска.
Как понимаю, что надо что то изменить в FormAPI.
Вопрос: как это сделать?
И более общий вопрос: как вообще в FormAPI можно определять порядок вывода полей формы?
Заранее всем большое спасибо!
Комментарии
Вообще то у каждого элемента формы можно задать аттрибут #weight.
У вас немного другой случай, кнопка рендится отдельно и затем прикрепляется к полю с помощью implode. Поэтому, думаю будет достаточно просто поменять местами соответствующие элементы в массиве $vars['form'].
Как не пробовал менять местами элементы массива, всё равно поля выводятся в одном и том же порядке.
Видимо друпал, сортирует эленты формы и кнопка всегда помещается в конец.
Поэтому строку:
<?php
$vars['search_form'] = implode($vars['search']);
?>
просто заменил на стороку:
<?php
$vars['search_form'] = $vars['search']['submit'] . $vars['search']['search_theme_form'] . $vars['search']['hidden'] ;
?>
Друпал тут не причем. implode — это стандартная php функция.
Да это ясно. Но вот я пишу создание полей в нужном порядке, а print_r ($vars['search']); и implode($vars['search']); всё равно их выводят в одном и том же порядке.
Значит уже до того как объеденяются элементы массива, они уже отсортированы
Хм. Наверно, дело в том, что вы их не создаете, а переопределяете. Ведь в вашу фукнцию уже передаётся переменная $vars в которой эти ключи уже существуют.
function yourthemename_preprocess_search_theme_form(&$vars, $hook) {
Да, вы правы, ведь я переопределяю search_theme_form которая до меня уже создана...