Drupal 8:如何将视图添加至节点?及关联banner视图到product节点
嗨,我来帮你解决这两个Drupal 8的视图关联问题,都是日常开发里很常见的需求,给你梳理几种实用的方案:
1. 在Drupal 8中如何将视图添加至节点?
这里有几种主流的实现方式,你可以根据需求选择:
使用Viewfield模块(最直观的字段式关联)
- 先安装并启用
Viewfield模块(Drupal 8版本兼容无问题) - 进入目标节点类型的字段管理页面(路径示例:
/admin/structure/types/manage/[你的节点类型]/fields) - 添加新字段,类型选择「View」,给字段起个清晰的名字(比如“关联视图”)
- 字段配置环节,选择你要嵌入的视图及其显示方式,还可设置是否允许编辑节点时选择视图、传递参数等规则
- 保存配置后,编辑节点时就能看到这个字段,选择对应视图后,前端节点页面就会自动显示视图内容
- 先安装并启用
将视图作为区块嵌入
- 打开你的视图编辑页,点击「添加显示」,选择「区块」类型
- 配置区块显示的视图参数、样式等细节,保存视图
- 进入布局管理:如果用了Layout Builder,直接编辑节点的布局;如果是默认主题,进入
/admin/structure/block页面 - 在节点对应的区域(比如内容顶部、侧边栏)添加这个视图区块,还能设置区块的可见性条件(比如仅在特定节点类型、特定路径下显示)
自定义模板或预处理函数(适合高度定制需求)
- 找到节点的基础模板文件(比如
node.html.twig),或创建对应节点类型的专属模板(比如node--product.html.twig) - 在模板里用
{{ drupal_view('视图机器名', '显示机器名') }}直接调用视图,还能传递参数,示例:{{ drupal_view('banner', 'block_1', node.nid.value) }} - 如果需要动态逻辑,也可以在主题的
.theme文件里通过预处理函数,调用views_embed_view()函数嵌入视图,再传递到模板中使用
- 找到节点的基础模板文件(比如
针对你的具体场景,推荐两种最便捷的方法:
方法一:用Viewfield字段绑定
- 按照第一个问题里的Viewfield安装步骤,给
product内容类型添加一个Viewfield字段 - 字段配置时,限定只能选择
banner视图及其特定显示(比如block显示) - 打开路径为
/product-1的product节点编辑页,在新增的Viewfield字段里选择你的banner视图,保存节点后,banner就会显示在该节点页面上
方法二:用区块视图+可见性条件
- 给你的
banner视图添加一个区块显示(步骤参考第一个问题里的区块方法) - 进入区块管理页面
/admin/structure/block,找到这个banner视图区块,点击「放置区块」 - 选择节点页面的合适区域(比如内容顶部),然后在区块的「可见性条件」里添加「路径」条件,输入
/product-1,保存配置 - 这样只有访问
/product-1这个节点页面时,才会显示这个banner视图区块
方法三:自定义模板(适合固定显示场景)
如果这个banner只需要固定显示在product-1节点上,也可以直接修改该节点的自定义模板:
- 在主题里创建
node--product--product-1.html.twig(注意:product-1是节点别名,也可用节点ID命名,比如node--product--1.html.twig) - 在模板里合适的位置添加
{{ drupal_view('banner', '你的显示机器名') }},清除缓存后,访问该节点就能看到banner了
内容的提问来源于stack exchange,提问作者Saf
相关产品推荐
相关产品推荐

