搜索框在Drupal中不起作用
问题描述:
我刚刚在以下位置上传了测试网站:www.betterclassofleaders.co.cc/whackk 我正在使用自定义搜索框(通过search-theme-form.tpl.php )但它不起作用。如果您键入搜索字词并按Enter键,则会转到搜索结果页面,但不会实际执行搜索。搜索框在Drupal中不起作用
通过搜索结果页确实正常工作。任何想法可能是什么问题?
答
显然,您不能直接修改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”将明显地反映出您的自定义主题的名称。基本上,代码是不言自明的。什么与评论和所有。
所以,基本上这就是它的工作方式。
请提供search-theme-form.tpl.php模板文件。我想你可能已经忘记了表单行为。 – Alexar 2010-02-28 16:49:42
”/> – bcosynot 2010-05-18 10:51:09