在 Drupal 8 中提交评论时打印用户角色

Print user role when submitting comments in Drupal 8

在我的 Drupal 站点中,用户配置文件包含用户名、角色和组分类术语。有一个文章内容类型设置来接受用户的评论。每当有用户评论时,我想显示为:

Submitted by: username, role, group

我尝试通过 template_preprocess 函数读取角色和类别字段,如下所示:

function bartik_preprocess_comment(array &$variables) {
  if (isset($variables['elements']['#view_mode'])) {
    $variables['view_mode'] = $variables['elements']['#view_mode'];
  }
  else {
    $variables['view_mode'] = 'default';
  }
  dd($variables);
}

但是转储不显示“组”字段。不确定 missing.Rightnow 是什么,只显示用户名。我的 comments.html.twig 如下所示:

  <div class="author-comments">
      <p class="comment-submitted">{{ submitted }}</p>
      <div{{ content_attributes.addClass('content') }}>
        {% if title %}
          {{ title_prefix }}
          <h3{{ title_attributes }}>{{ title }}</h3>
          {{ title_suffix }}
        {% endif %}
        {{ content }}
      </div>
    </div>

关于如何提取角色和类别字段并插入 Twig 模板的任何帮助?谢谢!

好的,我能解决这个问题。以下是我的回答:

在 mytheme.theme 文件中:

/**
 * Implements hook_preprocess_HOOK() for comment.html.twig.
 */
function mytheme_preprocess_comment(array &$variables) {
  $user = \Drupal::currentUser();
  $user_entity = \Drupal::entityTypeManager()
                ->getStorage('user')
                ->load($user->id());

  $roles = $user->getRoles();
  $variables['user_roles'] = $roles ;
}

此变量可以在 comment.html.twig 上打印为:{{ user_roles }} 根据需要。