Здравствуйте!
Посредством
в шаблоне сайта вызывается форма поиска по сайту.
Вопрос: как изменить HTML вывод формы? Например мне надо в VALUE написать текст по умолчанию ("поиск по сайту"), и через javascript (onFocus) сделать, чтобы оно очищалось в нужный момент.
Заранее спасибо!
Комментарии
Текст можно изменить через Админка - Перевод интерфейса - Поиск строк
А для очистки надо переопределять поиск, на сколько я знаю.
Что значит переопределять поиск?
Я имею ввиду сделать поле ввода с уже введенной в него фразой "Поиск по сайту", и чтобы при клике (при помощи javascript) его value устанавливалась бы равной пустой строке.
Для этого мне нужно редактировать непосредственно HTML код этого модуля, где это можно сделать?
В файле вашей темы mytheme/template.php:
<?php
function mytheme_search_theme_form($form) {
$form['search_theme_form_keys']['#value'] = 'Поиск по сайту';
$form['search_theme_form_keys']['#attributes'] = array('onclick' => 'some JS...');
return drupal_render($form);
}
?>
и сделайте там же print_r($form), чтобы посмотреть структуру формы.
Спасибо за ответ, пробовал по разному, не выводится ни print_r, ни ваще даже echo 'test'; внутри функции. Атрибут и value к форме не присваевается.
Почему такое может быть?
Потому что ваша функция не вызывается...
Почему - другой вопрос. Какая версия друпала, как называется используемая тема, как называется функция, ну и включена ли форма поиска ?
Угу, значит так:
тема - .AD Blueprint New
Версия Drupal - честно говоря не знаю, где смотреть. Судя по надписям возле тем 6.x-1.0, если можете, подскажите, пожалуйста, где это можно посмотреть и я напишу уточненную информацию.
Форма поиска включена.
Название функции - я честно говоря не очень понял, нужно ли в названии mytheme заменять на назывние своей темы, поэтому пробовал и так и не переименовывая, результата - ноль :/
Могу поделится доступом в админку.
привожу для login, (по умолчанию в эдите какой либо текст, либо картинка как на этом сайте, при наведении курсором этот текст удаляется для ввода пользователем своего текста)
тоже самое и с поиском.
создаешь файл forms.js
в page.tpl пишешь строку:
сам файл forms.js будет выглядить так:
var login = $('#user-login-form input[type=text]#edit-name');
var pass = $('#user-login-form input[type=password]#edit-pass');
login.val('Логин');
login.bind("focus", function(){
if(this.value=='Логин') this.value='';
} );
login.bind("blur", function(){
if(this.value=='') this.value='Логин';
} );
pass.val('Пароль');
pass.bind("focus", function(){
if(this.value=='Пароль') this.value='';
} );
pass.bind("blur", function(){
if(this.value=='') this.value='Пароль';
} );
});
вместо этого:
login = $('#user-login-form input[type=text]#edit-name');
у тебя будет для поиска
search = $('#search-form input [type=text]#edit-keys');
т.е. указываешь ид формы а затем указываешь интересующий элемент на ней.
А я вот так решил для Drupal 6 :
переопределил файл search-theme-form.tpl.php в своей теме
<?php print '<input
type="text" class="form-text" title="Введите ключевые слова для поиска." value="Поиск..." size="15" id="edit-search-theme-form-1" name="search_theme_form" maxlength="128"
onfocus="if(this.value==\'Поиск...\') this.value=\'\';"
onblur="if(this.value==\'\') this.value=\'Поиск...\';"/>'.$search['hidden']; ?>
</div>