搜索块在Drupal中不起作用

时间:2010-02-28 15:52:09

标签: php search xhtml drupal-6 themes

我刚刚在以下位置上传了一个测试网站:www.betterclassofleaders.co.cc/whackk 我正在使用自定义搜索块(通过search-theme-form.tpl.php自定义),但它不起作用。如果您输入搜索字词并按Enter键,它将转到搜索结果页面,但不会实际执行搜索。

搜索结果页面可以正常工作。知道问题可能是什么吗?

1 个答案:

答案 0 :(得分:0)

显然,您无法直接修改search-theme-form.tpl.php中的HTML,因为这不是正确的方法。所以我添加了类和onFocus以及onBlur属性是问题所在。

正确的方法是修改主题template.php文件。基本上我们将使用form_alter()来修改表单元素。由于使用HTML方式是错误的。请查看以下代码(摘自:here

<?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'显然会反映您的自定义主题的名称。基本上代码是不言自明的。什么评论和所有。

所以,基本上就是它的工作方式。