Нужно темизировать форму поиска в Drupal 7 так, чтобы в строке поиска выводилось, к примеру, слово "Поиск". А при попытке ввода своего текста для поиска это слово исчезало. Так как поиск работает и по нажатию Enter, то так же хотелось бы убрать кнопку "Найти".
Кто может подсказать пути решения?
Комментарии
http://api.drupal.org/api/drupal/modules--search--search.module/function...
Через jquery это можно решить по идее
http://api.jquery.com/category/events/
Можете почитать на сайте drupalace.ru в этой статье, там это решается добавлением в шаблон 3-х строчек кода.
Как то так в template.php темы
<?php
$form['search_block_form']['#attributes']['onblur'] = "if (this.value == '') {this.value = '".$deftext."';}";
function ИмяВашейТемы_form_alter(&$form, &$form_state, $form_id) {
//$form_id - соответственно проверяем
if ($form_id == 'search_block_form') {
// Это как раз текст который будет пропадать
$deftext = t('Найти на сайте');
$form['search_block_form']['#title'] = t(' '); // Change the text on the label element
$form['search_block_form']['#title_display'] = 'invisible'; // Toggle label visibilty
$form['search_block_form']['#size'] = 24; // define size of the textfield
$form['search_block_form']['#default_value'] = $deftext; // Set a default value for the textfield
$form['actions']['submit']['#value'] = t('GO!'); // Change the text on the submit button
//Тут если кнопку на картинку меняем
$form['actions']['submit'] = array('#type' => 'image_button', '#src' => base_path() . path_to_theme() . '/images/findbt.gif');
$form['search_block_form']['#attributes']['onfocus'] = "if (this.value == '".$deftext."') {this.value = '';}";
}
}
?>
Спасибо за код. У меня работает. Единственное, очень "режет" глаза черный цвет текста подсказки... В css изменил цвет текста формы поиска, теперь подсказки серые, но и вводимый запрос тоже такой же... Как сделать так, чтобы подсказка была серой, а когда щелкаешь в поле, текст вводился черным?
это возможно только в CSS3 свойство placeholder подробнее тут почитать
Можно конечно еще jquery плагин подключить и настраивать его уже.
Спасибо за подсказку, наконец-то я добился того что хотел:
template.php
<?php
$form['search_block_form']['#attributes']['placeholder'] = "Поиск | Нажимать Enter";
function mobi_drupal7_form_alter(&$form, &$form_state, $form_id) {
//$form_id - соответственно проверяем
if ($form_id == 'search_block_form') {
// Это как раз текст который будет пропадать
$form['search_block_form']['#title'] = t(' '); // Изменить текст на этикетке элемента
$form['search_block_form']['#title_display'] = 'invisible'; // Переключить visibilty этикетки
$form['search_block_form']['#size'] = 24; // define size of the textfield
textfield
$form['actions']['submit']['#value'] = 'Go!'; // Change the text on the submit button
//Тут если кнопку на картинку меняем
$form['actions']['submit'] = array('#type' => 'image_button', '#src' => base_path() . path_to_theme() . '/images/bt1.png');
}
}
?>
Столкнулся с той же задачей, для ее решения есть готовый модуль http://drupal.org/project/custom_search
А вообще, по сабжу, с прицелом на HTML5:
В template.php
<?php
//Не делаем лишних проверок. Hook затронет только форму с id "search_block_form"
function ИмяТемы_form_search_block_form_alter(&$form, &$form_state, $form_id) {
$form['search_block_form']['#attributes']['placeholder'] = t('Search');
}
?>
А для устаревших браузеров: http://xandeadx.ru/blog/javascript/487
Как-то так.