logo

Palette - 让它色彩缤纷🎨

Palette — 可视化页面构建器,无需专业设计背景。

在线演示 下载 Palette

滚动
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 的公告相关的内容。