第11章 Drupal模块
译者:勇敢的心(鑫)
就现在的Drupal而言,它已经很惊人了。Drupal 8核心所提供的特性和功能往往超过使用Drupal建站的人员的需求。但有些时候你可能需要Drupal核心本身没有的功能。在这种情况下,为了达到预期——完成任何你想在基于Drupal的网站上实现的事情,你不妨看看那些数以千计的贡献模块。
在本章中,您将学习如何查找,安装,启用和配置贡献模块。
查找贡献模块
一个贡献模块本质是一个或一组用来扩展 Drupal core 功能的程序。贡献模块由成千上万积极参与Drupal社区的开发者们免费设计、开发、提供。模块可以从 Drupal.org 下载,并通过模块管理页面启用。接下来我将详细介绍添加模块的过程。
一个贡献模块可以很简单,比如只是提供一种机制来自动创建文章的标题;也可以很复杂,比如一个具备产品管理、库存管理、订单管理、发货管理、信用卡处理、客户管理和退货管理等完备功能的电子商务店面。贡献模块数量巨大,形态大小各异,并且涵盖了各种各样的话题。为了找到贡献模块,请访问 www.drupal.org/project/project_module ,并通过“模块类别(Module categories)”下拉列表中浏览模块的种类。示例类别包括以下内容(类别名称后括号中的数字代表写作的时候该类别下可用模块的数目):
管理(1,410)
商业/广告(653)
社区(687)
内容(2,370)
电子商务(1109)
导入/导出(496)
移动端(176)
多语言(244)
性能和可伸缩性(379)
用户管理(540)
第三方集成(2302)
应用程序(2393)
译者注:类别名称的翻译供参考
正如你从这些例子中看到的那样,有数以千计跨越多种类别的模块。这里所列的类别的常规标题不利于展现隐藏其后的可用模块的丰富功能。通过扫描数百个模块来找到你需要的那个模块往往需要研究和耐心。复杂的要求,可能还需要多个模块一起来解决一个更大的问题。了解哪些模块做什么,哪些模块配合起来使用很好,哪些模块不能一起使用等常常是构建一个复杂的Drupal网站最大的挑战。
这里给出的一个建议是访问 www.drupal.org/project/project_module ,在“排序方式(Sort by)”一栏中选择“最新发布(Last release)”排序选项,然后单击搜索(Search)按钮。出现的列表将显示最新的已经向社会发布的模块和模块更新。每隔一两天访问一次该网站,并通读网站上最新添加的或更新的模块的说明。每天只需要几分钟的时间,你就能快速了解那些模块以及通过 Drupal 提供的模块实现的方案的类型。 第三方网站 http://drupalmodules.com ,能很好地帮助我们找到合适的模块。该网站提供了模块查找功能,使得为特定工作找到合适的模块变得更容易。
下载并安装一个模块
为你的站点安装一个新的模块有三个基本途径:下载模块文件到你的服务器、使用模块管理界面上的“安装新的模块(Install new module)”功能或使用Drush。我将在本章介绍前两种方法,并在第15章介绍如何使用Drush。 安装模块的第一步是找到合适的模块。正如前面所述,有成千上万的模块可供挑选;找到合适的模块往往是最大的挑战。为了便于演示,我们选择两个最流行、最有用的模块: Google Analytics module 和 Display Suite module 。首先,我们将通过下载文件到服务器来下载 Google Analytics module ,然后我们将使用这一节的方法通过“安装新模块”功能来下载 Display Suite module 。
下载模块文件到您的服务器
我将通过下载模块文件到我的 Drupal 8 网站的模块目录来演示如何安装 Google Analytics module 。步骤如下:
访问 Drupal.org/project/modules 找到该模块。您可以使用搜索功能或模块页面上的过滤器来查找一个模块,但是要知道Drupal.org对模块的网址(URL)的标准命名法是以模块的名称作为URL的最后元素。快速搜索谷歌分析模块:访问 www.drupal.org/project/google_analytics 。
向下滚动到该模块的下载部分。在大多数情况下,你应该选中要安装模块的最新版本。最新版本以绿色背景高亮显示。在某些情况下,你可能需要使用一个仍处于开发阶段的模块,如果一个稳定的版本尚未公布。开发版本通常以红色背景高亮显示,并且具有以-dev结尾的版本号。您应该谨慎使用预(DEV)版本的模块,因为这些模块都尚未完全开发,并没有被彻底地测试。要下载一个模块,右键单击 tar.gz 链接(下载 Drupal8 的版本),然后单击你的浏览器提供的弹出菜单中的保存(Save)选项。如果你的 Drupal 8 安装在本地计算机上,你可以在你的安装 Drupal 的模块目录中直接保存tar.gz文件。如果你的Drupal没有安装在本地计算机上,使用 FTP 将文件复制到模块目录服务器上。模块目录位于在你建立的网站根目录Drupal 8 中。
解压文件。解压该文件时,取决于你的操作系统,你可以在文件浏览器中找到该文件,并双击;也可以在命令行解压缩文件,比如使用gunzip一类的工具来解压GZ文件或tar一类的工具来解压tar文件。随着你解压后的文件加入到模块目录,你就可以在模块文件夹中看到一个以google_analytics命名的文件夹。此时,您就可以启用该模块了。
要启用模块,点击页面顶部的管理菜单中的“Manage”链接,然后点击二级菜单中的“Extend”链接。点击“Extend”链接将带您到模块管理页面,在那里您可以搜索到该模块。向下滚动页面,你应该将看到以“Statistics”命名的部分,其中应包括 Google Analytics module 。勾选模块旁边的复选框,然后单击页面底部的“保存配置(Save configuration)”按钮。
看!谷歌分析模块现已启用,并能够在网站上使用了。您可以按照相同的过程来安装任何你想添加到你的站点上的贡献模块。
使用安装新模块功能
安装新模块的第二种方法是使用模块管理页面上的安装功能。此功能提供了一种只输入安装文件的URL,并点击一个按钮来下载安装模块的能力。这种方法需要你有可以访问您的服务器的FTP,一个有效的FTP用户帐户,并且模块目录设置了适当的权限,允许FTP用户写入。 Drupal 将自动下载模块的安装文件,解压安装文件,将文件移动到正确的目录,并安装模块。要访问模块页面(在里面你可以下载并安装新的Drupal模块),只需点击顶部菜单的“Manage”链接,然后点击二级菜单中的“Extend”链接。 Drupal将显示模块管理页面,该页面显示了所有作为 Drupal core 组成部分的模块(见图11-1)包括我们刚才安装启用的 Google Analytics module 。
从模块管理页面开始,步骤如下:
图11-1 Drupal模块
- 要开始安装过程,请点击网页顶部附近的“安装新模块(Install new module)”按钮,然后将弹出安装模块的页面,见图11-2。
图11-2 该模块安装页面
在安装模块的页面上,也提供了模块的安装文件的URL(来自Drupal.org),或在您下载该模块到您的计算机的情况下,使用“上传一个模块或主题(Upload a module or theme)”功能来从你的电脑把该文件上传到服务器。为了简化这个过程,我们将使用第一个文本框来指定我们将要安装的 Display Suite module 的URL。要找到 Display Suite module 的网址,请访问 www.drupal.org/project/ project_module ,在“Core compatibility” 选择列表中选择“8.x”,并在搜索模块文本框(Search Modules)中输入“Display Suite”。单击搜索(Search)按钮。在搜索结果中,向下滚动,直到你在列表中看到 Display Suite module ,点击标题将显示该模块的主页。你应该是 www.drupal.org/project/ds 的页面,其中ds是模块开发人员使用的 Display Suite 的缩写。
向下滚动到Display Suite 主页的下载部分,在那里你会找到模块的当前版本的列表(见图11-3)。在我们的例子中,我们想要该模块的Drupal 8版本,所以找到可用版本列表中该模块的8.x版本。
图11-3 Display Suite 的可用版本
- 要捕获安装文件的URL,右键单击您要安装的版本的下载链接,然后从浏览器的选项菜单中选择相应的复制链接位置(copy link location)选项。返回到模块管理页面,将URL粘贴在上面的文本框中,您现在就可以安装该模块了。
- 要开始安装过程,点击安装按钮。 Drupal将自动从Drupal.org下载安装文件,解压压缩文件,并将所有文件以及模块相关的目录移到你的服务器的相关目录中,然后运行与模块相关的安装脚本。
- 模块现在已安装但尚未启用。要启用该模块,必须选中模块管理页面上相应的复选框(见图11-4),并点击页面底部的“保存配置(Save configuration)”按钮。对于 Display Suite 模块,你至少需要启用 Display Suite 和 Display Suite UI 模块。
图11-4 模块管理页面
此时Display Suite module已安装启用完毕,可以使用了。现在,您可以按照相同的步骤来为你的网站安装任何你想要的贡献模块。
配置模块和设置权限
一些,虽然不是全部,模块提供一定程度的定制和配置。在许多情况下,只需要设置权限规定谁可以使用这些模块。 要设置模块的权限,单击页面顶部的管理(Manage)链接,然后点击二级菜单中的人员(People)链接。在人员管理页面,点击权限(Permissions)标签可以查看网站上设置的所有权限。
我们在前面的步骤中安装了 Google Analytics module ,还需要设置权限,以便管理员可以管理 Google Analytics module 的配置参数。向下滚动权限列表,直到找到该模块(见图11-5)。
图11-5 Google Analytics module 的设置
要为该模块设置权限,勾选管理员一栏中 Google Analytics 管理员对应的复选框,然后单击页面底部的“保存权限 (Save permissions) ”按钮。现在,你已经能够为网站的管理员设置 Google Analytics module 的配置参数了。当你安装启用其他模块时,记住审查并设置该模块的权限。
一些模块可以设置配置参数,如 Search module (Drupal core 的一部分)。要查看模块的配置参数,请点击页面顶部管理菜单中的管理(Manage)链接,然后点击二级菜单中的配置(Configuration)链接。配置页面列出了所有能够设置配置选项的模块(见图11-6)。不是所有的模块遵循这个惯例。如果您没有看到你正在处理的模块的配置链接,查看 Drupal.org 上该模块主页里相应的文档,或者检查您的站点中模块目录中对应的 readme.txt 文件。
图11-6 模块配置页面
当查看模块配置页面时(见图11-6),你会看到一个搜索和元数据部分,在这部分,有一个搜索设置的链接。点击该链接以查看搜索的配置参数(见图11-7)。
图11-7 搜索的配置选项
不是所有的模块提供设置配置参数的能力;它依赖于模块做什么,以及模块开发者确定这些配置选项是否必要。你最好访问一下设置页面,检查所有已安装并启用的模块的配置选项,以确保它们被正确地设置。
启用其他模块
你可以“继承”一个现有的Drupal站点,或者您可能希望启用已在网站上存在的其他模块(例如,某些模块是 Drupal core 的一部分,但没有在 Drupal 的安装过程中自动启用)。要查看您的网站可用模块的列表,只需点击页面顶部的管理链接,随后点击二级菜单中的扩展链接。这样做将打开图11-8所示的模块管理页面。
图11-8 模块管理页面
Drupal的模块管理页面被分为几个部分,每个部分包含一个或一组模块。被作为 Drupal core 的一部分的模块,在列表中的核心(Core)部分。为了演示,我们将启用一个默认情况下不在 Drupal 的安装过程中启用的模块—— Aggregator module 。正如图11-8所示, Aggregator module 不被选为启用(模块名称左侧的复选框指示模块启用与否)。要启用模块,立即选中模块名称左侧的复选框,并滚动到页面的底部,点击“Save configuration(保存配置)”按钮来启用该模块,以便它可以在你的新网站中使用。 点击“Save configuration(保存配置)”按钮后,Drupal将重新显示模块管理页面,同时在页面顶部显示“successful configuration(配置成功)”消息。 Aggregator module 现在可以使用了。
升级模块
Drupal 模块的升级往往是修复了漏洞和附加新的功能。幸运的是,当一个模块的新版本已经发布,Drupal 会告诉你,并提供了自动更新该模块到最新版本的机制。要查看所有可用的更新,只需点击模块管理页面顶部的更新选项卡(见图11-8),或点击管理下的二级菜单中的报告链接,然后单击“Available updates(可用更新)”链接(见图11-9)。
图11-9 报告页面
注意:可能有些情况下你不想升级模块;例如,升级一个模块将会中断另一个相关模块。我建议你在进行更新之前,查看 Drupal.org 的论坛,看是否有人已经报告了问题。
卸载模块
可能有这些情况:你在安装了一个模块后却发现它不是你想要的那样,或者它会给你的网站带来问题。在模块管理页面的顶部,你会发现“Uninstall(卸载)”选项卡。单击该选项卡将会显示具有自动卸载能力的模块的列表(见图11-10)。要卸载模块,选中模块旁边的复选框,点击页面底部的“卸载”按钮。
图 11-10模块卸载页面
注意:并非所有模块都有自动执行卸载的能力。这种功能是由模块开发人员创建的。并不是所有模块开发人员都很友善地提供此功能。
在其中一个模块不提供自动卸载功能的情况下,删除该模块的过程是
- 导航到您的服务器上的模块目录。
- 选中包含该模块的文件夹,删除该文件夹。
卸载模块时,您应使用注意事项,因为模块之间经常存在依存关系,这意味着一个模块的正常运行依赖于另一个模块。如果您不能确定模块是否具有依存关系,访问 Drupal.org 上该模块的页面并查看模块的描述。有依存关系的模块将在描述的正文中列出这些依存项。或者,检查你的服务器上该模块的 info.yml 文件。里面列出该模块的依赖项 。 Views 模块的 info.yml 文件 如下所示:
name: Views
type: module
description: 'Create customized lists and queries from your database.'
package: Core
# version: VERSION
# core: 8.x
dependencies:
- filter
11 个顶级模块
有几个模块,似乎每个人的"收藏夹"列表中都有。对于我们这些Drupal工作者,这些模块代表我们的标准"工具腰带",我们在几乎每个 Drupal 的项目中使用。本节对它们每一个做简要概述。如前所述,请每天花几分钟,访问 www.drupal.org/project/project_module ,浏览这些网页是免费的 !
Views
当你询问有经验的 Drupal 开发者他们最喜欢的模块是什么,Views将是他想到的第一个或第二个答案。当你在网站上选择或呈现内容时, Views module 就像一把瑞士军刀一样好用。您可能使用 Views 的一个例子是,当你创建了50条内容,每个项目描述一个过去发生的新闻事件。你可能需要列出这50项,并且是按照每个故事的发布日期排序。 Views 可以帮你完成。此外,您可能希望新闻文章的列表像一个Excel电子表格一样以表格形式列出。 Views 可以帮你完成。您可能还需要为游客提供一个新闻文章以表格形式列出的页面,并且表格为游客提供通过单击文章表格视图的标题之一对文章进行分类的功能。 Views 可以帮你完成。您也可以提供一个过滤机制,使游客能够选择一个与您的所有新闻故事相关联的主题、人员或地点,就能只看到那些满足搜索条件的文章。 Views 可以帮你完成。您可能还需要为那些使用了 feed aggregators 的游客提供新闻文章的RSS提要。 Views可以帮你完成。 Views 是一个极其易于使用且非常强大的模块,几乎每个人都必须拥有。而好消息是,它是 Drupal 8 core的一部分。第9章将详细介绍如何使用 Views 。
Layout
流行度紧随其后的是 Layout 。在第八章中当我们在网站上放置块时,你看到我们只限于把块放入我们正在使用的 Bartik 主题定义的区域。但是,如果我们想要把内容区域划成行和列以便我们能够创建包含很多元素的登陆页面呢? Layout 就派上用场了。对于高级的页面布局,没有一个工具比 Layout module 更容易使用、功能更强大。第10章将介绍如何使用 Layouts。
Rules
Rules 模块允许管理员有条件地定义基于事件的执行操作。例如,如果您想在每一个评论发布到网站时自动给网站管理员发送一封邮件来请求管理员的审查和批准,您可以使用 Rules 来配置该行动。
Display Suite
Display Suite 给你一个拖和拖放界面,这允许你完全控制你的内容的显示形式。你可以按照你想要的方式来安排你的节点,视图,评论和用户数据,而无需浏览几十个模板文件。
Nicemenus
Drupal 现成的菜单功能提供一种易于使用的创建水平和垂直菜单的机制,这些菜单被限制为单一层次。在很多情况下,你会希望具备创建下拉菜单(适用于水平菜单)或滑动菜单(适用于垂直菜单)的能力。 Drupal的菜单系统提供了以分层方式分配菜单项的能力;但是,它需要我们 Drupal 开发者格式化菜单,才能保证当用户将鼠标悬停在一个菜单项时有下拉菜单或滑动菜单出现。幸运的是,我们拥有能够自动呈现下拉或滑动菜单的 Nicemenus 模块。
Pathauto
成功优化搜索引擎的关键要素之一是提供您的网站上有意义的 URL 。默认情况下, Drupal 8 现成的URL看起来像 http://localhost/node/1 。搜索引擎不知道“node/1”的意思,也也不知道与该页面相关联的内容是关于什么的,只是“看一眼”URL 。网站的访客也可能很难导航到那些未通过菜单链接或访问的页面,例如 http://localhost/node/2487 ,就不是很直观。幸运的是,我们有 Pathauto 模块,它可以为正在创建的结点创建一个“别名URL”。网址别名采用节点名字的形式,同时带有用来分隔单词的连字符,并且所有的字都换成小写。以 http://localhost/node/2487 为例,如果该节点的标题为“Special deals of the month”,由Pathauto产生的 URL 应该是: http://localhost/specialdeals-month ( Pathauto 生成URL时,会除去像“the”和“of”这样的常用词)。别名网址将成为呈现页面时 Drupal 使用的主要路径,是相比于 http://localhost/node/2487 对用户和搜索引擎更友好的版本。
Webform
Webform 模块提供了一个简单易用的创建在线表单的界面。您可以使用在线表单来捕捉网站访问者填入表格的信息,而且几乎可以是你能想到的任何类型的信息。表格可能是求职申请表,信息申请表,甚至是一个事件登记表。你用 Webform 来创建表格时,表格的类型几乎没有任何限制。这个模块提供了一种创建和输出表单的扩展能力。那就是给预先确定的人发送电子邮件,邮件包含了某人在表单中输入信息的内容。提供了两种工具,一个是可以生成关于捕获表单信息的报告,另一个可以将输入表格的信息导入到一个 Excel 表格里。
Backup and Migrate
Backup and Migrate 模块能在你定义的固定时间点(每12小时、每24小时等等)自动备份你的 Drupal 数据库中的信息。 Backup and Migrate 也提供了只需点击一个按钮即可(实时)手动备份数据库的功能。您也可以通过选择以前的备份并单击还原按钮来还原备份。许多Drupal的管理员在晚上睡得很安稳,因为他们知道他们的网站正在被自动备份。
Date
Date模块提供了一套工具,用于创建和使用网站上的日期,如选择日期时弹出的日历。
Library
Library 模块具有用于与外部库集成的其他所有模块的共同特性。尽管 Library 这个词的任何延伸义都不够吸引人,但如果你使用了调用外部库(比如外部JavaScript库)的模块, Library 将是那些必须具备的模块之一。
Drupal Commerce
如果你的网站有电子商务的任何元素(如销售衬衫之类的实物物品或出售订阅之类的虚拟物品),则有两种主要选择: Ubercart (Drupal 中电子商务模块的鼻祖)或者 Drupal Commerce 。这两种解决方案都提供世界一流的电子商务能力,事实上他们也是在 Drupal 站点上开展电子商务的标准。
总结
在这一章中,你学会了如何通过使用贡献模块来显著增强你的 Drupal站点的功能。从字面上讲有数以千计的免费模块可供选择,这意味着如果你想在您的 Drupal 站点上做一些事情,存在一个模块提供你需要的功能是很有可能的。接下来我们将学习模块是如何构成的。