Возникли проблемы с темой окна поиска в Drupal - PullRequest
0 голосов
/ 20 мая 2011

Я не самый опытный в мире Drupal, и мне приснился кошмар, пытающийся настроить окно поиска. Я использую пример с сайта справки Drupal, и он просто не работает.

Я скопировал search-theme-form.tpl.php из модуля поиска в мою тему и скопировал код примера. Любой HTML в этом коде вне функции предварительной обработки показывает нормально, но, насколько я могу судить, функция предварительной обработки не вызывается или просто не влияет на окно поиска.

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

Вот код:

 <?php 

function danland_preprocess_search_theme_form(&$vars, $hook) {
      // Remove the "Search this site" label from the form.


  $vars['form']['search_theme_form']['#title'] = t('');

  // Set a default value for text inside the search box field.
  $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', 'onblur' => "if (this.value == '') {this.value = '".$vars['form']['search_theme_form']['#value']."';} ;", 'onfocus' => "if (this.value == '".$vars['form']['search_theme_form']['#value']."') {this.value = '';} ;" );


  // 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']);
}

?>


<div id="search" class="container-inline">
  <?php print $search_form; print $search_theme_form; ?>
</div>

1 Ответ

0 голосов
/ 20 мая 2011

Поместите функцию предварительной обработки в template.php в каталоге вашей темы, затем очистите кэш в "admin / settings / performance"

Вот несколько полезных ссылок, чтобы узнать о тематике с помощью шаблонов / функций предварительной обработки:

...