3.5.1. Views 过滤器与排序
首先,我们需要学习如何使用 Views 显示区块和页面。我们先从页面开始,显示网站上的所有文章。
通过 Views 输出页面
创建第一个视图,进入菜单 管理 → 结构 → 视图(Manage → Structure → Views)。
接下来,输入视图名称,选择要显示的内容类型(内容、评论、用户或分类术语)。这里我们选择显示文章(Article)。在过滤条件中选择内容类型为 Article,在排序中设置最新的文章优先显示:
勾选 Create page(创建页面)选项,如果希望创建区块则选择 Create block。我们先创建一个页面来显示所有文章。输入页面路径和名称,还可以选择显示方式以及每页文章数量,稍后我们将详细介绍这些设置。
点击 Save and edit(保存并编辑)。现在让我们依次了解 Views 构建器的各个部分:
添加与删除(Adding and Removing)
在一个视图中可以包含多个显示模式(display),这在某些情况下非常方便。例如,在同一个视图中,可以在页面上显示所有文章,而在区块中仅显示 5 篇文章,这样可以单独重写各自的设置。目前你可以暂时不管这个,等有需要时再进行配置。现在我们可以为不同的需求创建单独的视图。
格式(Format)
在格式部分,你可以直接选择输出格式,默认提供几种:
- HTML list —— 使用
<ul>
标签输出的列表。 - Unformatted list —— 使用
<div>
标签输出的未格式化列表。 - Grid —— 以无表头的表格方式输出元素,适用于展示图片,可在设置中指定列数。
- Table —— 以带表头的表格形式输出,适合显示节点的字段,方便展示大量信息。
显示字段还是摘要(Fields or teasers)?
我们可以选择以摘要(teaser)或字段(fields)形式显示内容。在之前的课程中,我们学习了如何修改摘要字段,现在我们选择以字段方式输出:
现在我们可以添加字段,显示节点的 Title 和 Body 字段:
点击 Add,选择 Content: Body 字段。
现在我们有两个字段:标题和正文。你可以继续尝试添加发布日期、作者或文章分类等字段。特别注意正文(Body)字段,可以将其裁剪为指定字符数并添加省略号。点击正文字段,在设置窗口中勾选 Trim this field to a maximum length,并输入显示的字符数:
接着,勾选 Remove HTML tags,以防正文中存在未闭合的 HTML 标签。
现在我们有了字段,但还可以设置过滤条件,控制显示哪些节点的字段。
过滤器(Filters)
默认情况下,我们有两个过滤器:一个用于只显示已发布的节点,另一个用于只显示文章。我们可以修改或添加新的过滤条件。
点击 Add 可以添加新的过滤器。例如,我们可以显示最近一周内发布的文章。添加过滤器 Content: Authored on,在过滤器设置中选择 Value type: -7 days。
如果过滤器中有 “Use Files ..” 这样的条件,请删除该过滤器并改为选择 Content type。
要删除过滤器,点击 Add 按钮旁边的箭头,选择 Rearrange,在弹出窗口中可以删除或重新排序过滤条件。然后添加新的内容类型过滤器。
还可以根据作者、标签、分类等条件进行过滤。你可以自己尝试不同的过滤设置。接下来我们看排序。
排序(Sorting)
除了过滤内容外,我们还可以通过视图控制内容显示的顺序。
目前我们按照发布日期排序,最新的文章排在最前(如果改为升序则反向显示)。我们还可以为文章添加一个“权重(Weight)”字段,类型为正整数,最小值为 1(关于添加字段的步骤,可参考上一课)。
现在添加一个新的排序条件 Content: Weight,并将顺序设置为 Descending(降序),即权重越高文章越靠前。
与过滤条件不同,排序条件的顺序非常重要。系统会按排序条件逐个执行。例如,如果“发布日期”是第一个排序条件,则视图会先按日期排序,只有当两篇文章的日期相同时,才会按下一个条件排序。但由于发布日期精确到秒,所以几乎不会相同,第二个排序条件将不会生效。因此,我们应将排序顺序调整为先按“权重”排序,再按“发布日期”排序。
点击 Add 按钮右侧的箭头,选择 Rearrange,即可通过拖拽交叉图标调整排序顺序。
保存视图。现在可以创建几篇文章,访问 /articles
页面(或你在视图中定义的路径),查看结果: