如何在Drupal 10中移除或禁用评论字段的「主题」项
Drupal 10 评论主题自动填充评论内容的解决方案
方法1:修改评论类型的表单设置
Drupal 10中评论是独立实体类型,需直接修改对应评论类型的配置:
- 后台进入 Structure > Comment types(结构 > 评论类型)
- 找到关联「影评(Film Review)」的评论类型,点击 Manage form display(管理表单显示)
- 找到「Subject(主题)」字段,点击右侧设置图标,取消勾选「如果主题为空则使用评论正文作为回退」选项,保存设置。
方法2:自定义模块代码修改表单行为
如果上述选项不存在,可通过自定义代码禁用自动填充逻辑:
- 创建自定义模块(如
comment_subject_fix),在.module文件中添加以下代码:
/** * Implements hook_form_alter(). */ function comment_subject_fix_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) { // 匹配评论添加表单ID if (preg_match('/^comment_.+_form$/', $form_id)) { // 移除主题字段的默认值回调(该回调会自动填充评论内容) if (isset($form['subject']['#default_value_callback'])) { $form['subject']['#default_value_callback'] = array_filter($form['subject']['#default_value_callback'], function($callback) { return $callback !== 'comment_subject_default_value'; }); } // 添加提交回调,确保空主题提交后保持为空 $form['actions']['submit']['#submit'][] = 'comment_subject_fix_clear_empty_subject'; } } /** * 提交回调:清除空主题的自动填充内容 */ function comment_subject_fix_clear_empty_subject($form, \Drupal\Core\Form\FormStateInterface $form_state) { $comment = $form_state->getFormObject()->getEntity(); if (empty(trim($comment->get('subject')->value))) { $comment->set('subject', ''); $comment->save(); } }
- 启用该模块即可生效。
方法3:隐藏主题字段显示(快速临时方案)
若暂时无法修改配置或代码,可直接隐藏主题字段的前端显示:
- 进入 Structure > Comment types > 对应评论类型 > Manage display(管理显示)
- 在目标显示模式(如默认模式)中,将「Subject(主题)」字段设置为「Hidden(隐藏)」,保存后前端不再显示主题,避免重复内容。
内容的提问来源于stack exchange,提问作者Surya kiran
相关产品推荐
相关产品推荐

