drupal9中如何删除搜索结果中的搜索表单?

  实践操作中白龙网发现,不管是在默认主题中,还是自定义主题环境下,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下写相应的函数实现,不失为了一个简单快捷的好办法。