logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动
17/10/2025, by Ivan

在开发中,我们经常需要显示与特定用户相关的区块(例如该用户的文章或公告),或者在节点页面中显示该节点的作者信息。

然而,每个用户都有自己的一组公告,每个节点也都有各自的作者,因此这些区块必须根据当前节点或用户动态变化。为了实现这种效果,我们可以在 Views 中使用上下文过滤器(Contextual Filters)

drupal 8 contextual filters

现在,让我们为公告(announcement)添加一个过滤器,使其在广告页面上只显示与当前公告相关的数据。我们将按 nid 字段过滤。下面我们来看看这个过滤器的工作原理。

在 Drupal 中,每个节点的 URL 通常如下:

/node/13

其中 13 就是节点的 nid(Node ID)。我们要告诉 Views:通过上下文过滤器(Contextual Filter)按 nid 过滤节点数据。这样,在每个节点页面上,Views 将显示对应节点的数据。

在 Views 编辑器中,添加一个 nid 过滤器:

drupal 8 contextual filters

接着,我们需要为上下文过滤器选择默认操作。在本例中,选择:

Provide default valueContent ID from URL

contextual filters

现在可以通过 预览(Preview) 功能来测试过滤器的效果。例如,我有一个公告节点的 nid 为 7,那么在预览表单中输入 7 并点击预览按钮:

Drupal 8 contextual filters

这样,视图将只显示与节点 ID 为 7 的公告相关的内容。