You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Drupal 10中移除或禁用评论字段的「主题」项

Drupal 10 评论主题自动填充评论内容的解决方案

方法1:修改评论类型的表单设置

Drupal 10中评论是独立实体类型,需直接修改对应评论类型的配置:

  • 后台进入 Structure > Comment types(结构 > 评论类型)
  • 找到关联「影评(Film Review)」的评论类型,点击 Manage form display(管理表单显示)
  • 找到「Subject(主题)」字段,点击右侧设置图标,取消勾选「如果主题为空则使用评论正文作为回退」选项,保存设置。

方法2:自定义模块代码修改表单行为

如果上述选项不存在,可通过自定义代码禁用自动填充逻辑:

  1. 创建自定义模块(如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();
  }
}
  1. 启用该模块即可生效。

方法3:隐藏主题字段显示(快速临时方案)

若暂时无法修改配置或代码,可直接隐藏主题字段的前端显示:

  • 进入 Structure > Comment types > 对应评论类型 > Manage display(管理显示)
  • 在目标显示模式(如默认模式)中,将「Subject(主题)」字段设置为「Hidden(隐藏)」,保存后前端不再显示主题,避免重复内容。

内容的提问来源于stack exchange,提问作者Surya kiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:15:18