实践操作中白龙网发现,不管是在默认主题中,还是自定义主题环境下,drupal9的搜索结果页面都会多出来一个搜索表单。如果确实需要,可以留下这个表单。如果不需要,想把这个搜索表单删除,有两种方法,一是通过CSS把该搜索表单隐藏掉;二是使用JS清除该搜索表单。
下面以分别从默认主题、自定义主题两个方面入手,梳理下使用JS如何隐藏drupal9搜索结果页面表单的方法。
一、默认主题
首先,我们来看下这功能函数,它可以实现修改联系我们、隐藏搜索表单这两个功能。就文章开始提到的隐藏表单需求,则只需要使用隐藏搜索表单的if语句即可。
function themes_name_form_alter(&$form, &$form_state, $form_id) { // We have to be careful to alter only the contact site form, // as this hook is used for every form the system uses. if($form_id == 'contact_site_form'){//修改联系我们表单 $form['referer'] = array( '#type' => 'hidden', '#title' => t('REFERER'), '#required' => FALSE, '#maxlength' => 255, '#default_value' => $_SERVER['HTTP_REFERER'], ); } if ($form_id == 'search_form' && $_GET['q'] != 'search') {//隐藏搜索表单 unset($form['basic']); unset($form['advanced']); } }
然后,打开\htdocs\core\themes\bartik\bartik.theme文件,在119行的bartik_form_alter函数中加入如下IF语句:
if ($form_id == 'search_form' && $_GET['q'] != 'search') {//隐藏搜索表单 unset($form['basic']); unset($form['advanced']); }
通过上述两步操作,即可隐藏掉默认主题bartik中搜索结果页的表单。
二、自定义主题
如果要在自定义主题下隐藏掉搜索结果页的表单,则需要在自定义主题中新建一个文件:\htdocs\themes\themes_name\themes_name.theme文件,然后把下面代码复制进去:
function themes_name_form_alter(&$form, &$form_state, $form_id) { if ($form_id == 'search_form' && $_GET['q'] != 'search') {//隐藏搜索表单 unset($form['basic']); unset($form['advanced']); } }
需要注意的是:themes_name是自定义主题的名称,一定要修改。
通过这个案例我们不难发现,要增、删、改、查drupal的相关内容,通过在themes_name.theme下写相应的函数实现,不失为了一个简单快捷的好办法。