6.9 Drupal Views 主题化:创建带缩略图的 Owl Carousel 幻灯片。
很多时候,Views 默认模板并不能满足我们的需求,因此我们可以通过 模板重写(override) 的方式自定义 Views 的输出效果。不幸的是,Views 本身并没有提供用于查找可用模板的 UI 界面,但我们可以根据模板命名规则(patterns)来自行重定义模板。
关于模板命名规则的更多内容,请参阅以下文章:
6.6. 在 Drupal 中使用模板:了解 Drupal 核心中的模板。
我们主要关注以下部分:
以下是可用于重写的模板名称格式:
视图名称(View Name)— foobar
(机器名称)
显示格式(Display format)— unformatted
(未格式化列表,可根据样式不同调整)
显示风格(Display Style)— fields
显示名称(Display Name)— page
对应的模板文件命名规则如下:
views-view--foobar--page.html.twig views-view--page.html.twig views-view--foobar.html.twig views-view.html.twig
views-view-unformatted--foobar--page.html.twig views-view-unformatted--page.html.twig views-view-unformatted--foobar.html.twig views-view-unformatted.html.twig
views-view-fields--foobar--page.html.twig views-view-fields--page.html.twig views-view-fields--foobar.html.twig views-view-fields.html.twig
Owl Carousel 1.x 插件不支持为画廊显示缩略图(thumbnails)。因此我们将使用 Owl Carousel 2.x,它支持缩略图功能。
如果您不想自己编写模板重写、CSS 或 JavaScript 代码,可以直接使用以下模块:
这些模块允许您在无需编写 CSS 或 jQuery 代码的情况下快速配置幻灯片。
不过在本教程中,我们将练习如何通过重写 Views 模板并加载 jQuery 库来实现自定义幻灯片。
首先,下载并引入 Owl Carousel 2.x 库:
https://github.com/OwlCarousel2/OwlCarousel2
请注意,不要使用旧版 Owl Carousel 1.x:
https://github.com/OwlFonk/OwlCarousel
1.x 版本不支持缩略图功能,如果使用它则必须编写额外代码。
将包含 owl.carousel.min.js
文件的 owl-carousel
文件夹复制到您的主题目录中。然后在主题的 .libraries.yml
文件中添加 CSS 和 JS 资源:
global-styling:
version: 1.x
css:
theme:
owl-carousel/owl.carousel.css: {}
owl-carousel/owl.theme.css: {}
owl-carousel/owl.transitions.css: {}
css/style.css: {}
css/print.css: { media: print }
js:
js/custom.js: {}
owl-carousel/owl.carousel.min.js: {}
dependencies:
- core/jquery
我并未将 JS 文件放入 /js
或 /css
文件夹中,您可以根据需要调整。若移动了文件,请记得修改 CSS 文件中引用图片的路径(通常位于 images
文件夹中)。
提示:修改后请清除缓存以应用更改。
接下来,我们将创建一个新的 内容类型(Content Type),命名为 “Gallery(画廊)”,并为其添加一个 图片字段(Image Field)。
然后,创建一个新的 View(视图),用于显示该内容类型中的图片字段。