昊天SEO

使用hook_form_alter()函数定制修改Drupal的搜索框表单(上) – 长度和文本

search_box

上图的搜索框很漂亮是吗?可是Drupal的搜索框看起来土得掉渣呢……不过不用担心,Drupal的一切皆可定制,本文以修改Drupal搜索框的长度和搜索文本为例,为大家介绍定制Drupal表单的方法。

老规矩,先给出具体代码,然后再为大家详细解释代码的用途。不过在这之前,需要先说明一下代码使用的环境:我们有一个名为mytheme的Drupal主题,我们的代码置于该主题的template.php文件中。当然,这段代码也可以放在一个任意Drupal模块的.module文件中。不过,仅仅为了定制一下搜索框就开发一个新的Drupal模块,显然有些小题大作了。而且定制搜索框外观的工作属于前端开发的范畴。因此,我们把代码放在Drupal主题的templete.php文件中显然更具语义性。

function mytheme_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'search_block_form') {
    $form['search_block_form']['#size'] = 20;
    $form['actions']['submit']['#value'] = t('Go');
  }
}

搜索框本质上是一个表单,而hook_form_alter()函数用于修改表单,所以该函数是我们在定制搜索框时理所当然的选择。$form变量使用嵌套数组的形式表示构成表单的元素(题外话:其实我不太喜欢用嵌套数组这个词,我更喜欢用巢状数组来称呼它,这样更形象有趣一些)。$form_state变量表示表单的状态信息。$form_id变量表示表单的ID,这个ID用于唯一的标识某个表单。

函数中if语句中的条件表达式$form_id == ‘search_block_form’表示,当Drupal呈现ID为search_block_form的表单(即:搜索表单)之前,执行if语句中的代码。我们先把$form[‘search_block_form’][‘#size’]变量的值设置为20,以指定搜索框的长度,该属性默认值是15,显得太短了些。然后把$form[‘actions’][‘submit’][‘#value’]的值设置为t(‘Go’),以指定搜索按钮的文本,该文本的默认值是search,我们使用Go来代替它,这样就更加简洁形象。

好了,今天就到这儿,明天继续……

未经允许不得转载:新乡seo|网站优化,网站建设—昊天博客 » 使用hook_form_alter()函数定制修改Drupal的搜索框表单(上) – 长度和文本

网站的维护离不开大家的支持鼓励,捐赠让我更有动力走的更远&& 也可以关注我的微信公众号,发布更多的干货
本文网址:https://www.168seo.cn/jianzhan/drupal/783.html

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址