
你刚刚安装了 Drupal,或者你拥有一个带有标准设置的网站。你可以添加文章并为其添加标签。现在,你是否想为访客提供一个仅包含特定分类文章的页面?该怎么做呢?你决定暂时搁置这个想法,而是希望显示所有按标题排序的文章。那么该如何实现?
事实上,并不是所有功能在安装 Drupal 后就能立即启用。通常,所有附加功能都被独立成单独的模块。但不要急着安装一堆模块,首先试试 Views 模块。


如果你对 Drupal 感兴趣,那么迟早你会接触到 Views 模块。这个模块允许你显示几乎所有 Drupal 中的数据:用户、内容、评论、分类术语等。此外,它还可以显示表格、区块、幻灯片、日历、列表、图表以及其他类型的数据和设计。自 Drupal 8 版本起,该模块已被纳入核心。因此,让我们来了解一下这个模块。
首先需要注意的是这个模块的体积:Views 和 Views UI 模块分别占用了 808 KB 和 3.6 MB。体积非常大,但使用它时并不需要了解其内部工作原理。Views 拥有一个相当庞大的界面,如果你愿意,即使没有编程知识也可以理解它的使用方式。
在 Drupal 菜单中,Views 位于「结构(Structure)」—「视图(Views)」:


你刚刚安装了 Drupal,或者你的网站还保持着默认设置。你可以添加文章并为它们打上标签。现在,你希望为访客提供一个页面,用来显示某个特定分类下的文章,该怎么做呢?或者,你只是想按照标题对所有文章进行排序,该如何实现?
其实,在刚安装完 Drupal 后,并不是所有功能都可以立即启用。通常,许多扩展功能都被拆分为独立的模块。但请不要急于安装大量模块,首先试试看 Views 模块 —— 它能帮你完成大多数数据展示需求。


Views 模块不仅允许我们设置过滤器并显示内容,还可以让用户动态地更改这些过滤条件。下面我们将使用 Views 模块创建一个简单的房地产公告板。
为了显示公告,我们首先需要创建一个公告(Announcement)内容类型。进入菜单:结构(Structure)→ 内容类型(Content types)→ 添加内容类型(Add Content type):
接下来,为该内容类型添加以下字段:房间数量、价格、地址、电话、姓名。进入“公告”内容类型的 管理字段(Manage fields) 选项卡:


在开发中,我们经常需要显示与特定用户相关的区块(例如该用户的文章或公告),或者在节点页面中显示该节点的作者信息。
然而,每个用户都有自己的一组公告,每个节点也都有各自的作者,因此这些区块必须根据当前节点或用户动态变化。为了实现这种效果,我们可以在 Views 中使用上下文过滤器(Contextual Filters)。
现在,让我们为公告(announcement)添加一个过滤器,使其在广告页面上只显示与当前公告相关的数据。我们将按 nid 字段过滤。下面我们来看看这个过滤器的工作原理。
在 Drupal 中,每个节点的 URL 通常如下:
/node/13


在 Drupal 7 中,有许多模块用于将不同的 jQuery 幻灯片插件与 Drupal 集成。其中最受欢迎、最方便的当属 Views Slideshow 模块。它的一个缺点是:在 Drupal 7 版本中,它并不是响应式的。而在 Drupal 8 版本中,这个问题已经得到了解决,因此我们将使用 Views Slideshow 来制作幻灯片。
首先,需要下载并安装 Views Slideshow 模块,同时启用其子模块 Views Slideshow Cycle:
https://www.drupal.org/project/views_slideshow
此外,我们还需要额外的 jQuery 库,这些库需要放在网站根目录下的 libraries
文件夹中(如果不存在,请手动创建)。
/libraries/jquery.hoverIntent/jquery.hoverIntent.js


在本篇文章中,我们将介绍 Views 模块中的最后一个设置部分 —— “其他(Other)” 选项。
机器名称(Machine name):显示 ID 默认被设置为 page_1
、block_1
,随后新增的显示会自动递增(例如 page_2
、page_3
)。如果你在同一个视图中包含多个显示,建议重命名机器名称以便管理。


Views 模块不仅可以从 Drupal 数据表中输出数据,还能对这些数据进行汇总和分组计算,这一功能被称为 数据聚合(Aggregation)。
Drupal 默认自带一个 分类词汇表(Taxonomy Vocabulary),其中包含标签(Tags)。我们将创建一个区块,用于显示网站中最常用的标签,并在每个标签后显示该标签被使用的次数。最终效果如下:
Drupal 9 (5)
Drupal 8 (3)
PHP (2)
创建示例数据
首先,创建几篇文章并为它们添加标签:
/node/add/article


Layout Builder 模块提供了一种可视化的页面布局构建方式,使我们能够为任何实体(如内容类型、用户、分类项等)自定义显示布局。下面展示了最终效果,也就是网站用户实际看到的页面:


Drupal 非常适合开发中小型在线商店。主要的电商模块有:
Commerce 模块:
https://www.drupal.org/project/commerce
以及 Ubercart 模块:
https://www.drupal.org/project/ubercart
这两个模块仅提供了电子商务网站的基础功能。除此之外,你还需要自行设计商店的外观。当然,你也可以选择一个适用于 Drupal 或 Drupal Commerce 的主题,但即便如此,也不能保证默认功能能完全满足你的需求,未来你可能仍希望扩展更多功能。
