Drupal 8:如何在page.html.twig模板中获取用户字段图片
当然可以在
page.html.twig中访问用户的field_user_image字段! 下面是具体的实现思路和代码示例,帮你完成顶部导航栏的用户头像展示需求:
核心实现逻辑
- 先判断当前用户是否登录(区分匿名用户与已登录用户)
- 已登录用户:优先展示其
field_user_image字段的图片;如果用户未上传头像, fallback到默认图片 - 未登录用户:直接显示预设的默认图片
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,提问作者арно нюм
相关产品推荐
相关产品推荐

