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

Аватар пользователя kulikovd kulikovd 13 ноября 2008 в 12:22

Здравствуйте!

Темизация формы поиска, да и вообще темизация любых форм в Друпал - вопрос достаточно популярный и уже хорошо разжеваный. Методы темизации форм всем желающим хорошо известны.

Не ожидал я, что столкнусь в этом деле с проблемой....

Суть проблемы в следующем.

Делаем все как сделует, в template.php создаем функцию

function phptemplate_search_block_form($form) {
  /**
   * This snippet catches the default searchbox and looks for
   * search-block-form.tpl.php file in the same folder
   * which has the new layout.
   */

  return _phptemplate_callback('search-block-form', array('form' => $form));
}

В файл search-block-form.tpl пишем темизированный код

         <td class="search">
             <table class="search">
               <td class="s_left">&nbsp;</td>
               <td><input type="text" maxlength="128" name="search_block_form_keys" id="edit-search_block_form_keys"  size="78" value="" title="Введите слова для поиска" class="form-text" /></td>
               <td class="sbmt"><input type="image" id="edit-search-image" src="<?php print base_path() . path_to_theme() ?>/img/search-button.png"  name="op" value="GO!"  /></td>
               <td class="s_right"></td>
             </table>
         </td>

<input type="hidden" name="form_id" id="edit-search-block-form" value="search_block_form" />
<input type="hidden" name="form_token" id="a-unique-id" value="<?php print drupal_get_token('search_block_form'); ?>" />

На выходе получается вот что:

<form action="/"  accept-charset="UTF-8" method="post" id="search-block-form">
<div>         <td class="search">
             <table class="search">

               <td class="s_left">&nbsp;</td>
               <td><input type="text" maxlength="128" name="search_block_form_keys" id="edit-search_block_form_keys"  size="78" value="" title="Введите слова для поиска" class="form-text" /></td>
               <td class="sbmt"><input type="image" id="edit-search-image" src="/sites/all/themes/root/img/search-button.png"  name="op" value="GO!"  /></td>
               <td class="s_right"></td>
             </table>
         </td>

<input type="hidden" name="form_id" id="edit-search-block-form" value="search_block_form" />
<input type="hidden" name="form_token" id="a-unique-id" value="934db82a8e682f0c758d31b22abbe6f7" />

</div></form>

По сути это как раз то что нужно, но! Я не могу управлять местом вывода тега "form". А это бы мне очень нужно для верстки. Знающие подтвердят, что наличие тега form влияет на отображение расстояний в его окрестностях, в частности это ярко выражено в Internet Explorer.

Как управлять именно выводом тега ? А лучше вообще - как избавиться от последствий при отображении?

В свое время я избавлялся так, выводил открытие формы где-нибудь между открытием таблицы и открытием ячейки :-)Но это ж шалости, а как по правильному?

Комментарии

Аватар пользователя LionSX LionSX 13 декабря 2008 в 14:36

Интересует тот же вопрос. Какой код написать в шаблоне? Если написать <?php print $search_box ?> то на него не действует то, что мы написали в search-block-form.tpl