Замена кнопки в форме поиска на графическую. Как?
Прислано: NecroHill
вт, 17/04/2007 - 15:05
приветствую
нашел на drupal.org статью по поводу замены стандартной кнопки для формы поиска на графическую, вбил себе предлагаемый для 5й версии код в template.php и никаких результатов....может кто нибудь уже заморачивался по этому поводу?...и чтоб hover на нее на CSS настроить было бы здорева...
пробовал тут искать по форуму - не нашел
пасиб!
- NecroHill's blog
- Для комментирования войдите или зарегистрируйтесь
<?php
function phptemplate_search_theme_form($form) {
$form['submit']['#theme'] = 'button';
$form['submit']['#button_type'] = 'image';
$form['submit']['#attributes'] = array(
'src' => '/path-to-your-theme/img/search-button.png',
'alt' => t(Search)
);
return form_render($form);
}
?>Для Drupal 5.x замени последнюю строчку на return drupal_render($form);
- Для комментирования войдите или зарегистрируйтесь
спасибо, но как я уже и говорил - код пробовал, пути прописывал. там на дне страницы есть вариант для пятого с путями в виде переменных друпала.
не пашет короче...ни на моей теме, ни на стандартной. кнопки остаются какими есть.
может кроме кода еще в админке что-то кликнуть надо. ?
еще попутно - может кто знает как обычной ссылкой заменить кнопу? там уж в СSS ее картинкой заменить - дело техники.
- Для комментирования войдите или зарегистрируйтесь
может тогда стоит достучаться до этой кнопки через такую CSS-конструкцию:
#search .button { а здесь уже стили, но hover работать не будет, вроде }
- это для текущей темы на drupal.ru
ДОБАВЛЕНО:
а вообще, скачайте тему aquasoft , там форма поиска полностью переписывается. Используется следующий трюк:
в template.php
function phptemplate_search_theme_form($form) { return _phptemplate_callback('search-box', array('form' => $form)); }
потом создаем файл search-box.tpl.php в папке с темой, и в него прописываем:
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
<img src="<?php print base_path() . drupal_get_path('theme', 'aquasoft')
.'/images/spotlight_left.gif' ?>" alt="" />
</td>
<td width="100%" class="searchbox">
<input maxlength="128" name="search_block_form_keys" id="edit-search_block_form_keys" size="15"
value=" Search" onclick="value=''" title="Enter the terms you wish to search for." class="form-text"
type="text">
<input type="hidden" name="form_token" id="edit-search-block-form-form-token" value="<?php print
drupal_get_token('search_form'); ?>" />
<input name="form_id" id="edit-search-theme-form" value="search_theme_form" type="hidden">
</td>
<td>
<input name="op" value="Search" class="form-submit" type="image" src="<?php print base_path() .
drupal_get_path('theme', 'aquasoft') .'/images/spotlight_clear.gif' ?>" alt="" />
</td>
</tr>
</table>Т.е. это уже банально таблица, которую уж можно и самим нарисовать.
- Для комментирования войдите или зарегистрируйтесь
Что за листинги? О_о
а вот так разве не работает(?):
button{ border: 1px solid black; background: #B0C4DE; font: bold 12px Verdana, Geneva, Arial, Helvetica, sans-serif; }
или вот так
button{ background: url(/путь/к/вашей/картинке/1.jpg) no-repeat scroll center; font: bold 12px Verdana, Geneva, Arial, Helvetica, sans-serif; }
- Для комментирования войдите или зарегистрируйтесь
да, это будет работать, но поменяются ВСЕ кнопки, "найти", "Просмотр коментария", "Добавить комментари".
Хотя может такое и нужно задающему вопрос.
Но раз уж был задан вопрос как поменять именно эту кнопку, то и предложил использовать
#search .buttonа код был приведен потому, что как только человек меняет эту кнопку, то в большинстве случаев меняют и вообще форму поиска на свою =)
- Для комментирования войдите или зарегистрируйтесь
спасибо за решения. с графикой разобрался благодаря им. а вот что насчет текстовых вариантов? :)
- Для комментирования войдите или зарегистрируйтесь
как в aquasoft все сделал как там, но при нажатии "поиск" - в поиске нет результатов, при переходе на следующую страничку выскакивает сообщение "Ошибка при проверке значения, пожалуйста повторите. Если ошибка повторится, сообщите администратору сайта."
я так понимаю что drupal_get_token выдает неправильное значение, но что где править если не работает стандартный пример из 2-х строчек? еле нашел что вдруг, по какой-то странности в друпале 5-м вдруг так сталось что теперь надо писать не drupal_get_token('search_form') а drupal_get_token('search_theme_form') - подобрал методом подбора...
как все в друпале запутано, обычный элементарный вопрос - поменять что-то местами - вызывает какие-то сверх научные исследования которые даже спецы решить не в состоянии -> http://www.drupal.ru/node/11759 ...
- Для комментирования войдите или зарегистрируйтесь
сделал всё как сказано... вот мой код
search-block-form.tpl.php :
<table cellpadding="0" cellspacing="0" width="100">
<tr colspan="2">
<td height="17"></td>
</tr>
<tr>
<td>
<input type="text" maxlength="128" name="search_block_form_keys" id="edit-search_block_form_keys" size="25" value="" title="Enter the terms you wish to search for." class="form-text" />
</td>
<td valign="top">
<input type="submit" name="op" value="Search" />
<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'); ?>" />
</td>
</tr>
</table>
В 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_box
вот результат:
<form action="/?q=search/node" method="post" id="search-theme-form">
<div><div id="search" class="container-inline"><div class="form-item">
<input type="text" maxlength="128" name="search_theme_form_keys" id="edit-search-theme-form-keys" size="15" value="" title="Введите слова, которые вы хотите искать." class="form-text" />
</div>
<input type="submit" name="op" id="edit-submit" value="Поиск" class="form-submit" />
<input type="hidden" name="form_token" id="edit-search-theme-form-form-token" value="d9b100c912fc86a1e36d896a4345def0" />
<input type="hidden" name="form_id" id="edit-search-theme-form" value="search_theme_form" />
</div>
</div></form>1. Что за блоки появились ?
2. Почему он обрезал мою таблицу ?
Помогите пожалуйста.
- Для комментирования войдите или зарегистрируйтесь
Наверное уже поздно помогать, но
> И вызываю это всё на странице через $search_box
Описана темизация блока поиска, а не темовой формы, вызываемой $search_box
Т.е. $search_box можно смело удалить (закомментировать), но следует включить блок "Форма поиска" на странице /admin/build/block.
Темезация $search_box делается по другому.
И не забываем после таких правок чистить кэш, а то изменений не увидим.
- Для комментирования войдите или зарегистрируйтесь
Вот моя реализация шаблона блока
<form method="post" accept-charset="UTF-8" action="<?php print base_path(); ?>?q=search/node"> <div class="input_border"> <input maxlength="128" name="search_block_form" id="edit-search_block_form_keys" type="text" /> <input name="form_token" value="<?php print drupal_get_token('search_block_form'); ?>" type="hidden"/> <input name="form_id" value="search_block_form" type="hidden" /> </div> <input name="op" type="submit" value="" class="search_submit" /> </form>
- Для комментирования войдите или зарегистрируйтесь








Комментарии