Замена кнопки в форме поиска на графическую. Как?

Прислано: NecroHill

вт, 17/04/2007 - 15:05

приветствую

нашел на drupal.org статью по поводу замены стандартной кнопки для формы поиска на графическую, вбил себе предлагаемый для 5й версии код в template.php и никаких результатов....может кто нибудь уже заморачивался по этому поводу?...и чтоб hover на нее на CSS настроить было бы здорева...

пробовал тут искать по форуму - не нашел
пасиб!

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Toologic в вт, 17/04/2007 - 22:30.

<?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);


Опубликовано NecroHill в ср, 18/04/2007 - 00:50.

спасибо, но как я уже и говорил - код пробовал, пути прописывал. там на дне страницы есть вариант для пятого с путями в виде переменных друпала.
не пашет короче...ни на моей теме, ни на стандартной. кнопки остаются какими есть.
может кроме кода еще в админке что-то кликнуть надо. ?

еще попутно - может кто знает как обычной ссылкой заменить кнопу? там уж в СSS ее картинкой заменить - дело техники.


Опубликовано Shedko в ср, 18/04/2007 - 01:28.

может тогда стоит достучаться до этой кнопки через такую 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>

Т.е. это уже банально таблица, которую уж можно и самим нарисовать.


Опубликовано SadhooKlay (гостевой логин) в ср, 18/04/2007 - 06:31.

Что за листинги? О_о


а вот так разве не работает(?):

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;
}


Опубликовано Shedko в ср, 18/04/2007 - 19:27.

да, это будет работать, но поменяются ВСЕ кнопки, "найти", "Просмотр коментария", "Добавить комментари".

Хотя может такое и нужно задающему вопрос.

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

#search .button

а код был приведен потому, что как только человек меняет эту кнопку, то в большинстве случаев меняют и вообще форму поиска на свою =)


Опубликовано NecroHill в пт, 20/04/2007 - 01:13.

спасибо за решения. с графикой разобрался благодаря им. а вот что насчет текстовых вариантов? :)


Опубликовано kiev1 в вс, 10/02/2008 - 05:06.

как в aquasoft все сделал как там, но при нажатии "поиск" - в поиске нет результатов, при переходе на следующую страничку выскакивает сообщение "Ошибка при проверке значения, пожалуйста повторите. Если ошибка повторится, сообщите администратору сайта."
я так понимаю что drupal_get_token выдает неправильное значение, но что где править если не работает стандартный пример из 2-х строчек? еле нашел что вдруг, по какой-то странности в друпале 5-м вдруг так сталось что теперь надо писать не drupal_get_token('search_form') а drupal_get_token('search_theme_form') - подобрал методом подбора...

как все в друпале запутано, обычный элементарный вопрос - поменять что-то местами - вызывает какие-то сверх научные исследования которые даже спецы решить не в состоянии -> http://www.drupal.ru/node/11759 ...


Опубликовано PVasili в вс, 06/04/2008 - 10:31.

http://drupal.org/node/154137


Опубликовано xarakiry в пт, 15/08/2008 - 12:22.

"PVasili" написал(а):

http://drupal.org/node/154137

сделал всё как сказано... вот мой код

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. Почему он обрезал мою таблицу ?

Помогите пожалуйста.


Опубликовано index в ср, 19/11/2008 - 17:33.

Наверное уже поздно помогать, но
> И вызываю это всё на странице через $search_box
Описана темизация блока поиска, а не темовой формы, вызываемой $search_box
Т.е. $search_box можно смело удалить (закомментировать), но следует включить блок "Форма поиска" на странице /admin/build/block.

Темезация $search_box делается по другому.

И не забываем после таких правок чистить кэш, а то изменений не увидим.


Опубликовано psyxoz в чт, 27/08/2009 - 09:29.

Вот моя реализация шаблона блока

<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>


Новое на сайте