Блок поиска не работает в Drupal - PullRequest
0 голосов
/ 28 февраля 2010

Я только что загрузил тестовый сайт по следующему адресу: www.betterclassofleaders.co.cc/whackk Я использую настроенный поисковый блок (настроенный через search-theme-form.tpl.php), но он не работает.Если вы введете поисковый запрос и нажмете «Ввод», он перейдет на страницу результатов поиска, но фактически не выполнит поиск.

Поиск на странице результатов работает как обычно.Есть идеи, в чем может быть проблема?

1 Ответ

0 голосов
/ 02 июня 2010

Очевидно, вы не можете напрямую изменить HTML в search-theme-form.tpl.php, так как это неправильный способ сделать это. Поэтому мое добавление атрибутов class и onFocus и onBlur было проблемой.

Правильный способ сделать это - изменить файл тем template.php. В основном мы будем использовать form_alter() для изменения элементов формы. Поскольку использование HTML-пути неправильно. Посмотрите на код ниже (взято из: здесь )

<?php
/**
* Override or insert PHPTemplate variables into the search_theme_form template.
*
* @param $vars
*   A sequential array of variables to pass to the theme template.
* @param $hook
*   The name of the theme function being called (not used in this case.)
*/
function yourthemename_preprocess_search_theme_form(&$vars, $hook) {
  // Note that in order to theme a search block you should rename this function
  // to yourthemename_preprocess_search_block_form and use
  // 'search_block_form' instead of 'search_theme_form' in the customizations
  // bellow.

  // Modify elements of the search form
  $vars['form']['search_theme_form']['#title'] = t('');

  // Set a default value for the search box
  $vars['form']['search_theme_form']['#value'] = t('Search this Site');

  // Add a custom class and placeholder text to the search box
  $vars['form']['search_theme_form']['#attributes'] = array('class' => 'NormalTextBox txtSearch', 
                                                              'onfocus' => "if (this.value == 'Search this Site') {this.value = '';}",
                                                              'onblur' => "if (this.value == '') {this.value = 'Search this Site';}");

  // Change the text on the submit button
  //$vars['form']['submit']['#value'] = t('Go');

  // Rebuild the rendered version (search form only, rest remains unchanged)
  unset($vars['form']['search_theme_form']['#printed']);
  $vars['search']['search_theme_form'] = drupal_render($vars['form']['search_theme_form']);

  $vars['form']['submit']['#type'] = 'image_button';
  $vars['form']['submit']['#src'] = path_to_theme() . '/images/search.jpg';

  // Rebuild the rendered version (submit button, rest remains unchanged)
  unset($vars['form']['submit']['#printed']);
  $vars['search']['submit'] = drupal_render($vars['form']['submit']);

  // Collect all form elements to make it easier to print the whole form.
  $vars['search_form'] = implode($vars['search']);
}
?>

В yourthemename_preprocess_search_theme_form - 'yourthemename', очевидно, будет отражать название вашей пользовательской темы. В основном код не требует пояснений. что с комментариями и все.

Итак, в основном, так оно и есть.

...