Изменение шаблона вывода search

Главные вкладки

Аватар пользователя mainvoid mainvoid 3 ноября 2008 в 0:56

Здравствуйте!

Посредством

<?  print_r($search_box);?>

в шаблоне сайта вызывается форма поиска по сайту.

Вопрос: как изменить HTML вывод формы? Например мне надо в VALUE написать текст по умолчанию ("поиск по сайту"), и через javascript (onFocus) сделать, чтобы оно очищалось в нужный момент.

Заранее спасибо!

Комментарии

Аватар пользователя evl-ntnt evl-ntnt 3 ноября 2008 в 10:52

Текст можно изменить через Админка - Перевод интерфейса - Поиск строк
А для очистки надо переопределять поиск, на сколько я знаю.

Аватар пользователя mainvoid mainvoid 3 ноября 2008 в 11:04

Что значит переопределять поиск?

Я имею ввиду сделать поле ввода с уже введенной в него фразой "Поиск по сайту", и чтобы при клике (при помощи javascript) его value устанавливалась бы равной пустой строке.

Для этого мне нужно редактировать непосредственно HTML код этого модуля, где это можно сделать?

Аватар пользователя whisk@drupal.org whisk@drupal.org 3 ноября 2008 в 14:10

В файле вашей темы 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), чтобы посмотреть структуру формы.

Аватар пользователя mainvoid mainvoid 3 ноября 2008 в 21:13

Спасибо за ответ, пробовал по разному, не выводится ни print_r, ни ваще даже echo 'test'; внутри функции. Атрибут и value к форме не присваевается.

Почему такое может быть?

Аватар пользователя whisk@drupal.org whisk@drupal.org 4 ноября 2008 в 1:32

Потому что ваша функция не вызывается...
Почему - другой вопрос. Какая версия друпала, как называется используемая тема, как называется функция, ну и включена ли форма поиска Smile ?

Аватар пользователя mainvoid mainvoid 4 ноября 2008 в 11:13

Угу, значит так:
тема - .AD Blueprint New
Версия Drupal - честно говоря не знаю, где смотреть. Судя по надписям возле тем 6.x-1.0, если можете, подскажите, пожалуйста, где это можно посмотреть и я напишу уточненную информацию.
Форма поиска включена.
Название функции - я честно говоря не очень понял, нужно ли в названии mytheme заменять на назывние своей темы, поэтому пробовал и так и не переименовывая, результата - ноль :/
Могу поделится доступом в админку.

Аватар пользователя villy villy 6 ноября 2008 в 16:37

привожу для login, (по умолчанию в эдите какой либо текст, либо картинка как на этом сайте, при наведении курсором этот текст удаляется для ввода пользователем своего текста)

тоже самое и с поиском.

создаешь файл forms.js

в page.tpl пишешь строку:

<script type="text/javascript" src="/themes/ckp/js/forms.js"></script>

сам файл forms.js будет выглядить так:

jQuery(document).ready( function() {           
                               
                        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');

т.е. указываешь ид формы а затем указываешь интересующий элемент на ней.

Аватар пользователя Mungu Mungu 21 ноября 2008 в 18:38

А я вот так решил для Drupal 6 :

переопределил файл search-theme-form.tpl.php в своей теме

<div id="search" class="container-inline">
  <?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>