Темизация формы поиска

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

Аватар пользователя Erly Erly 16 октября 2010 в 22:05

Всем доброго времени суток!

Сайт на drupal 6. Решил темизировать форму поиска search_theme_form, как описано здесь: http://webcoder.kz/content/temizatsiya-poiska-v-drupal-6. Хорошо, всё работает.

Теперь возникла необходимость в html-коде вывести кнопочку "Искать" до поля для строки поиска.
Как понимаю, что надо что то изменить в FormAPI.

Вопрос: как это сделать?

И более общий вопрос: как вообще в FormAPI можно определять порядок вывода полей формы?

Заранее всем большое спасибо! Smile

Комментарии

Аватар пользователя Ch Ch 17 октября 2010 в 10:06

Вообще то у каждого элемента формы можно задать аттрибут #weight.
У вас немного другой случай, кнопка рендится отдельно и затем прикрепляется к полю с помощью implode. Поэтому, думаю будет достаточно просто поменять местами соответствующие элементы в массиве $vars['form'].

Аватар пользователя Erly Erly 17 октября 2010 в 12:20

"Ch" wrote:
Вообще то у каждого элемента формы можно задать аттрибут #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'] ;
?>
Аватар пользователя Ch Ch 17 октября 2010 в 15:06

"Erly" wrote:
Видимо друпал, сортирует эленты формы и кнопка всегда помещается в конец.

Друпал тут не причем. implode — это стандартная php функция.

Аватар пользователя Erly Erly 17 октября 2010 в 16:21

"Ch" wrote:
Друпал тут не причем. implode — это стандартная php функция.

Да это ясно. Но вот я пишу создание полей в нужном порядке, а print_r ($vars['search']); и implode($vars['search']); всё равно их выводят в одном и том же порядке.

Значит уже до того как объеденяются элементы массива, они уже отсортированы

Аватар пользователя Ch Ch 17 октября 2010 в 16:36

Хм. Наверно, дело в том, что вы их не создаете, а переопределяете. Ведь в вашу фукнцию уже передаётся переменная $vars в которой эти ключи уже существуют.

function yourthemename_preprocess_search_theme_form(&$vars, $hook) {

Аватар пользователя Erly Erly 17 октября 2010 в 17:05

"Ch" wrote:
Хм. Наверно, дело в том, что вы их не создаете, а переопределяете. Ведь в вашу фукнцию уже передаётся переменная $vars в которой эти ключи уже существуют.

function yourthemename_preprocess_search_theme_form(&$vars, $hook) {

Да, вы правы, ведь я переопределяю search_theme_form которая до меня уже создана...