Views 主题化:修改 view.tpl.php 模板(字段、行、区块、页面),并集成 jQuery 插件 EasySlider
在本文中,我们将了解 Drupal 的查询构建器 —— 模块 Views (http://drupal.org/project/views)。Views 允许以可视化方式输出各种内容类型的字段、评论、分类术语、用户信息以及其他来自数据库的数据。该模块配备了图形化界面,可通过鼠标轻松创建数据库查询。
注意! 如果您希望在一小时内立即使用 EasySlider,我强烈建议直接使用对应模块。本文主要用于讲解 Views 模板结构及其主题化(theming)原理。稍后若要自定义 EasySlider 的外观,还需修改 CSS。
当我们配置好所需字段后,需要按照自己的要求排版。这可以通过模板文件实现。默认情况下,这些模板位于 theme 文件夹中。
使用 Sassy 模块在 Drupal 中快速集成 SCSS(SASS)
SASS/SCSS 早已成为编写 CSS 代码的标准。如果您还没有在自己的网站中使用它,那么现在正是时候。通过 Sassy 模块可以非常快速地连接 SCSS,而且即使在共享主机(shared hosting)上也能工作,因为 CSS 文件的编译是通过 PHP 库完成的。
我们开始吧。我这里有一个带有 Zen 主题的干净 Drupal。首先需要安装 Sassy 模块:
https://www.drupal.org/project/sassy
Sassy 模块需要 Prepro 模块来编译 CSS:
https://www.drupal.org/project/prepro
还需要安装 Libraries API 模块,用于连接 Sassy 所需的库:
Emmet(原名 Zen Coding)——更快速地编写 HTML/CSS
Emmet 是 Zen Coding 项目的改名版本。Emmet 允许通过简写快速生成 HTML 列表、带类名或 ID 的块结构。不仅如此,它还支持通过简写快速编写 CSS 属性。虽然一开始记忆这些缩写和工具看起来有些多余,但当你习惯之后,会发现没有 Emmet 写代码反而变得不方便。
Emmet(Zen Coding)的功能
在编写 HTML 时,我们经常需要写大量代码,写得越多,出错的几率(例如忘记闭合标签)也越高。这时 Emmet(Zen Coding)就能帮上忙。大多数 IDE 都内置或支持安装 Emmet 插件,只需设置一个快捷键即可生成 HTML 代码。
例如,你可以写下:
div#content>h1+p
按下 Emmet 执行快捷键后,它会转换为:
<div id="content">
<h1></h1>
<p></p>
</div>
如你所见,我们输入的只是类似 CSS 的选择器,而生成的却是对应结构的 HTML。
Features Drupal(Drupal 功能管理)
Features 是一个模块,它可以将网站的功能打包在一起,并通过一次点击将其迁移到另一网站。最终会生成一个可作为模块安装的 feature(特性)。Feature 是一组实体的集合,这些实体共同构成了网站上的某个功能。
Features 模块 提供了用户界面(UI)和程序接口(API),用于将 Drupal 中的各种组件(模块、内容类型、分类词汇表、视图、菜单等)组合成一个 Feature 模块。Feature 模块与普通模块一样,包含 .info 文件,可以通过后台管理修改、启用、禁用、更新或删除。
Feature 模块可以包含的功能示例:
Drupal Features 新闻
在本课中,我将介绍如何通过 Feature 模块 将网站中的某些功能复制到其他网站上使用。我们先从简单的例子开始,创建一个新闻流(News Feed),包括以下内容:
- 在菜单中添加“新闻”链接,指向新闻页面;
- 创建新闻页面;
- 在首页添加新闻区块(block)。
这些功能足够我们了解 Features 模块的基本用法。
首先需要安装以下模块:
然后创建一个“新闻(News)”内容类型(Content Type),并添加几条该类型的节点(nodes)。
接下来我们来创建 View 页面和区块。
页面设置:
Drupal Features:更新 Feature 模块版本
在上一节课中,我们学习了如何为 Drupal 创建 feature 模块。现在在本节课中,我们将学习如何更新这些模块,并在此过程中添加新功能。

我们已经有一个 feature 模块的 alpha1 版本,现在创建该模块的下一个版本 alpha2。在新闻区块(block)中,除了标题外,我们再添加发布日期和简短描述(摘要)。将 alpha1 版本的 feature 模块文件夹复制到 sites/all/modules 目录中,但不要启用它,这样我们就能重新生成该 feature。
Drupal 功能与分类法(Taxonomy)
在前几节课中,我们已经创建了 feature 模块的 alpha1 和 alpha2 版本,现在我们将创建下一个版本 alpha3。我们将为模块添加一个包含新闻栏目和新闻标签的分类词汇表(taxonomy vocabulary)。
创建两个分类词汇表:“新闻栏目”和“标签(Tags)”。

在 Drupal 7 中,系统默认已经有一个名为 Tags 的词汇表,因此我们只需再创建一个“新闻栏目”。接下来,为新闻内容类型添加标签字段。对于“新闻栏目”字段,设置为必填并限制只能从列表中选择一个术语。对于“标签”字段,建议允许多个值并启用自动补全功能,以便在输入时自动添加标签。
设置您自己的 Web 服务器
大多数基于 Drupal 的网站都托管在 虚拟主机(shared-hosting)上,较少部分位于 虚拟服务器 和 独立服务器 上。也许您的网站目前也托管在虚拟主机上,但由于网站规模扩大或 Drupal 网站数量增加,您决定迁移到服务器上。首先,让我们了解一下虚拟主机、虚拟服务器和独立服务器之间的区别。
APC 配置:PHP 缓存设置
⚠️ 注意! 如果您的 PHP 版本是 5.5 或更高版本,请不要使用 APC,因为 OPCache 已取代 APC 并默认集成在 PHP 中。
2013 年 3 月 21 日,PHP 5.5 Beta 1 发布,其中包含 “Zend OPCache”。这意味着 OPCache 将正式取代 APC,成为 PHP 核心的一部分,并会随每个新版本 PHP 一同维护。
APC(Alternative PHP Cache)是 PHP 的一种字节码缓存机制。它会将编译后的 PHP 操作码(Opcode)存储在内存中。正如开发者描述的那样:“APC 是一个免费、开源且可靠的 PHP 中间代码缓存与优化系统。”
Drupal 模块描述
在本章节中,我将介绍 Drupal 的各个模块。