我正在创建一个多语言Drupal网站并尝试实现一个搜索功能,该功能只显示用户正在查看网站的当前语言的结果。
在/ search / node使用Drupals自己的搜索功能,可以通过“高级搜索”选项选择要搜索的语言,并且它可以完美地工作。但是,我不想公开这些语言选择框,我只是希望它只能自动搜索当前语言。
这样做的最佳选择是什么?
我有一个解决方案,我创建了一个hook_form_alter函数,它将语言选择框中的#default_value设置为当前语言,然后用css隐藏整个“高级选项”。这似乎不是很正确。
我认为最干净的解决方案是挂钩Drupals表单处理过程并将ex“language:en”附加到输入文本中,但我无法使其工作。
有没有人知道是否有可能通过Drupal表单相关的alter函数之一获取输入文本并在drupal对其进行最终处理之前更改它?
答案 0 :(得分:1)
要特别回答您的问题,在使用'hook_form_alter'时,您有一个名为'$ form_state'的引用变量。这将值存储在表单中,任何更改都将进一步传递。
此外,
我认为设置默认值并隐藏字段是一个很好的解决方案,只有,如果你隐藏它,你应该在服务器端做,同时改变表单。您要将默认值设置为的相同字段。像这样: $ fieldname ['#type'] ='隐藏'。