Переопределить вывод $search_box

27 Май 2008
Опубликовано VladSavitsky

Решение

Показать форму в шаблоне

Нужно вставить такой код:

<?php if ($search_box): ?><div class="block block-theme"><?php print $search_box ?></div><?php endif; ?>

Чтобы форма поиска была показана, нужно чтобы:

  • Стандартный модуль Search активирован
  • На странице настройки темы (admin/build/themes/settings/< theme-name >) был включен показ формы поиска (галочка возле "Поиск материалов" ("Search box")).
  • Права доступа к форме поиска ("Поиск материалов") были установлены на странице "Контроль доступа" (admin/user/access) в зависимости от роли.

Изменить вид формы поиска

Шаг 1

  • Создайте файл template.php, если он не существует в вашей теме.
  • Добавьте в него код:
    <?php
    function phptemplate_search_theme_form($form) {
      /**
       * This snippet catches the default searchbox and looks for
       * search-theme-form.tpl.php file in the same folder
       * which has the new layout.
       */

      return _phptemplate_callback('search_theme_form', array('form' => $form), array('search-theme-form'));
    }
    ?>

Шаг 2

Сниппет в template.php ловит форму поиска по умолчанию перед тем, как она будет показана и ищет в той же папке файл search-theme-form.tpl.php, который определяет новый дизайн.

Очень простой пример файла search-theme-form.tpl.php (Druapl 4.x):

<label for="edit[search_theme_form_keys]">Search</label>
<input type="text" maxlength="128" name="edit[search_theme_form_keys]" id="edit-search_theme_form_keys"  size="25" value="" title="Enter the terms you wish to search for." class="form-text" />
<input type="submit" name="op" value="Search"  />
<input type="hidden" name="edit[form_id]" id="edit-search-theme-form" value="search_theme_form" />
<input type="hidden" name="edit[form_token]" id="a-unique-id" value="<?php print drupal_get_token('search_theme_form'); ?>" />

Сниппет обновлен и проверен на совместимость с Drupal 4.7.x и Drupal 5.x:

<label for="search_theme_form_keys">Custom Search</label>
<input type="text" maxlength="128" name="search_theme_form_keys" id="edit-search_theme_form_keys"  size="25" value="" title="Enter the terms you wish to search for." class="form-text" />
<input type="submit" name="op" value="Search"  />
<input type="hidden" name="form_id" id="edit-search-theme-form" value="search_theme_form" />
<input type="hidden" name="form_token" id="a-unique-id" value="<?php print drupal_get_token('search_theme_form'); ?>" />

Обратите внимание:
Вам не нужны открывающие и закрывающие теги формы в вашем файле search-theme-form.tpl.php. Drupal автоматически добавить их при отрисовке форм.

Пример. Изменение текста кнопки "Поиск"

Просто найдите следующую строку в search-theme-form.tpl.php:

<input type="submit" name="op" value="Search"  />

и замените на:
<input type="submit" src="images/go-button.gif"  name="op" value="GO!"  />

Пример. Изменить кнопку поиска на картинку

Это можно сделать с использованием CSS, но если вы хотите изменить кнопку на изображение, используя ваш search-theme-form.tpl.php, то вам нужно просто изменить код:

<input type="submit" name="op" value="Search"  />

на такой:
<input type="image" src="images/go-button.gif"  name="op" value="Search"  />

Настройте правильный путь к картинке.

Использованные материалы

Полезные ссылки

 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>