Drupal9搭配Webform使用Captcha模块如何修改/移除默认验证提示文本
Drupal 9 搭配Webform使用Captcha模块时移除/替换默认验证提示文本方案
Captcha模块默认展示的*“本问题用于验证您是否为人类访客,防止自动化垃圾信息提交”*是内置的全局说明文案,可根据需求选择以下任意一种方案修改:
方法1:后台全局配置修改(最推荐,零代码)
- 登录Drupal站点后台,进入顶部管理菜单「配置」板块,找到「人员/权限验证」分类下的CAPTCHA设置入口,对应路径为
/admin/config/people/captcha - 在设置页找到「CAPTCHA说明文本」输入项:
- 要完全隐藏这段提示,直接清空输入框内容即可
- 要替换为自定义文本/其他语言文案,直接在输入框内填入目标内容
- 保存配置后清空Drupal全站缓存,所有加载Captcha验证的表单(包括所有Webform构建的表单)都会同步生效。
方法2:单个Webform单独修改(不影响其他表单)
如果仅需要调整某一个Webform内的验证码提示、保留其他场景的默认文案,可直接在Webform内配置:
- 进入目标Webform的构建页面,找到已添加的Captcha验证元素,点击编辑按钮
- 在元素配置页找到「描述(Description)」输入项,清空内容即可隐藏默认提示,或填入自定义的多语言文案
- 保存Webform配置、清空缓存后即可生效,修改仅作用于当前Webform。
如果需要实现动态展示文案的逻辑,可在Webform的「表单Alter」配置区通过代码修改Captcha元素的#description属性。
方法3:主题层全局覆写(适合多语言站点)
如果需要结合多语言逻辑、或统一通过代码层管控提示文案,可在当前使用的自定义主题中添加预处理逻辑:
- 进入自定义主题的根目录,找到或新建
{主题机器名}.theme文件 - 添加如下表单alter钩子代码:
/** * Implements hook_form_alter(). */ function 主题机器名_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) { // 检测表单是否加载了Captcha元素 if (isset($form['captcha'])) { // 移除默认提示文本 $form['captcha']['#description'] = ''; // 多语言场景可使用t()函数包裹自定义文案,自动匹配站点当前语言 // $form['captcha']['#description'] = t('请完成验证后提交表单'); } } - 保存文件后清空Drupal全站缓存,修改即可全局生效。
注意:如果修改后页面未展示预期效果,优先检查Drupal的渲染缓存、页面缓存是否清空,Drupal 9的缓存机制需清空对应缓存后才会加载新的配置或代码逻辑。
内容的提问来源于stack exchange,提问作者ErfanUsefi
相关产品推荐
相关产品推荐

