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

Drupal 8:如何在page.html.twig模板中获取用户字段图片

当然可以在page.html.twig中访问用户的field_user_image字段!

下面是具体的实现思路和代码示例,帮你完成顶部导航栏的用户头像展示需求:

核心实现逻辑

  1. 先判断当前用户是否登录(区分匿名用户与已登录用户)
  2. 已登录用户:优先展示其field_user_image字段的图片;如果用户未上传头像, fallback到默认图片
  3. 未登录用户:直接显示预设的默认图片

Twig代码示例

在你的page.html.twig模板中,找到顶部导航栏的对应位置,插入以下代码:

<div class="nav-user-avatar">
  {% if not current_user.isAnonymous %}
    {# 处理已登录用户的头像 #}
    {% set user_avatar = current_user.field_user_image %}
    {% if user_avatar is not empty %}
      {# 使用字段的默认显示模式渲染图片 #}
      {{ user_avatar|view }}
    {% else %}
      {# 用户未上传头像,显示默认图 #}
      <img src="{{ directory }}/images/default-avatar.png" alt="默认头像" class="avatar-default">
    {% endif %}
  {% else %}
    {# 未登录状态,显示默认图 #}
    <img src="{{ directory }}/images/default-avatar.png" alt="默认头像" class="avatar-default">
  {% endif %}
</div>

关键注意事项

  • 字段显示模式配置:确保field_user_image字段已经添加到用户的「默认显示模式」(或你指定的自定义显示模式)中,否则|view过滤器无法正确渲染图片。如果需要自定义图片尺寸、样式,可以创建一个专属的用户显示模式,然后修改代码为{{ user_avatar|view('your_custom_mode') }}。
  • 默认图片路径:代码中的{{ directory }}是当前主题的目录路径,把默认图片放在主题的images文件夹下即可。如果默认图片是站点的公共文件,也可以直接写绝对路径(比如/sites/default/files/default-avatar.png)。
  • 权限验证:确认field_user_image字段对已登录用户有「查看」权限,否则即使用户上传了头像,模板也无法读取到字段内容。

内容的提问来源于stack exchange,提问作者арно нюм

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:37:06