Drupal8-快速启动指南-全-
Drupal8 快速启动指南(全)
原文:
zh.annas-archive.org/md5/32e01a512825b6b25eea9ec564daaed5
译者:飞龙
前言
使用各种术语来界定 Drupal:平台、框架、环境等等。在其核心,Drupal 是一个内容管理系统(CMS)。与其他术语一样,CMS 的含义可能有些抽象和模糊,因此以下是我认为在这个书中的术语含义:
-
内容:用于在线分享的数字材料
-
管理:为了可用性、连续性和可行性而进行的操作,包括创建、编辑、存储、检索、索引、搜索、审查、审核和翻译
-
系统:功能集合的统一体
将这三者结合起来,你就有了一个核心的 Drupal:主要用于向万维网用户提供数字材料。
Drupal 提供了广泛和深入的功能,具有强大的基本功能,可以通过高度定制进行大幅扩展。这与此相关,并且与任何提供广泛个性化的产品一样,那就是一个不容忽视的学习曲线。想想你第一次与汽车显示屏控制台、智能手表甚至纽约地铁系统的互动,你可能会回忆起在决定首先做什么时的初始瘫痪;对于一些人来说,这种体验中没有任何直观之处。
我的希望,以及本书的目标,是帮助你轻松地进入 Drupal,揭示完成更常见的内容管理活动的方式。
本书面向对象
本书非常适合希望使用 Drupal 8 创建专业网络应用的网页开发者。你应该有一些之前的 Drupal 经验,并且必须具备一般网络应用开发的基本知识。如果你希望创建流畅的专业网站,将带你进入下一个层次,那么这本书就是为你准备的。
本书涵盖的内容
第一章,在 Drupal 中找到你的路,将为你提供创建新 Drupal 网站的逐步安装指南。你还将查看 Drupal 主页的一些主要部分和行政导航。
第二章,内容类型结构,将探讨 Drupal 内容类型的基础知识,并解释为什么我们需要创建一个内容类型。你还将了解内容类型字段,它们是什么,以及可用的字段类型。逐渐地,你还将了解如何创建内容类型以及如何向内容类型添加字段。
第三章,管理用户,将简要介绍用户,涵盖管理用户的所有主要方面,包括与内容一起工作的角色和权限。你还将了解用户类型以及 Drupal 如何确保有限访问。
第四章,创建和编辑内容,将指导您如何创建和编辑内容。您还将学习如何为各种角色配置编辑器以及如何为内容定义自定义 URL。
第五章,让 Drupal 更加有用,将向您介绍模块是什么,介绍它们的来源,并解释如何启用它们。您还将探索一些更受欢迎的模块,这些模块扩展了 Drupal 对关注内容的用户的实用性。
第六章,吸引全球读者,将向您介绍如何使用 Drupal 的翻译功能。您将学习如何声明额外的语言以及如何启用用户选择他们偏好的语言。您还将学习如何添加网站访客使用的图标以及导入用户界面翻译。
第七章,为大众提供内容 - RSS,将向您介绍 RSS 源是什么以及如何创建为这种源准备的内容。您还将了解视图模块,什么是视图,以及如何创建具有多个源显示的视图。
第八章,欢迎回家!,将指导您如何通过编辑视图、提供存档和最新内容块以及更改页脚菜单来改进弱的主页。
为了充分利用本书
为了使用 Drupal 8,并运行本书中的代码示例,需要以下软件:
-
Web 服务器:Apache(推荐)
-
数据库:MySQL
-
PHP
下载彩色图像
我们还提供了一份包含本书中使用的截图/图表彩色图像的 PDF 文件。您可以从这里下载:www.packtpub.com/sites/default/files/downloads/9781789340310_ColorImages.pdf
。
使用的约定
本书中使用了多种文本约定。
CodeInText
:表示文本中的代码单词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 昵称。以下是一个示例:“将下载的WebStorm-10*.dmg
磁盘映像文件挂载为系统中的另一个磁盘。”
粗体:表示新术语、重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词在文本中显示如下。以下是一个示例:“从管理面板中选择系统信息。”
警告或重要提示如下所示。
小贴士和技巧如下所示。
联系我们
我们欢迎读者的反馈。
一般反馈:如果您对本书的任何方面有疑问,请在邮件主题中提及书名,并通过customercare@packtpub.com
给我们发邮件。
勘误:尽管我们已经尽最大努力确保内容的准确性,但错误仍然可能发生。如果您在这本书中发现了错误,我们将不胜感激,如果您能向我们报告这一情况。请访问 www.packt.com/submit-errata,选择您的书籍,点击勘误提交表单链接,并输入详细信息。
盗版:如果您在互联网上发现任何形式的我们作品的非法副本,我们将不胜感激,如果您能向我们提供位置地址或网站名称。请通过发送链接至 copyright@packt.com
与我们联系。
如果您有兴趣成为作者:如果您在某个领域有专业知识,并且您有兴趣撰写或为书籍做出贡献,请访问 authors.packtpub.com.
评论
请留下评论。一旦您阅读并使用了这本书,为何不在您购买它的网站上留下评论呢?潜在读者可以查看并使用您的客观意见来做出购买决定,Packt 公司可以了解您对我们产品的看法,我们的作者也可以看到他们对书籍的反馈。谢谢!
想了解更多关于 Packt 的信息,请访问 packt.com.
第一章:在 Drupal 中找到你的位置
本章将逐步引导你通过 Drupal 站点安装过程。之后,我们将快速浏览 Drupal 管理界面。在本章的整个过程中,你将了解以下主题:
-
如何导航 Drupal 安装脚本
-
如何登录到 Drupal 管理界面
-
如何导航和使用管理界面
-
Drupal 特定术语
安装 Drupal
安装 Drupal 是一个两阶段的过程。第一阶段是准备环境以托管 Drupal 网站,第二阶段是运行安装脚本以创建网站。让我们快速了解一下 Drupal 是什么以及第一阶段的要求。
准备环境
物理上,Drupal 是一组文件夹和文件,通常位于一个称为 Drupal 根的父文件夹中。Drupal 还包括一个数据库,其中保存了网站的内容和各种设置。
Drupal 根通常位于一个称为网络服务器的计算机上,该服务器可能包含许多网站,尽管网络服务器也可能存在于笔记本电脑上,用于开发网站。Drupal 存在的环境将包括以下内容:
-
操作系统,通常是 Linux,但也可能是任何其他操作系统,例如 Windows、OS X 或 Unix
-
一个网络服务器,例如 Apache 或 Nginx
-
一个数据库,通常是 MySQL,可能位于同一服务器或单独的数据库服务器上
-
PHP 语言
Drupal 存在的环境统称为 LAMP 环境,代表 Linux、Apache、MySQL 和 PHP,尽管也存在其他组合,如 Windows 的 WAMP 而不是 Linux。
在运行 Drupal 站点安装过程之前,需要进行的整体安装操作的主题,例如准备 LAMP 环境、下载 Drupal 代码以及安装与其协同使用的相关技术,超出了本书的范围。
要开始,管理员应首先遵循以下步骤,或类似步骤:
-
完成了 Drupal 8 的安装 (
www.drupal.org/docs/8/install/before-a-drupal-8-installation
) -
使用 Composer 安装依赖项 (
www.drupal.org/docs/8/install/step-2-install-dependencies-with-composer
) -
创建了一个数据库 (
www.drupal.org/docs/8/install/step-3-create-a-database
) -
配置了安装 (
www.drupal.org/docs/8/install/step-4-configure-your-installation
)
完成这些后,你现在拥有创建 Drupal 网站所需的环境。你可能认为前面的步骤已经创建了 Drupal 网站,但这并不是事实。既然我现在要这么做,这是一个很好的时机来提到,我经常使用的网站类比是房屋。前面的步骤所做的只是选择了地点,准备了地块,为它提供了基础设施,打下了地基,并确保你有建造房屋所需的材料。现在,我们将开始建造它。
“哦,不!”你可能正在说,“那是不是意味着我需要学习所有那些网络编程知识,比如 HTML?”不用担心。Drupal 所做的一个神奇的事情是创建网站所需的全部技术性内容。遵循几个步骤后,你将拥有一个“纯朴”的 Drupal 网站,未经装饰,也没有过多定制,但它是现成的并且完全可用的。是的,就像可能以标准化的方式建造的房屋一样,你有能力选择油漆、地毯、瓷砖、窗帘和电器,使其独特并最好地反映你的愿景,但这些定制超出了本书的范围,尽管我们将会稍后选择一些“电器”。
与房屋不同,这里没有切割、钉钉或其他需要大量劳动的原始材料组装工作——只需几个简单的步骤。不过,首先,你需要了解一些信息,以便在 Drupal 安装过程中回答有关新网站的问题:
-
网站分配了哪个 URL?如果网站位于远程服务器上,它可能看起来很熟悉,比如
www.mysite.com
。在本地系统上,它可能很简单,比如http://mysite
或者甚至是http://localhost
。 -
Drupal 管理员的用户名和密码是什么?
-
网站的电子邮件地址是什么?
-
数据库的用户名和密码是什么,它的名字是什么?
如果网站不是作为注册网站访问的,那么很可能需要在你的工作站的主机文件中添加一个条目,这相当于一个带有你输入的名称和可以找到的地址的联系人条目。
没有这些问题的答案,安装过程无法完成。一旦你有了这些信息,我们就可以继续了!
我们将首先打开浏览器。可以使用任何常见的浏览器版本,如 Chrome、Firefox、IE、Edge 或 Safari。在地址栏中,输入分配给此网站的 URL:
我在这本书中使用的 URL 是 d8quickstart,你将在包含一个 URL 的任何插图中的地址栏中看到这一点,如下面的图片所示。你需要使用分配给你的网站的 URL。
运行 Drupal 安装脚本
这是当你发现你的管理员执行的预安装步骤是否成功完成的时候。如果是这样,你将看到一个类似于以下屏幕:
在这个阶段,可能出现各种问题,原因包括以下几方面:
-
Web 服务器条目配置错误或指向错误的文件夹
-
URL 与配置的 URL 不匹配
-
需要 URL 的主机条目,但缺失或输入错误
-
Drupal 文件不在正确的位置,或者 Web 服务器条目指向 Drupal 文件夹而不是其内的 web/folder
-
文件权限不正确
希望你能收到前面截图所示的页面;如果不是,前面提到的问题可以迅速解决,以便你能。
你会注意到地址栏中的 URL 与你输入的不同。当 Drupal 确定网站尚未安装时,在这种情况下,这是通过没有可行的数据库来确定的,它将请求主页(你输入的 URL)重定向到安装页面,位于d8quickstart/core/install.php
。
让我们来看看这个第一个屏幕上的一些内容。Drupal 版本号位于页面左上角;在我的情况下是8.5.4。关于安装哪个版本由你决定,但肯定应该是 8.x.x 版本,值得注意的是,安装较旧版本,如安装 8.5.3 而不是当时(撰写本文时)的 8.5.4,可能会使用包含已修复的安全问题的版本。
显示默认的安装语言。
你可以选择一个与提供的不同的语言。Drupal 提供了数十种语言,但如果你想让屏幕与本书中使用的示例匹配,请继续使用英语。
最后,左侧的步骤列表不可点击,因为它们用作进度指示器而不是菜单。随着你通过安装过程,当前步骤将被突出显示,就像现在突出显示的选择语言一样。让我们通过点击保存并继续按钮来继续。
安装配置文件是一个预先确定用于特定目的的配置或设置和软件集合。目前,在正常安装中,Drupal 只有三个可供选择:标准、最小化和 Unami,其中标准是默认设置,也是我们想要的。从这里,点击保存并继续按钮。
如果 Drupal 找到了它继续所需的文件和文件夹,它将快速跳过验证要求步骤,进入设置数据库。否则,它将显示一个需要解决的问题列表,以便它能够继续。在预安装阶段中,一些经常出现的问题包括以下几项:
-
在 Drupal 的文件文件夹结构中,站点文件夹内有一个默认文件夹,默认文件夹内应该有一个文件文件夹。这个文件夹在 Drupal 安装文件中不存在,需要手动创建。通常,这一步会被忽略,或者文件夹虽然创建了,但以这种方式创建将不允许 Drupal 对其进行写入。
-
默认站点文件夹中包含一个名为
default.settings.php
的文件。该文件需要复制到同一文件夹中,并命名为settings.php
。这一点也常常被忽略,或者文件虽然存在,但不会允许 Drupal 对其进行写入。 -
缺少的 PHP 扩展,如
ext-gd
。此类问题的消息应咨询你的服务器管理员。
一旦一切如 Drupal 所期望的那样,它将进入询问数据库配置的阶段:
是时候使用你获得的数据库凭据了。在提供的文本框中,输入数据库名称、数据库用户名和数据库密码,然后点击保存并继续
按钮。
在这一点上,Drupal 将开始安装,将配置信息输入数据库并初始化数据结构。一个仪表盘会告诉你它的进度,如下面的截图所示:
一旦 Drupal 安装完成,过程中还有最后一步,即提供站点配置。你需要使用之前获得的信息来回答这些问题:
站点信息
你输入的站点名称将是 Drupal 识别站点的名称,如果配置为显示站点名称而不是仅显示标志或标志型,它将显示这个名称。这个页面上的任何设置都可以随时更改。
站点电子邮件地址用于在启用联系表单时发送联系消息。
站点维护账户
在 Drupal 中执行各种任务的权限是通过授予的权限来赋予用户的,不是通过用户名,而是通过用户角色。我们将在后面的章节中更详细地讨论这个话题。现在,你需要知道的主要事情是,拥有最高权限的用户角色是管理员,而在管理员中,有一个单独的超级用户登录权限被授予了所有权限。这个角色通常被称为用户 1,因为这是为网站配置的第一个用户,因此获得了这个用户 ID。
在这里输入的用户名、电子邮件地址和密码将被分配给用户 1。如果你不是这个人,并且你没有获得代表这个人使用的凭据,请记下你输入的值,以便他们可以使用这些值登录并更改它们。
地区设置
Drupal 会为某些事件创建日志条目,并代表网站发送消息,例如向订阅用户发送新内容的通知、为新账户接收者的用户发送登录说明等。服务器本身可能位于一个时区,并且可能托管多个网站。计算机上的日期和时间可能不一定与网站所属的组织的日期和时间相同。这里输入的位置和时间区用于确保日志条目和通讯使用正确的时间。
更新通知
就像任何软件一样,Drupal 偶尔需要更新。此外,由于其许多功能是通过附加模块和贡献模块实现的,它们偶尔也需要更新,并且每个模块都可能有不同的更新计划或完全根据需要更新。因此,Drupal 将每天进行一次检查,以查看是否有任何新版本可用。
这些检查很重要,因为更新的原因可能是为了修复与安全相关的问题。因此,通常最好保持复选框选中。然而,在某些情况下,没有必要这样做,例如,当有一个 IT 团队将监控发布,这样网站就不需要这样做,或者当网站是用于开发的网站本地副本,它将始终与另一个网站的版本匹配。再次强调,这里做出的选择可以随时更改,所以如果你不确定,请保持选中。
点击“保存并继续”按钮,Drupal 将为你渲染并显示新的网站!
恭喜!快速入门感觉如何?你现在看到的是一个完全功能的 Drupal 网站。然而,没有内容的网站管理网站又是什么呢?你准备好了吗?让我们继续前进,给你一个全面的游览。
背后的游览
就像在没有地图的情况下进入任何复杂的地点——商场、地铁系统、游乐园——Drupal 可能会让你难以找到方向。因此,在本章的剩余部分,我将担任你的导游,为你绘制 Drupal 的地图。
新网站的首页是通过主题呈现给你的。主题控制元素在页面上的位置、大小、颜色以及其他用户界面或 UI 方面的方面。Drupal 8 的默认主题被称为 Bartik。重要的是要记住,由于以下任何变化,首页可能会(并且很可能在某个时候)看起来有些或非常不同:
-
浏览器或浏览器版本
-
设备类型(例如,iPhone 而不是台式计算机)
-
主题
-
网站的首页布局
-
用户角色权限
-
菜单中添加或删除的项目
因此,尽量不要专注于页面元素的精确位置或外观,而是理解它们是什么,这样你知道你想去哪里或需要什么功能,无论外观如何:
前面的截图在左侧和右侧有数字,用于标识页面上的功能区域。以下表格中的每个区域都有一个标识。接下来将提供更详细的描述:
部分 | |
---|---|
1 | 管理菜单 |
2 | 品牌标识 |
3 | 标签页 |
4 | 系统消息区域 |
5 | 搜索小部件 |
6 | 用户菜单 |
7 | 主要导航 |
8 | 内容区域 |
管理菜单
管理菜单,或称为管理员菜单,通常只有具有管理员角色的用户才能看到。像任何其他 Drupal 菜单一样,显示在其上的条目取决于用户的角色和分配给该角色的权限。例如,具有编辑角色的人可能看不到“扩展”选项,因为这与站点管理相关。
管理链接作为一个切换按钮,交替显示或隐藏其下包含链接到主要管理页面的行。
快捷方式链接用当前用户添加的书签替换了管理链接。例如,如果你通过连续点击链接到达五次点击后的页面,而不是每次都这样做,你可以将其添加为快捷方式。
那一行最后的链接是当前用户账户的链接,它指向用户页面。用户页面有标签页,用户可以通过这些标签页管理账户设置,包括密码,以及用户添加的任何快捷方式。根据站点及其定制方式,这通常是用户可以访问用户资料并编辑这些字段的页面。字段及其说明如下:
-
内容 链接到内容管理页面,在该页面上列出内容标题,并可以管理内容。这将在第四章,创建和编辑内容中进一步介绍。
-
结构 链接到一个进一步的菜单,可以从中管理各种站点结构。对内容编辑者感兴趣的有内容类型和分类法,这些将在第二章,结构化内容类型中讨论。
-
外观 在这里列出了已安装的站点主题,并且可以对其进行配置。主题是一组文件和设置,用于控制站点页面的外观。通常,一个站点应用两个主题:访客看到的主题,以及管理员访问站点后端使用的主题。
-
扩展 链接到模块管理部分。模块是 Drupal 的附加组件,提供额外的功能(参见第五章,使 Drupal 更加有用)。在这里,可以安装和卸载模块。
-
配置显示一个页面菜单,这些页面作为主要管理门户,在这里配置了许多网站设置,例如在安装过程中提供的网站名称。以下是一系列设置类别的列表,请注意,提供的选项取决于用户角色:
-
账户设置: 用户注册和账户取消处理方式、系统生成消息的内容、是否提供联系表单以及与网站管理员关联的角色。
-
文本格式和编辑器: 对内容可以包含的内容(如 HTML 标签)的限制以及内容编辑工具为每个用户角色提供的功能(例如,你可能不希望非编辑者能够添加链接)。
-
维护模式: 在维护活动期间防止用户登录网站的能力。
-
配置同步: 用于导入或导出网站配置设置的工具,以便可以将它们传输到或从另一个系统。
-
搜索页面: 用于配置网站搜索、索引设置、搜索日志以及添加网站搜索页面
-
URL 别名: 用于为特定页面创建别名,以便默认的 Drupal URL(如
mysite.com/node/22
)可以更友好,例如mysite.com/using-drupal
。我在第五章“使 Drupal 更有用”中讨论了一个更好的方法。 -
RSS 发布: 提供从您的网站提供内容源配置设置。我们将在第七章“喂养大众 - RSS”中查看创建选择性 RSS 内容源。
-
基本网站设置: 可以更改网站名称、电子邮件地址等初始设置的地方。
-
Cron: Drupal 在一天中的特定时间间隔内在后台执行某些任务,这意味着不是通过浏览器,这里可以配置间隔,并且可以发出一个临时的请求来运行 cron。
-
快捷方式: 如前所述,快捷方式允许您将 Drupal 目标放置在任务栏上,以便可以一键访问,并且可以在这里管理它们,例如针对单一目的的组。
-
文件系统: 图像、PDF 和媒体文件等资产保存在 Web 服务器的文件系统中,这里管理它们的存储位置。
-
图像样式: 可以创建不同的配置,当浏览器请求图像时,根据它们的使用上下文(例如,用于项目列表的裁剪缩略图或用于内容全页显示的全尺寸版本)应用这些配置。在第七章“喂养大众 - RSS”中,将展示图像样式的使用示例。
-
图像工具包:如果存在多个用于操作图像的系统库(通过图像样式),可以在此处选择使用哪个。
-
区域设置:用于更改在安装过程中选择或未更改的本地化和时区设置。
-
日期和时间格式:用于设置网站默认的日期和时间显示方式,例如星期一,2020 年 12 月 15 日或 Mon, 12/15/20。
-
随着模块的添加,本节中显示的配置页面列表可以增长:
-
人员是维护、创建或仅针对用户和角色的删除用户账户、用户角色和用户权限的地方。我们将在第三章“管理用户”中介绍这一点。
-
报告提供管理报告,例如网站状态报告,以及显示网站上使用的前十大搜索词的报告。附加模块可以添加更多报告,同样,视图也可以,我们将在第八章“欢迎回家!”中添加报告。
-
帮助提供入门提示,有关附加模块的帮助文本的附加信息,以及其他信息。
选项卡
选项卡是一种在页面上提供上下文信息的方式,而不是需要离开页面来更改上下文。例如,默认主页只有“主页”选项卡作为唯一上下文,但像用户页面这样的页面可能有一个包含用户设置(如用户名和密码)的用户选项卡,以及一个用于管理个人资料信息(如国家、性别和社交链接)的个人资料选项卡。
系统消息区域
系统消息区域是重要通知出现的地方。请记住,位置可能在另一个主题中不同,格式也可能不同。未更改的情况下,位置将在主页面内容上方,格式将是以下之一:
-
绿色:值得注意的一般信息
-
黄色:表示警告;值得注意但不是关键,通常意味着系统完成了它被请求执行的任务,但没有发生意外
-
粉色:需要采取行动或调查的错误,通常表示系统无法完成请求
这些状态也用于用户完成表单时,典型的展示如下:
-
绿色:表示表单已保存或提交的消息
-
黄色:邀请用户在内容中查看某物或确认其提交
-
粉色:表示必填字段没有值或值在上下文中不正确
搜索小部件
一个内容网站如果没有用户根据一个或多个特定的搜索词或短语搜索内容的能力,将几乎没有价值。因此,某种形式的搜索小部件很常见,其中包含一个输入术语的字段,以及一个用于启动搜索的链接或按钮。
用户菜单
可以有针对特定用户角色或特定用户的特定操作或目标,用户菜单是一个提供链接到这些操作的好地方。用户菜单并不总是存在,因为通常网站会将导航限制为编织到主题中的特定集合。
主导航
默认的主导航包括一个链接到用户的账户页面,有时用轮廓或用户图像表示,以及一个注销链接。定制还可以提供额外的选择。主导航可以更加突出,例如在电子商务网站上,操作对用户的重要性不亚于内容本身。
主要内容区域
CMS 网站的核心毕竟还是内容,大多数主页和内页都会有一个区域用于展示内容,无论是文本、视频还是其他形式的媒体。根据主题的不同,主内容区域上方和/或下方可能会有初始内容,主内容区域内可能有多个内容块,页面的其他部分,如前一个截图中的搜索和工具菜单,可能会有额外的内容区域、块。
摘要
在本章中,我们学习了如何运行 Drupal 安装脚本,该脚本创建了一个新的 Drupal 网站。我们还探讨了 Drupal 主页和行政导航的主要部分。
在下一章中,我们将探讨内容是如何存储的,以及您如何配置系统以存储对您和您的网站访客有意义的各种类型的内容。
第二章:结构化内容类型
在第一章“在 Drupal 中找到你的方向”,我们学习了 Drupal 是什么以及如何安装它。本章将探讨 Drupal 内容类型的基础,以及定义每块内容保存信息的格式。阅读本章后,你将了解内容类型和字段,创建内容类型,向内容类型添加字段,自定义用于输入内容的表单,以及自定义内容显示的方式。
内容是什么?
我们都知道内容是什么…… sorts of。这本书由内容组成。本章包含内容,本章内的这一节也是如此。更重要的问题是:在 Drupal 的上下文中它是什么?这个问题最好用主页作为例子来回答,因为当你看到它时,你就会知道!
以下截图显示了我在网站上添加的一块内容,它在主要内容区域,周围有一个粗矩形:
当在浏览器中渲染和显示时,它只是内容,但在此之前,它是某种类型的内容,即内容类型,在 Drupal 中也称为节点包。Drupal 是否只是将此内容视为:
第二章 - 理解内容类型
我们都知道内容是什么…… sorts of。这本书由内容组成。本章包含内容,本章内的这一节也是如此。更重要的问题是,在 Drupal 的上下文中它是什么?这个问题最好用主页作为例子来回答,因为当你看到它时,你就会知道。
不,内容在 Drupal 中以方便根据你几乎任何希望的标准选择它的方式存储。
让我们暂时看看数据库。这不是你需要学习的东西,但它对说明很有用。如果我们查看 Drupal 数据库中此块内容的主要识别信息,我们会看到这个:
+-----+------+---------+--------------------------------------+----------+
| nid | vid | type | uuid | langcode |
+-----+------+---------+--------------------------------------+----------+
| 1 | 3 | article | 6166dc8e-1c64-4897-807e-7c535934f616 | en |
+-----+------+---------+--------------------------------------+----------+
你可以在“类型”列中的“文章”值中看到这一点,它包含了这个表格中的内容类型。“文章”是我们内容的内容类型。让我们把数据库放在一边,以你将使用的方式查看我们的内容和其内容类型,即通过用户界面(UI)。
在 Drupal 文档中,你经常会看到以缩写方式指定的 URL,省略域名以避免混淆,因为大多数用户将使用不同的域名,所以你可能会看到/page1
而不是mysite.com/page1
。
内容编辑最常使用的页面之一是内容管理页面。我们将从点击管理菜单中的内容链接开始,这将带我们到admin/content
,如下面的截图所示:
如您在前面的屏幕截图中所见,我们的内容被列出,标题在左侧,给出的类型是文章。我们将在第四章“创建和编辑内容”中了解更多关于这个页面的使用,但现在我们想要用它来引导我们到可以编辑我们内容的页面。让我们点击内容标题另一端的编辑链接,这将显示一个内容编辑表单,如下面的屏幕截图所示:
内容作为字段
我们有时倾向于将内容视为一个大块的正文,但内容可以存储为独立的字段,以便重要元素可以轻松访问和正确格式化:
您可以在这个表单中看到与页面上相同的内容。然而,您在这里还可以看到包含该内容的字段。内容标题在一个标记为标题的字段中,主要文本在一个标记为正文的字段中。还有两个未使用此特定内容字段的额外字段:一个用于分类的字段,标记为标签,另一个用于将图片附加到内容上,标记为图片。
通过拥有标题字段和正文字段,用户和 Drupal 都理解每个字段中的信息是相互独立的。这并不意味着它们不能一起显示,但有许多原因我们可能想要能够区分它们。
例如,当此内容在主页上显示时,标题和正文文本的格式不同。另一个例子是,我们可能希望 Drupal 为我们提供一个内容标题列表。在这两个例子中,对于 Drupal 能够确定内容的哪个部分是标题来说,这非常重要。如果将内容中的所有内容都混合在一起,Drupal 将无法知道标题在哪里结束,正文文本从哪里开始。将它们放在单独的字段中消除了任何歧义。
因此,我们已经看到了当内容被分离成单独字段时的内容样子。但是,这些字段是从哪里来的?Drupal 是如何知道提供哪些字段来接收我们的输入的呢?让我们接下来看看这一点。
理解内容类型
内容类型本质上是一组字段,用于存储构成整个内容的各种项目。在我们所使用的内容的情况下,它是一个文章内容类型的例子,这是在您首次创建新的 Drupal 站点时存在的两种内容类型之一,另一种是页面内容类型。
如果你想到一家公司的职位申请,每个申请都包含相同的信息输入字段,尽管信息各不相同。在这个例子中,职位申请是一个内容类型。让我们从 Drupal 如何提供它来分析一下文章内容类型。
要通过管理菜单导航,请点击“结构”。然后,在下一页上,点击“内容类型”,这将带您到一个页面,您也可以通过浏览器在 /admin/structure/types
路径下访问,如下面的截图所示:
定义内容类型
现在,我们将查看内容类型定义。首先,而不是点击默认选择“管理字段”,请点击其旁边的箭头并选择“编辑”:
让我们简要看看前面表单中的设置:
-
名称:这是内容类型将被识别的普通语言名称。在这种情况下,这是“文章”。在可读名称的右侧是所谓的机器名称,这是内部名称。这是由 Drupal 自动生成的,通常是名称的小写版本,多个单词之间的空格被下划线替换。
-
描述:这是一个描述内容类型目的和(或许)其使用规则的地方。在此处输入的描述性文本将在创建内容时提供可用内容类型列表时与内容类型名称一起显示。
在这两个字段之后是一系列垂直标签页,提供了额外的配置项。
提交表单设置
提交表单是用于创建内容的表单:
-
标题字段标签:所有内容都有一个标识键,当内容显示时也充当标题。默认情况下,将此值称为“标题”,但在某些情况下,这可能不合适。例如,对于定义旅行目的地的内容类型,标题作为“目的地”或“位置”会比“标题”更合适。此字段是必需的。其值将在创建此类内容时作为输入屏幕上的提示使用。
-
提交前预览:在创建或编辑内容时,编辑器中查看的内容可能与网页上查看的内容不同。预览提供了后者的视图。这里的选项将决定是否提供预览,以及是否在提交前必须进行预览。
-
说明或提交指南:这是一个输入描述的地方,该描述将显示给创建或编辑内容的人。
发布选项
通常,内容是在表单中的富文本编辑器窗口中输入的。由于这个输入可能是该内容的第一个草稿,可能不希望立即发布。某些内容类型将是这种类型,这种情况更为常见,而其他类型,如仅包含标题和 URL 的类型,则不需要多个草稿。因此,提供了发布选项。在这里,在内容类型表单中,可以设置这些选项的默认选择:
-
已发布:如果选中,内容将在保存时立即发布
-
提升到首页:并非所有内容都一定是为了首页,具有此值或未设置的内容可以用来确定它是否应该出现在那里
在 Drupal 中,网站的首页有时被称为首页,就像报纸上的那样。
-
粘性在列表顶部:如果没有设置其他方案,首页将显示指定数量的文章摘要,随着更多内容的创建,较旧的内容“掉落”到页面。如果某块内容意在保持页面,而其他内容交替显示,例如欢迎信息,可以通过设置此值来实现。
-
创建新修订版:想象一下对内容进行更改,保存它们,然后意识到某些不应该更改的东西被更改了。你该怎么办?原始版本消失了!还是说没有?当创建新修订版时,它包含更改之前的内容。如果需要,当前版本可以回滚到修订版,提供完整的撤销。
显示设置
显示作者和日期信息:是否设置这取决于将要显示的内容类型以及网站希望的外观。
菜单设置
有时,将一块内容添加到菜单中是有益的,尤其是如果它在网站上相对静态的话。例如,条款和条件将是持久性的网站内容,而关于本周活动的通知则不是。前者可能属于特定内容类型,例如法律,你可能希望将此类内容的每一项都列在页脚菜单中。在这个例子中,页脚将在可用菜单列表中被选中,如果该菜单中已经有一个标题,例如“法律”,则可以将其选为默认父项。在这种情况下,默认情况下,该类型的所有内容都将作为子内容添加到页脚菜单中:
更多关于菜单的内容将在第八章中找到。
这就完成了内容类型的主体表单。我们将在本章的后面创建一个新的内容类型。现在,让我们继续管理内容类型字段。
管理内容类型字段
字段可以被视为一个容器,你可以在其中放置某些东西,在我们的上下文中,这些是内容。为什么内容类型有字段而不是一个可以放置内容的大的盒子,就像 MS Word 中的页面一样?让我们考虑一个例子。
假设我们的内容与预约相关。琼斯女士正在预约。一种可能性是将预约以文本形式输入,如下所示:
1 月 20 日下午 1:30,琼斯女士将与金先生会面讨论投资。
所需的所有信息都在那里。然而,当需要列出接下来两周的所有预约时,或者需要列出琼斯女士的所有预约时,或者当决定更改所有预约的日期格式时,如果信息在一个难以聚合、搜索或全局编辑的表单中,那就成问题了。
如果预约像电子表格一样存储会怎样?
日期/时间 | 客户 | 观察 | 原因 |
---|---|---|---|
2018 年 1 月 20 日 | 琼斯女士 | 金先生 | 投资讨论 |
将信息分割成有意义的片段后,查找所需内容并进行编辑要容易得多。这正是字段背后的理念。
我们一直在使用文章内容类型。让我们看看其字段是如何定义的。在当前页面的顶部,我们将点击“管理字段”标签页:
我们在内容类型表单上看到了标题字段。这个屏幕是用于可选字段的。内容类型可能根本不需要额外的字段,但既然所有内容类型都必须有一个标题字段,无论其标签如何,它都没有包含在这里。
当我们查看内容编辑表单时,我们看到了标题和正文字段。正文字段在这里列出。该字段是用于存放没有特定用途或格式的文本的类型。我们将在本章后面创建新内容类型时更详细地了解字段类型。
评论字段是用来存放关于内容的评论的。可能有多个此类字段,每个评论创建一个。实际上,评论是一个内容实体类型,因此尽管在查看文章内容时可以看到评论,但评论字段的实际内容只是评论的 ID。
图片字段用于显示与内容一起的图片,允许上传图片。图片字段是检索实际图片所需信息的引用,如果使用了图片,文章图片字段将包含该记录的地址。
最后一个字段是用于标签的。将标签视为可用于搜索内容的分类信息。这是使用另一种参考字段类型,如评论和图像,即分类法。我们将在第七章中更详细地探讨分类法。
分类法是内容结构,在 Drupal 中被称为实体。另一种实体类型是用户。文章是一个内容类型,也称为捆绑包,它是称为节点的实体类型的子类型。捆绑包可以包括文章、页面、博客文章和其他类型的内容,这些内容是为读者准备的。
我们可以查看页面顶部的其他两个标签页,即“管理表单显示”和“创建内容类型时管理显示”。事实上,我们现在就来做这件事!
设计内容类型
我们已经查看过 文章 内容类型。它包含一个标题和输入文本的地方,并允许添加图片和分类标签。所以,有了所有这些,为什么还要创建内容类型呢?嗯,因为原味是一个不错的口味,但不是唯一的口味!
我们需要一个预约列表。好吧,实际上不是,但我们确实需要一个与文章完全不同类型的内容示例,而预约就是一个很好的例子。
确定需要新的内容类型后,首先要做的是设计它。回顾一下 文章 内容类型,它有设置和字段。所以这个也会有。提前决定这些将有助于创建设计,让我们来做吧。我们将使用两个表单进行设计——没有什么花哨的,只是当输入内容类型表单中的信息时用来参考的列表。
内容类型设置
设置 | 值 |
---|---|
姓名 | 职位 |
描述 | 职位信息 |
标题字段标签 | 姓名 |
默认选项 | 发布 推广 置顶 修订 |
对于这个内容类型,我们将假装我们在一个为客户提供预约的办公室里。内容类型的 名称 和 描述 值是显而易见的。
标题字段 标签将是姓名,因为它将包含预约人的姓名。
选定的默认选项将是 发布 和 修订版。我们选择 发布 是因为我们希望预约一旦保存就立即生效并设置为活动状态。
推广 未设置,因为我们不希望预约像文章一样显示在首页上,也不希望最近输入的预约被显示。我们希望显示的是距离当前日期和时间最近的预约。
Sticky 未设置,因为我们没有让任何预约保持在首页上的需求。
最后,我们确实设置了 创建新修订版,这样每次预约更改时,Drupal 都会保存之前的版本而不是简单地覆盖它。
我们不会对其他选项卡上的默认设置进行任何更改,因为它们符合我们的需求,所以它们不会出现在列表中。我们的列表完成后,在管理菜单中,我们可以点击 结构,然后 内容类型,然后点击 +添加内容类型 按钮,这将带我们到 /admin/structure/types/add
页面。一旦到达那里,输入表单中的信息,并确保 默认选项 设置如以下表单所示,然后点击 保存并管理字段 按钮:
处理内容类型
到目前为止,我们已经创建了预约内容类型。在此阶段,它可以用于创建内容。然而,它尚未构建来完成其目的。它只有两个字段,一个是标题,名称,另一个是正文字段,其中此内容类型将没有正文。我们需要做一些工作来使此内容类型适用于我们的目的。
为了向内容类型添加必要的字段,了解选择项会有所帮助。
字段类型
Drupal 的新安装包含了一些现成的字段类型,以及一些需要首先启用才能使用的字段:
通用字段:
-
布尔值: 只有两个值,例如是/否、开/关,或者有一个值被理解,例如已完成。这通常用复选框表示
-
日期: 以配置的任何格式显示日期
-
电子邮件: 接受格式为有效电子邮件地址的文本
-
链接: 接受格式为有效 URL 的文本和将被点击的文本
-
时间戳: 一个存储日期、时间和时区的长数字值
数值字段:
-
数字(小数): 可以有小数点前后的数字
-
数字(整数): 不包含小数部分的值
-
数字(浮点数): 需要大量小数位数和极高精度的值
-
列表(浮点数): 必须与提供的值列表中的一个匹配的浮点数
-
列表(整数): 必须与提供的值列表中的一个匹配的整数值
引用字段(引用其他内容的字段):
-
内容: 指向另一篇内容,该内容是配置用于与字段一起使用的某个内容类型
-
评论: 用于接受关于内容的评论
-
文件: 指向上传到系统的文件,例如 PDF 文件
-
图像: 指向上传的图像,例如 JPG 或 PNG
-
分类术语: 在一个共同类别(分类)中,如标签、国家、月份等,与其他信息值或值组
-
用户: 指向用户账户
-
其他: 指向除之前提到的类型之外的实体自定义类型
文本字段:
-
列表(文本): 一个文本字段,其值必须是提供的列表中的一个
-
文本(格式化): 短文本,可以格式化,例如加粗、斜体等
-
文本(格式化,长文本,带摘要): 可以格式化、较长的文本,并且可以有一个单独的摘要用于作为简短的预告
-
文本(纯文本): 一段不会进行任何格式化的简短文本
-
文本(纯文本,长文本): 不会进行任何格式化且可以较长的文本
需要启用的字段:
-
地址: 一个可以根据地址适用的国家以及所需字段进行配置的地址字段
-
计算字段: 可以与编程相关联以确定特定值的字段
-
日期时间范围:存储开始和结束日期,格式根据需要而定
-
实体引用修订版:提供一个实体的引用,并在实体被修改时提供存储修订版的功能
-
简单谷歌地图:提供显示谷歌地图链接或一行地址作为谷歌地图的能力
-
电话:用于存储格式正确的电话号码
这些是从新的 Drupal 安装中可用的字段。随着添加额外的模块,此列表可以增长。
我们的内容类型字段
您可以从前面的列表中看到,大多数需要存储的各种类型的信息都有相应的字段。这不仅仅涉及数据的类型,如文本或数字,还经常涉及数据所代表的信息,例如电话号码或 URL,这是因为通常存在提供格式化或验证已输入内容的编程代码。例如,在电话号码字段中输入电子邮件地址将导致显示错误。
因此,让我们看看我们将要存储的预约信息列表,以及我们可以用于此的字段类型。我们还将为每个字段决定一个名称,该名称将用于输入表单上的标签,并带有描述性的帮助文本,以提醒我们或告知其他用户有关字段用途的信息:
需要的信息 | 字段类型 | 标签 | 帮助文本 |
---|---|---|---|
客户名称 | 文本(普通) | 名称¹ | |
客户电话号码 | 文本(普通)² | 电话 | ###-###-#### |
客户电子邮件地址 | 电子邮件 | 电子邮件 | 例如,bill@gmail.com |
预约日期和时间 | 日期 | 日期 | |
预约是与谁 | 列表(文本) | 与 | 选择一个名字 |
预约的目的 | 文本(普通,长) | 原因 | |
预约的状态 | 列表(文本) | 状态 | 选择状态 |
¹ 这是已重命名的标题字段
² 存储电话号码的字段类型是有的,但它尚未启用,因此我们将使用普通文本
我们的列表准备好了,现在是时候创建我们内容类型的字段了。
向内容类型添加字段
仍然在“管理字段”页面(/admin/structure/types/manage/appointment/fields
),让我们首先对现有的一个字段进行更改:正文。在这个内容类型中,我们不会有正文文本,所以:
-
点击编辑旁边的箭头
-
选择删除
-
确认删除
完成这些后,点击“+添加字段”按钮。
我们将按照前面的顺序添加显示的字段。现在我们看到的页面有两个下拉选择小部件:一个用于创建新字段,另一个用于重用此内容类型上已存在的字段。
考虑到名称字段已经存在于我们的内容类型中,它是所有内容类型都包含的已重命名的标题字段,我们将首先添加的是客户电话号码:
-
点击“添加新字段”下拉菜单
-
滚动并从列表中选择“文本(普通)”。
出现了一个新的字段,标签,并用红色星号标记,表示您必须在字段中输入一些内容:
- 标签,如我们前面的表格所示,将是电话
输入标签后,您会注意到在字段的右侧出现了一个机器名。机器名是 Drupal 用来识别字段的名称。一旦保存字段,标签可以随时更改,但字段名称不会更改,因为它已经在数据库中“确定”了。如果您希望有一个特定的机器名,现在就是更改它的时候,通过点击编辑链接。您将能够编辑名称,同时考虑到一些命名规则,例如需要使用下划线而不是连字符,以及field_前缀不能被移除。我们没有必要覆盖字段名称:
- 点击保存并继续
加载了一个新页面,用于定义字段存储。Drupal 中的字段有三个组成部分:定义,它描述了字段;存储,它定义了字段如何在数据库中存储;以及当创建特定内容时字段的实际内容。
第一字段是最大长度,是必填项。对于此字段类型,希望使用标准(而非长)文本字段。默认值为 255,表示该字段可以存储最多 255 个字符。当创建内容时,如果输入的字符少于 255 个,那是可以的。只有当内容需要特定长度且不超过该长度时,才需要更改此值。在电话字段的情况下,这取决于具体情况。如果所有客户联系都是本地的,或者至少是国内的话,那么限制长度以匹配您的电话号码结构是可以的。例如,在美国,电话号码是十位数字。但话虽如此,如果以(212) 555-1212 这样的格式输入,这样的电话号码长度可以超过十位数字。因此,在限制长度时要小心。我们将其保留为 255。
允许的值数量字段定义了内容(在这个例子中是预约)是否可以包含此字段的多个实例。我们有选择将其保留为限制为一个值,或将数字更改为另一个特定数量,或者点击下拉小部件并选择无限以表示可以创建任意数量的此字段实例。我们希望能够在需要联系客户且第一次尝试不成功的情况下,为该客户获取两个联系电话号码:
-
将 1 改为 2
-
点击保存字段设置
字段创建过程的第三页,也是最后一页,现在显示出来了。如果我们想更改我们刚刚保存的存储设置,我们可以点击字段设置选项卡并执行更改。
一旦创建了使用该字段的内容,就无法更改字段的存储设置,除非首先删除所有此类内容。在创建内容后尝试点击此选项卡将导致显示设置,并显示一条消息,指出由于存在内容,它们不能再更改。
表单中的第一个字段是标签。这是我们之前输入的值。如果我们已经决定了一个新名称,现在可以更改它。机器名不能再更改。
如果帮助文本字段中有内容,它将在你创建的字段下方的内容表单中显示。我们将使用表中的条目为内容创建者提供有关字段内容的提示,在我们的例子中是本地使用的电话号码格式:
- 在帮助文本字段中输入###-###-####
帮助文本字段可以包含 HTML,如其自身的帮助文本所示。例如,我们可以通过输入以下内容来详细说明我们的描述:
输入格式为###-###-####的电话号码
它将显示如下:
输入格式为###-###-####的电话号码
表单中的下一个字段是必填字段。如果勾选此框,该字段将出现在内容表单中,其标签包含站点主题中定义的必填字段的任何格式。默认情况下,这将是一个红色的星号,正如我们在当前表单中看到的那样,位于标签旁边。
如果字段是必填项,除非为该字段提供了值,否则无法保存内容。请注意,不要要求一个可以合法留空的字段。例如,可选地址的邮政编码或邮编,没有适用的选项列表,或者复选框,其中空白表示“无”。
在我们这个例子中,我们将把电话字段设置为非必填项。最后一个字段用于默认值。当然,考虑到我们不知道具体值是什么,电话号码字段不太可能有默认值。在某些情况下,默认值是有意义的。例如,如果我们有一组地址字段,其中之一是国家,并且大多数条目都来自英国,那么提供默认值而不是强迫用户滚动到国家列表中的“U”项是有意义的。
如果你提供了默认值,要准备好由于用户不小心未更改字段并使用默认值保存表单而导致的错误内容。
我们将保留没有默认值的表单:
- 点击保存设置
到目前为止,我们已经保存了第一个字段配置,电话。从技术上讲,直到使用此字段创建内容之前,该字段不存在,但它的定义和配置现在存在。你可以看到,我们的内容类型字段列表已经发生了变化,field_phone已被添加到其中。
我们将对表格中剩余的每个字段遵循相同的流程。对于每个字段,我会记录其存储和配置设置的考虑因素,如下所示:
日期:日期字段类型 – 应该勾选必需复选框。
使用:列表(文本)字段类型 – 在允许的值列表框中,按以下格式添加 2-3 个姓名,每人一行。例如,我已经添加了以下内容:
琼斯,珍妮特
史密斯,史蒂夫
状态:列表(文本)字段类型 – 在允许的值列表框中,添加以下内容:
已取消
活跃
已取消
完成
在默认值下拉菜单中,选择挂起。
在我们的表格中创建完所有字段后,管理字段页面应该如下所示:
摘要
在本章中,我们学习了以下内容:首先,内容类型是什么,然后我们为什么要创建一个。此外,我们研究了内容字段,了解了它们是什么,并查看可用的字段类型。然后,我们继续研究如何设计和创建内容类型,最后通过向我们的内容类型添加字段来完成。
-
内容类型是什么
-
我们为什么要创建内容类型
-
内容类型字段是什么
-
可用的字段类型有哪些
-
如何设计内容类型
-
如何创建内容类型
-
如何向内容类型添加字段
当我们学习如何为其创建内容、配置内容创建表单以及设计内容显示方式时,我们将在本书的后面部分回到我们的内容类型。
在本章中,我们向新的内容类型添加了字段。同样,使用相同的管理页面,也可以编辑现有内容类型,向它们添加新字段,更改现有字段,以及删除不再需要的字段。
在下一章,我们将学习如何管理用户、他们的角色以及分配给这些角色的权限。
第三章:管理用户
在第二章《结构化内容类型》中,我们学习了内容是如何以类型存储的,关于内容类型,构成它们的字段,以及如何创建自定义内容类型。
这章全部关于拥有 Drupal 网站,或者任何网站的原因:用户。
如果没有人访问网站的内容,那么拥有这个网站的理由就很少了,对吧?然而,并非所有的访问都是一样的。你将了解用户类型以及 Drupal 如何为你提供一种确保没有人拥有超过他们所需访问权限的方法。更具体地说,本章涵盖了以下主题:
-
用户类型
-
用户角色
-
用户权限
-
创建用户
用户类型
在内容管理系统(CMS)的背景下,用户仅仅是使用网站的人。如果这就是全部,如果每个人在 Drupal 的眼中都是一样的,我们就可以在这里停止了。所以,你读到所有用户并不一定相同,你不会感到惊讶。当然,当我写那句话时,我并不是指用户的个人方面;我的意思是,用户在访问网站的原因以及他们被赋予的能力方面并不一定相同。
如果我们将用户视为一个顶级分类,并考虑进一步对他们进行分类,那么这样做取决于一个选择:我们是按照现实世界的某种方式对他们进行分类,还是像 Drupal 那样?在下表中,我们可以看到它们的比较:
用户 |
---|
管理 |
专注于网站的配置和设置,而不是网站内容。 |
从现实世界的角度来看,我们倾向于根据用户与网站的功能关系来对用户进行分类。如果你从家庭的角度来考虑这些关系,有些人可能只是住在那里并消费食物(想想青少年),有些人会为家庭的外观和内容做出贡献,而其他人则负责维护它。是的,用户可以出现在多个类别中,如下表所示:
用户 |
---|
管理 |
认证并拥有执行高级活动权限。 |
从 Drupal 的角度来看,这基本上取决于你将在网站上允许做什么,以及你是否需要账户来做这些事情。例如,一些网站允许未知访客阅读内容并对其进行评论。其他网站只允许他们阅读内容而不允许评论,还有一些网站根本不允许匿名访问。回到家的类比,那些可以随意对其做任何事情的人拥有管理访问权限;那些被允许进入的人拥有经过验证的访问权限,尽管有不同的“角色”,比如朋友与居民;那些来到前门(如果没有守门人或门卫阻止)而身份不为人知的人是匿名的。
大多数情况下,消费者用户是匿名的,一些高级或安全内容要求他们必须是认证的。创意用户通常是认证的。管理员通常总是拥有管理权限。要点是:网站各不相同,因此用户类型的隔离(如果有的话)也各不相同。
用户角色
对于 Drupal 来说,角色的含义与 Drupal 之外的含义相同:用户的职能方面,有时被认为是一个角色扮演者。值得一提的是,Drupal 在角色和用户类型之间稍微模糊了界限,因为它预定义了三个角色,它们就是之前提到的用户类型。虽然管理员作为一个角色是有意义的,但认证和匿名并不是真正的角色,但它们出现在那里是为了简化事情,至少对于管理员来说是这样。
因此,在我们继续讨论为什么你需要额外的角色之前,让我们先看看 Drupal 中的默认用户角色。如果你在使用菜单,点击管理菜单中的人员(admin/people
),然后点击标签页上标有角色的选项,如下所示:
上述截图显示了 Drupal 中预定义的角色。我不同意对角色的给定描述,因为它不够明确。Drupal 的操作顺序是先给角色分配权限,然后给用户分配角色。我们将在添加用户和分配一些权限时,在本章的后面部分进一步讨论这个问题。
现在,让我们先关注默认的 Drupal 角色本身。正如我之前提到的,匿名和认证实际上是比角色更多的用户类型,但在 Drupal 中它们被称为角色。这三个角色单独就足够了吗?一个例子是,所有登录用户都可以创建内容,而没有登录的所有用户只能查看该内容。如果这些就是你的组织和网站复杂性的限制,那么如果你想的话,可以跳到关于用户创建的部分。
让我们考虑一下。匿名角色是独立的。为什么?因为它被定义为没有账户或登录的用户,也就是说,一个未识别的用户。我们不会将 匿名 角色分配给用户账户,因为如果有账户,使用该账户的用户就不再是匿名的。为匿名用户创建不同角色的做法是没有意义的,因为没有用户账户可以分配这些角色。因此,这就留下了其他两个角色,我们可以使用它们来推导示例。
在我们的网站上,我们将有四种非管理认证用户类型。第一种是一般认证用户。也就是说,具有此角色的用户将能够登录,并且除了能够看到匿名用户和所有用户都能看到的文章和页面网站内容之外,他们还能够看到我们定义的预约类型的内容。
这可能是我们使用认证角色的用途,因为所有登录的用户至少都将具备这些能力,但我们不会为此使用该角色。为什么?因为我们必须考虑到将来可能会有一些用户可以登录但不能访问预约数据的情况。一般来说,我更喜欢为了这个原因保持预定义的角色不变……用作模型,或者保持原样。因此,我们将新角色称为客户端。
在为登录用户创建新角色时需要记住的一件事是,由于用户已登录,因此也是一个认证用户,该用户将接收到分配给认证角色的所有权限。
在我们的网站上,将有三类认证用户角色:能够查看预约的客户端;能够创建和编辑预约的顾问;以及能够创建和编辑除预约之外内容的编辑。我们用户角色的完整列表及其用途如下表所示:
角色 | 用途 |
---|---|
匿名 | 未知用户。能够阅读 文章 和 页面 内容。 |
认证 | 有账户的用户。能够对 文章 内容进行评论。 |
客户端 | 认证 + 能够查看 预约 内容 |
顾问 | 认证 + 能够执行 预约 CRUD^* |
编辑 | 认证 + 能够执行 文章 和 页面 CRUD^* |
管理员 | 认证 + 能够访问 Drupal 管理功能和管理用户账户 |
- CRUD = 创建/读取/更新/删除
按照以下步骤添加客户端角色:
-
点击 + 添加角色 按钮,这将带您进入页面
admin/people/roles/add
-
输入 角色名称,
Client
-
点击 保存
注意,角色列表现在包括 Client。按照上述步骤为顾问和编辑角色也执行操作。角色列表现在应如图所示:
所有角色现在都可以使用。然而,它们的权限尚未定义。既然我们已经涵盖了有关创建角色的所有必要内容,让我们继续讨论权限的话题。
管理权限
用户可以查看、收听或以其他方式与之交互的任何页面元素,例如菜单链接,都可供使用,因为用户通过角色已被授予这样做权限。这是一个非常重要的概念,所以我会给出一个例子。您无疑在大多数网站上看到过“条款和条件”链接。
在 Drupal 网站上,如果您看到这样的链接,那是因为您的用户角色已被授予访问该内容(条款和条件页面)的权限。如果未为您的用户授予该权限,链接可能不会可见。如果它仍然可见,或者您在浏览器中输入该页面的 URL,您将收到一条消息,表明您未被授予访问该内容。
由于权限可以是细粒度和详细的,因此有很多权限,添加模块通常会向列表中添加更多。我们将关注其中的一小部分以保持简单。
提醒大家注意,点击页面顶部的“权限”标签页,这将带我们到admin/people/permissions
。
权限页面的结构是一个可滚动的表格,其中包含了所有提供的权限。表格顶部列出了网站上定义的角色。您会发现它们与之前列出的相同。表格最左侧列出了按字母顺序主题和/或定义它们的模块名称分类的权限列表。
管理方式相当简单。如果复选框被勾选,则该列的角色拥有列出的权限。例如,查看第一个权限,它与Block模块相关联,只有拥有管理员角色的用户被授予了管理块的能力。
为了避免为每个角色上下滚动,我们将通过权限来处理,这样我们只需滚动一次。在下面的表格中,我将提供需要我们注意的每个类别及其内的权限,以及您检查适当的复选框后,应该看起来像什么,以完成我们为角色定义的早期权限。
我们不会更改管理员列中的任何设置,但我包括它,以便每个角色的相对位置与您在屏幕上看到的一致。
我只为需要更改设置的权限提供行。例如,您会在“评论”类别下注意到,所有经过身份验证的用户类型都已经具有发布评论的能力,而匿名用户具有查看评论的能力,因此不需要更改,这就是为什么该行不会出现在这个表格中的原因:
类别/权限 | 匿名用户 | 认证用户 | 管理员 | 客户 | 顾问 | 编辑 |
---|---|---|---|---|---|---|
NODE | ||||||
预约: 创建新内容 | x | x | ||||
文章: 创建新内容 | x | x | ||||
* 预约*: 删除自己的内容 | x | x | ||||
* 文章*: 删除自己的内容 | x | x | ||||
* 文章*: 编辑任何内容 | x | x | ||||
* 预约*: 编辑自己的内容 | x | x | ||||
* 文章*: 编辑自己的内容 | x | x | ||||
访问内容概览页面 | x | x | x | |||
查看自己的未发布内容 | x | x | x |
前表中的大多数权限都与特定内容类型的 CRUD 操作相关。也就是说,能够创建(添加)、编辑(更新)和删除特定类型的内容,例如我们创建的预约类型。你可以看到,我们授予了顾问执行此类操作的权限,但没有授予编辑者权限,而我们对文章内容授予了执行相同操作的权限,但没有授予顾问权限。
访问权限、权限立即生效。也就是说,即使你有执行特定动作或访问特定类型内容的权限,如果从你的角色中移除该权限,你对该动作/内容的访问就会消失,除非和直到它被恢复。
你会注意到,一些权限描述看起来非常相似,例如:
-
预约:编辑自己的内容
-
预约:编辑任何内容
两者之间的区别在于,使用第二种权限时,用户可以编辑无论谁创建的预约内容,而使用第一种权限时,用户需要自己创建它。
最后一个权限,查看自己的未发布内容,也值得关注。除非授予此权限,否则如果新内容保存为未发布,其作者将无法访问它,只能访问标记为已发布的内容。拥有此权限的用户还可以访问自己的未发布内容,这对于处理草稿是必要的。
你可能还会注意到,没有特定内容类型的阅读/查看权限。这是因为,虽然存在查看已发布内容的权限,但这已经是查看内容权限的最细粒度;没有关于查看特定内容类型的权限。然而,有一个模块提供了这些权限,我们将在第五章,使 Drupal 更加有用中添加。一旦我们有这些可授予的权限,我们就可以确保只有我们选择的角色可以评论特定内容类型,因为如果你不能查看内容,你就不能评论它!
用户
我们已经为我们的网站创建了特定的角色,并为他们分配了授予他们所需访问权限的权限。我们现在唯一缺少的是...用户。每个用户都需要一个账户。他们从哪里来?
大多数用户获取 Drupal 账户的方式有三种:
-
具有创建用户账户权限的用户代表用户创建账户
-
用户注册账户
-
用户通过单点登录(SSO),例如通过 Facebook 账户获得账户
在这些方法中,后者超出了本书的范围,因为它是一个更深入的行政主题。让我们看看其他两种方法。
创建用户账户
我们将学习如何创建用户账户。一些网站选择允许用户创建一个立即激活的账户,无需审查,一些网站选择要求账户保持不活跃状态,直到管理员批准,这正是我们将在这里模拟的,还有一些网站创建所有用户账户都是行政性的,不允许用户注册。
让我们为编辑角色创建一个账户,这是我们创建的角色之一。如果你顶部还有带有列表、权限和角色标签页的页面,请点击列表。否则,你可以点击管理菜单中的“人员”,或者导航到admin/people
。以下是创建账户的方法:
-
点击“+添加用户”按钮,这将带您到添加用户页面,
admin/people/create
。 -
对于电子邮件地址,如果您有,可以输入真实的电子邮件地址,或者一个假的(
@example.com
是用于假电子邮件地址和 URL 的好域名)。 -
用户名可以是任何东西。我们的编辑将是埃迪编辑,所以我将她的用户名设置为
Edie
。 -
选择一个你记得的密码。用户登录后可以更改密码。要获得绿色条(强密码),尝试使用
Password123
。在确认密码字段中再次输入你的选择。 -
对于状态,保持设置为“活动”。如果您想提前创建用户账户但不想立即激活,请选择“阻止”。
-
在角色下,勾选“编辑”以赋予此用户该角色。
你会注意到“角色”已选择“认证”,并且不能取消选择。这是因为所有有账户的用户都是按定义认证的。
-
我们将不勾选“通知新账户用户”。通常情况下,你会勾选这个选项,以便向新用户发送电子邮件,但在此情况下我们不希望发送电子邮件。
-
当有类似博客文章的内容,作者附有照片时,这幅图片看起来很漂亮,但我们不会使用照片。
-
你的内容编辑员是否希望通过网站联系?如果是,请勾选下一个复选框以选择“个人联系表单”。
-
时区选择确保用户看到基于他们时区显示的时间,而不是位于网站服务器所在时区的时间。
在处理完所有字段后,点击创建新账户。您将停留在添加用户页面,顶部将显示类似于以下截图的消息:
当用户被允许通过注册请求账户时,通常有两种处理方式,这取决于您的网站配置:注册可以导致立即激活的账户,或者用户账户将被创建为已阻止到非活动状态,直到它被批准。
用户注册在配置 | 人员 | 账户设置(/admin/config/people/accounts
)中进行配置。了解更多信息请访问:www.drupal.org/docs/user_guide/en/config-user.html
。
要批准它,您需要从用户列表中编辑账户,将状态从已阻止更改为活动状态,并分配用户所需的任何角色。唯一将预先选择的角色是认证用户,就像我们创建用户时一样。
摘要
我们已经探讨了管理用户的主要方面,包括角色和权限。确保用户拥有适当的角色,并且这些角色只授予他们应有的功能访问权限,对于您的内容和网站的安全性至关重要。
现在我们已经拥有了一个网站,一些内容类型,以及具有适当权限处理内容的编辑器,是时候花些时间在内容管理系统最核心的主题上了:内容,这正是我们将在第四章,“创建和编辑内容”中要做的。
第四章:创建和编辑内容
在上一章中,我们学习了内容类型。我们还学习了针对特定需求设计新内容类型、如何创建它们以及如何向它们添加字段以存储数据并使其作为选择标准可用。现在我们已经讨论了内容的分类和存储,让我们转向内容本身。
Drupal 网站都是关于内容的。为了使网站能够向访客展示内容,它需要包含内容。内容是如何进入 Drupal 网站的?在本章中,您将学习如何与内容一起工作,创建和编辑它。在本章的整个过程中,您将创建内容(用于本书后面的使用),并将学习以下内容:
-
使用所见即所得编辑器
-
为其他角色配置编辑器
-
在内容创建表单上导航各种字段
-
预览内容
-
发布内容
-
为内容定义自定义 URL
-
添加附件和字段的多个实例
-
让内容固定在主页上
使用所见即所得编辑器
当您从手机发送短信时,您输入文字,从内容的外观来看,这基本上就是全部了。您只能选择是否想使用大写字母。如果您想对自己的消息有更多控制权,您可以切换到发送电子邮件消息,这可能使您能够选择粗体、斜体或下划线文字。
如果您想发送格式化程度高的内容,例如带有标题、字体更改、文字颜色、项目符号列表等,您可能需要使用文字处理软件,如 Word、Pages 或 LibreOffice。
这类软件创建的是所谓的富文本,即具有丰富样式的文本,而能够创建包含富文本文档的软件的通用术语是富文本编辑器。
Drupal 8 包括一个名为 CKEditor 的富文本编辑器。它是一个高度可配置的编辑器,具有一个类似于以下截图中的独立文字处理软件的格式按钮的编辑区域。这种类型的编辑器被称为所见即所得(WYSIWYG),发音为 wizzy-wig,代表所见即所得(What You See Is What You Get),意味着它显示的文本显示了所选的格式:
让我们创建一个内容片段并重现图像中的内容。在管理菜单中点击“内容”,然后点击“+添加内容”按钮。当您看到内容类型列表时,点击“文章”。
在页面标题旁边的“创建文章”旁边有一个星星 。如果您点击它,其轮廓将变为彩色,这表示当前页面已被保存为您的收藏之一。您可以通过在管理菜单中点击快捷键并选择页面标题来简单地导航到将来的同一页面。
该页面包含创建文章内容所需的所有字段和设置。那些需要输入的字段在其名称后面有一个星号,我们将在依次介绍每个字段时也包括一个星号。
标题*
标题是所有内容的必填字段,因为它用于将一篇内容与另一篇内容区分开来,尽管它不必是唯一的,所以多篇内容可以具有相同的标题,这很快就会变得令人困惑。该字段中的输入将出现在内容的摘要管理列表中。它还用作内容单独页面上的页面标题。因此,最好输入一个对您有意义且对网站访客有信息量的标题。现在输入一个。我的标题将是我的狗生活中的一个瞬间。
正文
您可能想知道为什么正文字段不是必需的,因为如果没有正文文本,文章将毫无用处。这是因为您可能想创建一个草稿文章,稍后再回来实际创建正文文本。这是不可能的,因为没有标题,就很难找到文章。
摘要字段
字段名旁边有一个链接,上面写着编辑摘要。在创建内容类型时,创建者决定正文文本字段是否应该容纳一个单独的摘要,如果是这样,那么就会显示该链接。摘要用于例如为网站访客提供内容列表的情况,其中提供了一个内容的简短描述——预告。
提供预告文本有两种方式:通过单独的摘要或通过裁剪,即从内容开头摘录文本。我更喜欢使用摘要,因为裁剪基于一个固定的字符数,对于所有相同类型的所有内容都是相同的,比如前 40 个字符,所以我无法控制摘录在哪里结束……也许它会在一个单词的中间结束。使用摘要,我可以精确控制将要显示的内容。即使它与我的正文文本开头相同,我也能确保它在一个合适的地方结束。
点击编辑摘要链接。摘要文本框将出现在正文上方。它包含一个链接,可以再次隐藏该字段。编辑摘要/隐藏摘要的切换操作允许您在需要使用它之前移除其干扰。您会注意到文本框的右下角有一个小部件,它的形状类似于页角,可以用鼠标抓住并拖动以放大或缩小文本框的大小。它下面还有一个注释,告诉您如果您没有在字段中输入摘要文本,Drupal 将使用正文文本的裁剪版本作为摘要。在字段中输入一些摘要文本。我的摘要将是:莎莎有一个令人兴奋的发现。
你会注意到在字段下方有一个设置为基本 HTML的选项框。默认情况下还有两个其他设置可用:受限和完整。并非所有用户角色都必然拥有所有设置。每个设置允许某些 HTML 标签,这相当于文本的某些格式化。有关更多信息,请点击关于文本格式链接。
正文文本
在正文字段中输入文章的全文。根据所选的文本格式,编辑器将提供各种按钮来格式化文本。我的文本看起来如下:
今天莎莎·加博发现了甜甜圈!这对狗来说并不完全是健康的饮食,但她似乎并不介意。
为你的文章输入一些文本,并使用B(粗体)或I(斜体)按钮格式化其中的一部分。输入完成后,点击源按钮查看实际的 HTML 标记看起来像什么。我的应该是这样的:
<p>Today Sasha Gabor discovered <strong>donuts</strong>! They're not <em>exactly</em> healthy diet fare for a dog, but she didn't seem to mind.</p>
如果你需要自定义正文文本的底层 HTML,这里就是你可以做到的地方。再次点击源按钮返回 WYSIWYG 模式。
文本格式
文本格式下拉菜单用于选择在输入文本时将使用的过滤器。在接受用户输入的网站上,安全性是一个持续关注的问题,因为一些不良行为者会尝试输入可能造成混乱的标记。允许哪种类型的标记有助于减轻潜在的问题。这些过滤器可以定义和配置,例如,配置将确定哪些 HTML 标签将被允许,哪些进程将被运行(如 HTML 校正)以及它们的顺序。过滤器分配给用户角色,并且一个用户角色可以访问多个过滤器。Drupal 附带并默认配置的过滤器如下:
-
纯文本:不接受任何 HTML 标签
-
受限 HTML:通常用于匿名用户(未登录用户)的最小 HTML 集,如斜体、粗体和标题
-
基本 HTML:类似于受限 HTML,但通常包括 WYSISYG 工具栏按钮的配置,因为过滤器通常用于认证(登录)用户,他们将能够访问编辑器
-
完整 HTML:允许任何有效的 HTML 标签,应谨慎分配
此过滤器将不会包含在下拉菜单中,因为它在没有任何其他过滤器可用时使用。
标签
标签字段用于包含与内容相关的术语。这些术语可以被用户用来搜索内容。多个术语应该用逗号分隔。该字段是一个自动完成字段,这意味着任何与输入字符匹配的现有术语都将被提供给你点击,而不是输入整个术语。我的标签将是Sasha和甜甜圈。
图片
图片字段允许从您使用的设备中选择文件并将其上传以存储并关联到内容。文件的最大大小在字段下方给出(通常是 2 MB),以及将被接受的文件类型。我将添加一张图片,并将莎莎和她的甜甜圈作为 alt 文本。Alt 文本用于向使用屏幕阅读器或其他形式的访问而不是查看图片的用户提供有关图片的信息。
内联图片与附件图片:
通过所见即所得编辑器插入到文本中的图片被视为文本的一部分,而通过图片上传对话框附加到内容中的图片被视为内容的一个独立部分,就像标题一样,并且可以根据各种上下文配置其可见性,例如预告片、RSS 源等。
发布内容
发布复选框将内容的状态设置为草稿(未选中)或发布(选中)。通常,只有编辑者、管理员和内容的作者在草稿状态下会被允许查看内容。内容不会出现在没有权限查看它的角色的菜单或列表中。让我们勾选复选框以发布我们的内容。
其他设置
这涵盖了创建文章内容所使用的的主要字段。还有其他配置选项可以通过垂直标签访问。让我们看看那些:
这些附加设置被称为元数据,它是用于描述内容的但不实际是内容的一部分的信息。
修订日志消息
如果您正在处理的内容类型设置为修订,您可以在该框中输入您对内容所做的更改的描述,该描述将被保存并在查看此内容的可用修订时列出。
菜单设置
如果您想为该内容创建一个菜单链接,勾选此框将打开一个对话框以提供以下设置:
-
菜单链接标题:作为链接显示的文本
-
描述:鼠标悬停时显示的文本
-
父项:此菜单链接下的缩进菜单链接
-
重量:一个值,用于确定此菜单项相对于同一父项的其他菜单项的位置(基于它们的重量)
评论设置
如果您的内容类型设置为允许评论,您可以设置此特定内容以接受评论(开启)或不再接受评论(关闭)。
URL 路径设置
当创建一个新的内容项时,它会被分配一个称为节点 ID 或 NID 的顺序数字 ID。默认情况下,当内容呈现时显示的 URL 类似于http://mysite.com/node/123
,其中 123 是 NID。如果您希望内容有一个比 node/123 更有意义的 URL,例如 sasha-discovers-donuts,那么可以在此处定义这个自定义 URL,称为别名。
当为内容定义别名时,原始 URL 仍然可用于使用。你可以使用任何形式的 URL 来访问此内容,例如 https://mysite.com/node/123 或 https://mysite.com/my-friendly-content-name。
作者信息
如果你代表其他用户创建内容,你可以在此选项卡的文本框中开始键入他们的用户名,并从提供的匹配项中选择该名称,以及指定应考虑的内容创建日期。
提升选项
内容可以被“提升”到更高的状态,以便将其包含在主页上,甚至突出显示它。
-
提升到首页:一些网站通过仅选择已提升的内容来确定首页上显示的内容。
-
列表顶部固定:如果内容是固定的,它将保持在主页上,而其他内容将被新内容替换。这是一种让欢迎信息保持不变同时循环其他内容的好方法。
完成流程
到目前为止,我们已经准备好通过点击保存按钮来保存我们的新内容。完成此操作后,内容将显示给你看。注意显示的 URL。在我的情况下,它是node/2。我更希望有一个对用户和良好的 SEO 更有意义的东西,所以我将点击编辑标签并导航到URL 路径设置的垂直标签。在那里,我将输入/sasha-discovers-donuts
(需要初始斜杠)并再次保存文章。现在,浏览器将显示我改进的 URL。我仍然可以使用 node/2 的原始 URL。它没有被删除。以相同的方式为你的内容创建一个更好的 URL。
你会注意到你文章上方的其中一个标签是修订版。点击它。因为文章内容类型被配置为在保存时创建修订版,我们没有通过取消选中创建新修订版复选框来覆盖它,所以我们所做的更改和保存的目的是为了改进我们的 URL,结果是将更改保存为新的版本,而不是简单地覆盖原始版本。以这种方式,我们可以每次编辑内容时创建一个新的修订版。从修订版页面,我们可以做以下操作:
-
查看先前版本的列表
-
查看先前版本
-
删除先前版本
-
回滚到(恢复)早期版本,放弃自那时起所做的更改
摘要
这就结束了本章的内容。在这里,我们学习了如何创建内容,使用所见即所得编辑器,配置内容的各种选项,发布它,使其固定,保存它,编辑它,更改其 URL,以及处理修订版。
在下一章中,我们将学习如何通过扩展附加模块使 Drupal 更加有用。
第五章:使 Drupal 更加有用
在上一章中,我们学习了如何创建内容,这是 Drupal 网站的主要组成部分。创建内容可以通过一个简单的内置过程来完成。Drupal 作为一个内容管理系统,无需任何定制即可完全使用。然而,你的网站或商业模式可能需要额外的功能。也许你想安排活动,或者接受支付,或者显示产品目录。因此,有大量的附加功能可供选择,这些功能可以极大地增加其效用和灵活性。
可能你已经通过浏览器插件为你的浏览器添加了功能,或者通过应用为你的智能手机添加了功能。在 Drupal 中,功能扩展也是通过一些附加代码片段来实现的,这些代码片段被称为模块。模块被安排在一个文件夹中,包含程序代码和其他文件,当它们被放置在 Drupal 文件夹的正确位置时,会提供超出 Drupal 本身所包含的功能或服务。与 Drupal 本身一样,模块是开源的,且免费,尽管有些模块的作用是将 Drupal 连接到付费的第三方服务。
模块来自以下三个来源之一:
-
核心: 随 Drupal 一起提供,有时使用是可选的
-
贡献: 不属于核心 Drupal 包的一部分,但通常可以从 Drupal 的模块库
drupal.org/project/project_module
获得 -
自定义: 通常专门为使用该模块的网站开发
模块涵盖了各种类别、功能和服务的宝库,从社交媒体集成到图像编辑和预约安排。本章探讨了几个更受欢迎的模块,这些模块扩展了 Drupal 对内容用户的实用性。本书的范围不包括自定义模块。本章我们将使用并查看的模块如下:
-
Pathauto(贡献,但包含在 Drupal 中): 根据你创建的规则自动生成内容的 URI/路径别名
-
段落(贡献): 提供了一种简单的方法,可以将预格式化的内容片段添加到你的更大型内容中
-
内容审核(核心): 促进在内容发布前进行审核的过程
Pathauto
安装模块有许多方法,所有这些都需要一些管理权限。贡献模块的安装超出了本书的范围。我们将从模块文件位于正确位置这一点开始。
因为 pathauto 模块包含在 Drupal 中,所以文件肯定存在。我们可以通过导航到管理菜单中的“扩展”或/admin/modules
来验证这一点。一旦到达那里,在页面顶部的过滤文本框中输入 pathauto。你应该会看到以下条目列在列表中:
让我们勾选它旁边的复选框并点击安装按钮。根据你网站上启用的其他模块,你可能会收到以下消息:
如果你确实收到了这条消息,或者安装模块时收到类似的警告,那是因为该模块依赖于其他模块,而其中一个或多个模块没有被启用。如果存在必要的模块,Drupal 将提供启用它们的选项。只需点击继续。在这种情况下,如果一切顺利,你将在重新加载页面的顶部收到一条状态消息,表明已启用三个模块:pathauto、Chaos tools 和 Token。
在这个阶段,我们可以配置 Pathauto。大多数模块都有一个配置页面,但并非所有模块都有。滚动到 Pathauto 条目,或者使用筛选文本框来查找它,然后点击模块描述左侧的箭头。一个手风琴控制将打开,并显示配置链接等。点击它,你将被重定向到 Pathauto 的配置页面,网址为/admin/config/search/path/patterns
。页面将很简洁,因为没有存在任何模式。让我们创建一个。
点击+添加 Pathauto 模式按钮。生成的页面,标题与刚刚点击的按钮相同,包含一个下拉选择,提供适合路径模式的多种实体类型。最初,选项是内容、分类法、术语和用户。对于任何这些,都可以指定路径模式以创建有意义的 URL。我们将为内容创建一个模式,并选择相同的。
我们的选择会导致页面略有变化,因为现在每个内容类型都被列出。你可以勾选文章的复选框,因为我们正在为它创建一个模式。
我们需要定义我们想要使用的模式。有许多可能性。我们将选择一个简单的模式。我们将有包含单词“content”和文章标题的 URL,形式为content/my-article-title
。我们如何让文章标题也被使用呢?点击浏览可用标记的链接。
标记是占位符,它们将在适当的时候提供特定类型的值。将弹出一个包含多个标记类别的窗口。我们感兴趣的是节点,所以点击它旁边的箭头。一个扩展的列表将出现,在其中你可以找到标题,指的是节点的标题,或者在这个案例中,文章的标题。在其右侧有一个包含节点标题标记的链接,[node:title]。在模式文本框内点击,然后点击标记链接。它将出现在文本框中。现在,将光标移到标记的左侧并输入content/
。
最后,在标签文本框中输入文章以标识此模式。表单应该看起来与以下截图相似,尽管你的内容类型列表可能不同:
点击“保存”以保存您的模式,您将被返回到模式列表,其中现在将有一个条目。让我们通过创建一篇文章来测试它。导航到 /node/add/article
。
添加您想要的任何标题和正文文本。我将我的文章命名为“我的新文章”。当您保存它时,魔法就会出现。当我这样做时,我的 URL 不是像*http://d8quickstart/node/5*
这样的,而是*http://d8quickstart/content/my-new-article*
。请注意,原始 URL 仍然存在并且仍然可以使用。/admin/config/search/path 上的 Pathauto 列表列出了基于模式的别名和每个节点的原始 URL。在我的情况下,我创建的节点有一个节点 ID 为 2,因此如果我想的话,我仍然可以输入http://d8quickstart/node/2
作为 URL。
注意,Pathauto 会自动将文章标题转换为 URL 友好的字符串,通过用连字符替换空格并将标题转换为小写。这些设置的控件可以在 Pathauto 配置页面的“设置”选项卡下找到。那里有一个非常重要的附加选项卡:批量生成。假设你在创建了一些节点之后创建了一个模式。你不必编辑每个节点并更改 URL 以匹配你的模式,你可以指示 Drupal 为每个现有文章生成一个模式化的 URL。
段落
段落是一个贡献模块,这意味着它是 Drupal 社区中某个人开发的,并贡献给了 Drupal.org。它提供了一种创建可以轻松重用的预格式化内容的方法。
一旦文件被存放到正确的文件夹中,通常在/modules/contrib
,我们将像 Pathauto 一样通过/admin/modules
上的扩展页面启用它。你可能会收到一条消息,表明必须启用Entry Reference Revisions模块。只需点击继续。
导航到结构(/admin/structure
),你将在列表底部看到一个新条目:段落类型。点击它,这将带您到/admin/structure/paragraphs_type
上的段落类型页面。你将看到一个消息,其中通常会有一个列表,表明还没有段落类型。所以,让我们创建一个。
点击“+添加段落类型”按钮。我们将为图像和文本创建一个段落类型,所以让我们在“标签”文本框中输入“图像和文本”,然后点击保存和管理字段。我们需要为我们的段落类型创建两个字段:一个用于包含图像,另一个用于文本。
点击“+添加字段”按钮。从选择列表中,选择图像。你可以将“图像”作为标签输入,或者输入你喜欢的任何值。点击保存并继续。保留页面上的设置,然后点击保存字段设置。在下一个设置页面上,也保留那些设置,然后点击保存设置按钮。
再次点击“+添加字段”按钮。从选择列表中选择文本(格式化,长),并输入标签的正文文本。点击“保存并继续”按钮,然后在下一页上,点击“保存字段设置”按钮。最后,点击“保存设置”按钮。我们现在已经定义了段落类型。
列表页面看起来会像以下截图所示:
到目前为止,我们已经定义了一个段落类型。现在,我们需要将其添加到内容类型中,以便创建该类型内容的用户可以使用该段落类型。让我们导航到“结构”|“内容类型”(/admin/structure/types
),并点击文章内容类型旁边的“管理字段”。
点击“+添加字段”,从“添加新字段”选择列表中选择列表,选择段落。对于标签,让我们输入段落类型
,然后点击“保存并继续”。在下一页上,保持设置不变,尽管要确保“要引用的项目类型”字段已选择段落。点击“保存字段设置”。
在下一页,段落类型设置,在“引用类型”部分,我们确定哪些段落类型应该作为选项提供给内容创建者。默认情况下,在类型子部分中勾选复选框将表示包含该类型。我们还有选项表明任何勾选的复选框都是一个我们想要排除从提供给用户的选项中的类型。我们将使用默认的包含方法,并勾选可用的一个复选框,因为我们只创建了一个段落类型,即图片和文本,如以下截图所示:
点击“保存设置”。现在,让我们在“内容”|“创建内容”|“文章”(/node/add/article
)处创建一篇文章。给文章起一个标题。向下滚动,你会看到已经添加了一个段落类型部分,其中包含我们创建的图片和文本段落类型。如果我们创建了额外的段落类型,并且标记为作为选项包含,它们也会出现。在这种情况下,如果我们决定在创建这篇文章时想要使用多个段落类型,可以使用类型名称左侧的句柄将类型拖动到内容中应该出现的顺序。
点击“选择文件”按钮选择图片,并浏览到要包含的图片。请记住为图片提供替代文本。然后,将随图片一起的文字输入到正文文本框中。请注意,此字段有一个可用的 WYSIWYG 编辑器用于格式化。
在我们输入的图片和文本下方有一个按钮,我们可以使用它来添加另一个段落。如果我们只想让用户在内容中添加一个段落类型的实例,我们可以在创建字段时将“无限”更改为 1 个实例在字段设置中。
点击保存按钮。当我们查看渲染的文章时,它并不完全符合我们创建段落类型时的想法。我的图片很大,而且两个字段都显示了它们的标题。让我们来解决这个问题。
导航到结构 | 段落类型(/admin/structure/paragraphs_type
),并从选择字段中选择管理显示。在图像行右侧点击设置齿轮。在标签选择字段中,选择隐藏,并从图像样式选择字段中选择中等(220x220)。
你可以在admin/config/media/image-styles
创建额外的图像样式。
点击更新按钮保存你的更改。然后,在正文文本行中,从标签选择字段中选择隐藏。点击保存按钮。
这解决了段落中字段的显示设置,但我们还想要更改段落字段本身的设置。它也显示了字段名称,这不是我们想要的行为。因此,导航到结构 | 内容类型(/admin/structure/types
),并从文章旁边的选择字段中选择管理显示。对于段落类型字段,将标签设置更改为隐藏,然后点击保存。
现在,当我们查看预览时,它正是我们预期的样子:左边是一张图片,右边是文字:
如果我们想要相反的方式,我们可以编辑段落类型并交换其中图片和文字字段的顺序。段落类型可以包含的字段数量几乎没有限制,可以创建的段落类型数量也是如此。
当你启用了段落模块时,它下面列出的另一个模块是段落库。启用该模块将允许你将创建的段落类型存储在类型库中,以便可以轻松选择并用于其他内容类型。
在成功创建、编辑和使用我们的段落类型之后,让我们继续本章的最后一个示例。
内容审核
通常,一个组织需要发布内容的路径是间接的。作者不能直接发布文章,它必须首先经过审核,无论是由主管、同行还是编辑进行。内容审核模块引入了将审核过程注入内容发布流程的能力。
内容审核是核心模块中的一个模块,这意味着它包含在定义 Drupal 的主编程代码中。返回到扩展页面(/admin/modules
)并启用内容审核。你将收到一条消息,指出为了这样做,工作流也必须启用。
让我们配置该模块。启用后,配置页面(/admin/config
)上现在有一个新的部分:工作流。点击它,或直接导航到/admin/config/workflow/workflows
。在这里,你会看到一个当你启用模块时创建的内容审核工作流:
点击“编辑”;在这里,我们将详细查看工作流程的各个部分。
状态
在这里,“状态”一词缺乏上下文,因此可能有些模糊。例如,如果我决定从我家步行去商店,那么存在三种状态:
-
在家
-
步行去商店
-
到达商店
然而,在流程的上下文中,状态不一定相同。默认情况下,状态与静态状态同义。让我们再次看看我的例子,这次用更精确的描述来描述状态:
-
在家 - 静态
-
步行去商店 - 过渡性
-
到达商店 - 静态
状态 1 和 3 代表静态状态——里程碑和平台——已经实现并且可以保持这种状态。状态 2 是过渡性的,因为它描述了导致从一个静态状态过渡到下一个状态的活动。
在查看状态时,如以下截图所示,所有三个都是静态状态:
-
草稿:内容已被创建,或正在创建过程中。
-
已发布:内容被标记为已发布,并且可供具有查看此类已发布内容权限的用户角色访问。
-
存档:内容已被发布,但现在已从被认为是当前材料的内容中移除,可能仍然可供查看:
注意,存档状态有一个下拉选择框,而草稿和发布则没有。这是因为前者是一个可选状态,可以使用下拉菜单进行删除,但草稿和发布不是可选的。
如你所见,三种状态都是静态的。尽管如此,在流程的上下文中,状态不一定相同。默认情况下,状态与静态状态同义。让我们再次看看我的例子,这次用更精确的描述来描述状态:
点击“编辑”链接查看“已发布”。名称“已发布”可以根据你的实现更改,如果有一个更合适的术语。接下来的两个复选框很重要:
-
已发布:无论此术语用于状态,还是如果你更改了状态标签,勾选此框表示当达到此状态时,内容被视为已发布,并且针对每个用户角色授予的关于已发布内容的权限适用,通常尤其是内容将可供查看。
-
默认修订版:在 Drupal 中,如果正在使用的内容类型已被配置为允许修订,每次内容(重新)保存时,都会创建一个新的修订版,并且任何具有适当权限的人都可以将内容恢复到早期版本。如果勾选此框,当内容的状态达到发布时,当前版本将被视为活动版本。
接下来是过渡。让我们看看“创建新草稿”,因为它的包含在这里可能不太直观。点击它的“编辑”链接。再次,如果你有一个更适合你流程的标签,标签是可编辑的。
在标签下方,你可以看到“从”来源,“状态”和“到”目标,“状态”的选择。这个转换的目标状态是草稿,并且不可更改,尽管如果你创建自己的转换,它将是可更改的。在任何情况下,只能定义一个目标状态,因为“内容在任何时候只能处于一个状态”。
可以选择多个源状态。选定的两个源状态可能看起来与目标状态草稿不符。然而,这些选择所涵盖的事件如下:
-
修改草稿并保存,它仍然是一个草稿,所以草稿⇒草稿
-
修改已发布的内容并保存它,但现在作为需要再次审核的未发布内容,所以已发布⇒草稿
对于发布转换的过渡,也有类似的特殊性,因为你可能正在(重新)发布已经发布的内容,或者发布草稿内容。
这种架构的好处是,当一篇文章发布时,可以创建一个新的草稿版本,并通过审核状态,直到它被发布,成为新的默认版本和可查看版本。
转换
我们已经看到了转换的编辑页面,但这个部分仍然值得一看。你会注意到,有多个转换被定义,源状态为已发布,以及源状态为存档。如果你添加一些状态,并且如果每个状态都可以与多个其他状态交互,这个排列列表可能会变得很长。这并不是说不应该定义额外的状态,只是简单地说,可能需要比你想象的更多计划。
工作流程应用
这种类型的工作流程需要有一个可以执行的动作。目前,这并不适用于任何可审核的内容结构:
对于我们的目的,这个工作流程应该适用于所有文章,所以让我们点击内容类型的选择按钮。在弹出的窗口中,勾选文章旁边的框并点击保存。然后,点击保存此工作流程。
如果你现在创建一篇文章,你可能可以选择将其保存为草稿或已发布,这是因为在页面底部有选择选项。如果是这样,这是因为你是管理员或已被赋予这种权限。否则,你只能将内容保存为草稿。那些被赋予审核此内容或查看其未发布版本权限的人,在查看时将看到以下截图:
此表单允许审核员更改内容的状态,并添加关于转换的日志评论。
摘要
在本章中,我们学习了模块是什么以及它们的用途,它们的来源,以及如何启用它们。我们查看了一个使用三个流行模块的示例,以提供其他情况下不存在的能力。
在下一章中,我们将探讨通过使我们的内容和网站的用户界面支持更多语言,利用 Drupal 的一些国际化特性来扩大我们内容的受众范围。
¡Hasta la vista!
第六章:拓展全球读者群
在上一章中,我们学习了如何扩展 Drupal 的功能和特性。在本章中,我们将探讨如何扩大我们的读者群。
互联网让世界变得更小。你可能会假设你的用户都是国内的,然后惊讶地发现他们中的一些人远在半个世界之外。然后,经过考虑,你可能会意识到,由于世界上大多数人都居住在你自己的国家之外,全球读者群可以让你的内容接触到更多的人。
然而,有一个复杂因素。许多这些用户——也许大多数——并不说同一种语言。你可以让读者的浏览器来翻译内容,但让我们说实话,像谷歌提供的即时翻译至少在直接、明确、字典认可的源文本方面是有问题的,但在口语和习语用法上更是如此。
我经常讲述一个前客户的经历,他希望他的英文网站的用户界面也能提供日语版本。该网站销售汽车零部件。网站所有者选择了低成本翻译,这很可能是使用了在线 AI 翻译。结果,销售额远低于预期。为什么?虽然翻译对菜单项如化油器和座椅来说很合适,但用于“车身”的术语实际上意味着“尸体”。哎呀!
如果全球市场对你的网站使用和成功的增加很重要,那么让那些精通两种语言以及类似风格的翻译人员来完成翻译是值得的。换句话说,使用英式英语来编写内容,而使用西班牙街头俚语,可能并不是你的意图。同样,以西班牙语为例,如果你的读者主要是拉丁美洲人,而翻译却是恰当的马德里西班牙语,这也不是你的意图。
因此,你决定让你的内容和 UI 由专业人士翻译。然后呢?你难道必须拥有两个网站来支持两种语言吗?
即为每个语言创建独立的菜单和内容?不。Drupal 已经为你解决了这个问题,我们将在本章中详细介绍它是如何做到这一点的:
-
如何声明额外的语言
-
如何执行 UI 翻译
-
输入内容翻译
-
允许用户选择首选语言
当 Drupal 安装时,安装程序会为网站选择一个默认语言。在大多数情况下,这种语言是英语。如果我们的目标市场中有其他语言被使用呢?如果我们的国家有不止一种官方语言,或者有非官方语言,或者英语不是其中之一怎么办?网站可以被配置为支持额外的语言,这就是我们必须做的,以便能够利用国际化。要开始,请导航到“扩展”页面(/admin/modules
)。
滚动到页面底部,你会找到多语言部分:
这些模块都是 Drupal 核心的一部分,在核心中,并且具有与国际化相关的不同目的:
-
配置 翻译**:用于翻译配置设置,如视图、站点名称、菜单和块
-
内容翻译:用于翻译内容,如节点、分类术语和自定义块
-
界面翻译:用于翻译注册表单、内容提交表单和管理界面
-
语言:用于声明可用于翻译的额外语言
-
语言图标:用于在切换语言时提供代表语言的旗帜
声明额外语言
首先,我们需要启用语言模块。勾选其复选框并点击页面底部的“安装”按钮。
为了声明额外的语言,我们需要执行以下操作:
-
通过勾选复选框并点击页面底部的“安装”按钮来启用语言模块。
-
现在,当你访问配置页面(
/admin/config
)时,你将找到一个区域和语言部分。要开始配置,请点击“内容语言”。 -
检查内容,你会注意到将出现一个配置表单,列出每种内容类型。由于我们只对文章感兴趣,使用相同的默认语言就足够了。
-
打勾以将内容类型标记为可翻译。
-
将出现一个字段列表,这些字段将属于文章。选择所有可用的字段。
-
之后,勾选复选框以允许在创建和点击“保存配置”时选择该语言。
在撰写本书时的 Drupal 当前版本中,元字段也应选择为可翻译。原因是如果未选择,在尝试保存时可能会出现错误,指出“不可翻译的字段只能在更新原始语言时更改。这似乎是一个错误,因为会更改的字段,如创建或更新时间戳,是不可翻译的。这意味着就翻译系统而言,它们不应有新值。
-
返回到“配置”页面,这次我们将选择“语言”。请注意,英语已被配置为默认站点语言。
-
点击“+添加语言”。将出现一个包含大量语言列表的选项框。对于我的网站,其中一种语言将是西班牙语,因此我将选择它并点击添加。现在已添加西班牙语,尽管英语仍然是默认语言。
-
点击“编辑”链接,将西班牙语的名称更改为“Español”。对我来说,对于将要使用该语言的人来说,用其自身语言显示语言名称更有意义。他们甚至可能不知道我们用英语如何称呼他们的语言。
让我们再添加一个。这次,我将选择希伯来语。一旦添加,点击编辑链接。您将在语言定义中看到从右到左被选中,因为希伯来语是按照这个方向书写的。我将编辑它并翻译其名称,输入“עברית”。
声明语言的使用就这么多。现在,让我们使用它们并创建一些多语言内容。
翻译内容
在本节中,我们将创建一篇简短的新文章作为示例。导航到/node/create/article
。对于我的标题,我将输入我最喜欢的时刻。对于正文,我输入了黎明是我一天中最喜欢的时刻。请注意,在正文文本字段下方有一个语言选择器。由于它默认为英语,我将保持不变并保存我的文章。如果您仍然启用了内容审核,别忘了将您的文章保存为已发布而不是草稿。
为了提供内容翻译,我们需要启用内容翻译。让我们导航到扩展(/admin/modules
)并执行此操作。
启用内容翻译后,我们有两种开始翻译的方式:在查看内容时,现在将出现在查看、编辑和删除标签旁边的翻译标签,或者,通过管理员内容页面,在每次操作选择中,选择翻译选项,即/admin/content
。使用任一方式进入您文章的翻译列表。
我的翻译列表看起来是这样的:
每个内容项都将对应每个配置的语言的行。状态列标识内容是否已翻译成该语言。如果是,将有一个编辑按钮。如果不是,将有一个添加按钮。我将在西班牙语翻译的行中点击添加。
点击后,将出现熟悉的编辑节点表单。实际上,它将每个字段的内容预先填写。您可能会认为有什么不对劲,因为不应该有这个语言的翻译,但这里却是内容而不是空字段,而且不是正确的语言。不要慌张!内容应该存在,以便您可以看到实际需要翻译的内容,而不是试图记住。它将以默认语言显示。我将翻译标题和正文文本。我的表单现在将看起来如下面的截图所示。一旦您的翻译内容看起来准备好了,请点击保存(所有翻译)按钮:
保存了这个翻译后,我的内容翻译列表现在显示西班牙语,其翻译标题已发布。接下来,我将创建一个希伯来语翻译并保存它。内容编辑表单看起来不同,因为对于从右到左的语言,文本字段出现在右侧,而元数据字段出现在左侧:
就这样!内容现在可用三种语言(在下一节中,我们将讨论用户如何访问它们)。
这在幕后是如何工作的?当 Drupal 在数据库中存储字段信息时,用于查找该信息的索引的一部分是引用语言的代码。当你创建内容时,最初,会分配一个节点 ID——一个整数值。无论你创建多少语言翻译,节点 ID 都保持不变。因此,英文版本的索引可能包括代表英语的代码en
,代表西班牙语的es
,以及代表希伯来语的he
。
您可能会想知道,用户如何选择所需的语言?这正是我们将要讨论的下一个问题!
用户语言选择
能够提供多种语言的内容是很好的,但前提是网站访客能够利用它。Drupal 通过语言切换器使这变得简单。
我们需要启用另一个模块。导航到“扩展”(/admin/modules
)并启用“语言图标”模块。Drupal 会通知您此模块依赖于“界面翻译”模块,并询问您是否希望同时启用这两个模块。继续操作。
“语言图标”模块为每种语言提供旗帜图标。它是通过一个需要在页面上某处放置的块来实现的。让我们这么做。
-
导航到“结构”|“块布局”(
/admin/structure/block
)。您需要选择屏幕上的一个区域,以便语言切换器块出现,例如“页眉”或“侧边栏第一”。我选择了后者。 -
点击您选择的区域旁边的“放置块”按钮。滚动到“语言切换器”,并点击其行中的“放置块”按钮。将出现一个配置屏幕。
-
您可以将“标题”保留为语言切换器。
-
取消选中下面的“显示标题”框;图标将无需显示块标题就能自行说明。
-
垂直选项卡允许对这一块进行限制。可以使用“语言”选项卡仅提供配置语言的一部分。
-
在“内容类型”选项卡中,可以限制翻译将选择的内容类型。我们不需要设置任何限制。
-
如果我们只想将“语言切换器”限制在主页上,在“页面”选项卡上,我们可以在“页面”文本框中输入
<front>
。 -
点击“保存块”按钮并导航到主页。
在我的网站上,我现在有一个看起来如下截图所示的块。您的将根据您选择的语言(们)而有所不同:
通过点击其中一个链接,网站访客可以选择接收该语言的翻译内容。所选语言不可用的内容将不会显示。
翻译用户界面
现在,我们已经知道如何提供翻译内容,但关于页面的其他部分,比如菜单呢?像“联系”这样的链接对不说法语的人来说意义不大。幸运的是,Drupal 为我们提供了翻译 UI 的手段。
我们已经启用了界面翻译模块。我们只需要配置它。导航到配置(/admin/config
),然后在区域和语言部分点击用户界面翻译链接。
到目前为止,提供翻译内容所需的操作相当简单。所以,你可能期待有一个按钮可以点击,将 UI 中的所有提示和菜单都翻译成中文。抱歉...这不可能发生。
配置界面允许你为 Drupal 在核心和模块界面中找到的每个字符串输入一个翻译字符串。你可以使用这个页面,以及许多、许多、许多其他页面来翻译每个字符串,或者你可以导出字符串列表,将所有翻译都输入到一个文件中,然后导入它。
这听起来像是一项繁重的工作,确实如此。所以,让我们看看如何轻松完成这项工作。什么?你以为我会说...不,我说的是没有按钮可以翻译界面,但有许多语言的现有翻译文件可供你下载并导入。
-
导航到
localize.drupal.org/download
。在这里,你可以找到可用的 UI 翻译文件列表。在我的情况下,我将下载西班牙语和希伯来语的 Drupal 8 版本文件。为所选语言做同样的事情。这些文件的好处是它们是可编辑的,所以当你需要新的字符串时,比如当你创建自定义菜单链接时,你可以修改字符串或添加自己的字符串。 -
接下来,在用户界面翻译页面,点击页面顶部的导入标签页。
-
浏览并选择你下载的翻译文件
-
从语言下拉菜单中选择适用的语言
-
点击导入。
我已经为这两种语言都做了这件事,结果可以在下面的屏幕截图里看到,它展示了使用语言切换器块时主页的每个版本。
以下截图是西班牙语的:
以下截图版本是希伯来语,这是一个从右到左(RTL)语言的示例:
这肯定比手动翻译每个字符串要容易得多!
摘要
在本章中,我们学习了如何使用 Drupal 的翻译功能:配置附加语言、提供内容翻译、添加供网站访客切换语言的图标,以及导入用户界面翻译。
在下一章中,你将学习如何使用订阅源导入内容,并将你的内容提供给其他网站。
第七章:满足大众需求 – RSS
在本章中,我们将探讨什么是频道以及如何创建一个。实际上,我们将创建两个!以下是我们将涵盖的主题:
-
为什么您想提供频道?
-
决定要包含在频道中的内容
-
修改内容以启用频道选择
-
视图模块的简要概述
-
使用视图模块创建频道
-
创建一组频道链接
为什么需要频道?
什么是频道?RSS代表丰富网站摘要。单词“频道”有许多含义。在我们的上下文中,要考虑的含义是您可能已经在关于广播电视中听到的那个。例如,可能有一个事件正在伦敦外发生,并被当地网络报道。然后,该网络允许其他网络和电台在需要时接入他们的连续广播。这种连续广播被称为频道,因为它是对另一个消费的“食物”。在互联网上,频道与这非常相似。一个网站提供其内容流,该流被(请求)由想要使用该内容的网站拉取。这个流就是频道。
一些频道提供新闻内容。一些是电子商务频道,提供任何注册电子商务网站都可以销售并获得佣金的商品。一些只是提供对订阅频道读者感兴趣的主题的文章。
那么,为什么您想为您的网站提供频道呢?
曝光。提供频道使得其他网站能够消费它,并将您网站的内容展示给那些可能永远不会看到它的人。
选择用于频道的文章
如果您的一些网站内容是安全的,或者仅对高级订阅者可用怎么办?没问题!我们将探讨一种过滤为频道选择的内容的方法,或者相反,过滤掉您不希望被选择的内容。
我们将创建三个频道。首先,我们需要决定频道将包含什么内容……这意味着确定选择标准。
我们的一个频道是为宠物爱好者社区准备的。它将包含我们与宠物相关的任何文章。
我们的第二个频道是为旅行者准备的。它将包含我们与旅行相关的任何文章。
最后,我们的第三个频道将包含前两个频道未包含的任何文章。
修改内容以进行频道选择
因此,我们知道我们的频道有哪些标准,但 Drupal 将如何知道哪些内容符合这些标准呢?让我们讨论两种可能的方法。
吸引注意的标志
吸引注意标志是一个内容字段,其目的是突出内容适用于特定事物的事实,因此选择该标志的标志也是如此。它由一个布尔字段表示,包含True (-1)
或False (0)
,因此您可以将其视为开启或关闭。它通常由复选框表示。
因此,为了我们的用途,我们可以在文章内容类型中添加一个名为宠物的字段,并在创建文章时如果文章涉及宠物,就勾选该框,同样对于旅行内容有一个旅行复选框。
这是有意义的,并且是确定要选择的内容的简单方法,但这个计划中有一个小问题。每次出现新的标准时,就意味着需要在内容类型中添加另一个字段。事情可能会很快变得混乱。
一个“让我来”标志最适合独立的需求,例如当一篇文章被标记为已发布时。幸运的是,我们还有另一种方法可用。
标签
正如内容被保存在一个称为 节点 的实体中一样,Drupal 也有一个称为 分类 的实体类型,这是一个用于分类的科学术语。正如节点由内容表示一样,分类由包含术语的词汇表表示。
Drupal 内置了一个分类词汇表,称为标签。标签的预期用途是对内容进行分类。也可以创建额外的词汇表来存储特定用途的标签,例如与旅行相关的术语或西班牙语术语的词汇表,但为了分配适用于内容的类别,这是标签词汇表被设计的目的,并且它将适用于我们。
我将返回并编辑文章 我的狗生活中的一个瞬间,在当前包含 Sasha
和 甜甜圈
的 标签 字段中,我将添加一个额外的标签,pets
,然后再次保存。
然后,我将添加两个额外的与旅行相关的内容,并将它们标记为旅行,以及特定于旅行类型和目的地的标签,如下面的截图所示。以下截图与冰岛相关:
另一个与加勒比海相关:
现在,我们需要为我们的第三个内容源添加最后一块内容。这个内容的标签将是 剩菜,因为这个源是为任何未标记为宠物或旅行的内容。
在为测试我们的源创建了一些内容之后,让我们看看我们将如何进行。
视图
Views 是一个非常受欢迎的 Drupal 模块。它曾经是一个贡献模块,但现在它是 Drupal 核心代码的一部分。
Views 提供了许多功能,因此难以用一句话来描述。与其试图描述它是做什么的,不如让我给你一个简单的工作原理描述,从中你可以推断出许多潜在用途。
Views 根据选择标准和数据关系从 Drupal 获取数据,对其进行排列,并以任何数量的方式输出,无论是作为 Drupal 页面的组件、外部文件还是作为源 - 这对我们来说是有意义的。
要开始,导航到扩展(/admin/modules
)并启用 Views 和 Views UI。前者是提供每个视图运行服务的模块,而后者提供了一个用于创建视图的视觉工具。
创建容器视图
在这里,我们将创建三个信息源。视图模块的输出选项和显示包括信息源和块,一个视图可以作为多个显示的容器。尽管我们将创建三个视图显示,但它们都将包含在一个视图中。让我们按照以下步骤创建它:
-
导航到结构 | 视图 (
/admin/structure/views
) 并点击 + 添加视图按钮。 -
在视图名称文本框中,我们将输入 自定义 RSS 信息源。我这样命名是为了区分模块中包含的预定义 RSS 视图。
-
在名称下方有一个描述复选框。让我们勾选它,并在出现的文本框中输入
教程示例
。这个描述将出现在 /admin/structure/views 的视图列表中。 -
页面的其余部分允许我们以易于理解的方式提供信息,这些信息将被传递到视图 UI,在那里我们仍然可以输入,但需要更多的努力。然而,我们专注于创建信息源,而信息源显示类型在这里没有提供。
-
点击保存并编辑按钮以保存您的更改。
创建宠物信息源
我们现在处于我们视图的视图 UI 表单。以下屏幕将看起来与您看到的不同,因为我已经打开了右侧的“高级”列,以便您可以看到整个表单:
到目前为止,我们视图中的唯一显示是主显示,它就像一个模板。在其中所做的设置会应用到视图添加的任何显示上。由于我们将创建多种类型的显示、信息源和块,我们不会进入主显示的设置。
我们需要做的第一件事是选择我们想要的显示类型。通常情况下,这将是一个页面或一个块,但我们要创建一个信息源。点击顶部的 + 添加按钮,从列表中选择信息源。现在,已经添加了一个显示,主显示将被隐藏并替换为信息源。星号存在是因为显示已被修改但尚未保存。
让我们逐个面板地处理设置。
显示名称
当前显示名称是“信息源”,如果我们只在一个视图中有一个,那将是完全可以的。由于我们将有三个,我们将使名称更加具体。点击“信息源”这个词,在弹出的窗口中输入“宠物信息源”,然后点击应用.
标题
我们想添加一个标题,所以点击无,在弹出的窗口中输入 D8QuickStart 宠物信息源
,然后点击应用.
格式
我们希望格式是一个 RSS 信息源,所以可以保持不变。点击设置链接,并输入我们用于信息源标题的相同字符串,即 D8QuickStart 宠物信息源。我们不必使用相同的名称,但它提供了一个描述性的标题,同时也适用于描述 RSS 内容。点击应用按钮。
信息源设置
我暂时跳过顺序。这样做的原因是视图提供了实时预览区域,它显示了基于已输入的设置视图输出将是什么。这个预览在页面底部,但如果你向下滚动,你只会看到一个错误告诉你推送应该有一个路径,但没有提供。只要存在错误,就不会生成预览,所以让我们消除这个错误。
我们将路径设置为 /pets/feed
。点击路径,在弹出窗口中的文本框中输入该路径,点击应用,然后在页面底部点击保存。
向下滚动到预览区域,你现在将看到推送的预览。它可能看起来有点奇怪,但 RSS 阅读器将知道如何处理它。但所有我们的内容都在那里...不仅仅是关于宠物的文章。让我们接下来解决这个问题。
筛选标准
我们跳过了字段面板,因为我们不会指定特定的字段。我们将让视图本身解析我们的文章内容。
关于内容发布,可能存在某些情况下应该将未发布的内容包含在推送中,但这不是其中之一。视图已将其设置为 是 以显示仅发布的内容。
我们想要实施的下一个筛选标准是将选择限制为文章。点击添加按钮,在搜索文本框中输入 内容类型。筛选标准列表将仅过滤到那个,然后我们将在旁边勾选复选框。
在此期间,我们还可以输入允许我们仅选择关于宠物的标准的条件。清除搜索文本框,并输入 Tax
。从结果列表中,勾选包含分类术语的复选框,然后点击添加和配置筛选条件按钮。
第一个弹出窗口用于指定我们希望在推送中包含的内容类型。由于我们只想包含文章,我们将勾选该复选框,然后点击应用并继续。
下一个弹出窗口用于选择将包含我们想要限制的内容的术语的分类词汇表。由于标签是我们拥有的唯一词汇表,它已经选中。点击应用并继续。在随后的弹出窗口中,在文本框中输入 pets
并点击应用。
现在,当我们滚动到预览区域时,唯一存在的内容是 A Moment in the Life of My Dog 文章。
排序标准
只有一个标准存在,但它正是我们想要的。内容将根据其创建日期排序,最新的排在前面。
有了这个,我们已经完成了第一次推送。为了测试它,你需要在浏览器中安装一个 RSS 推送阅读器。考虑到这一点,并输入 /pets/feed
,我们可以看到推送正如预期那样工作:
让我们点击保存,继续到下一个推送。
创建旅行推送
我们的旅行源将与宠物源非常相似。我们想要做的一件事是让源包含内容的一部分图片,因为旅行消费网站非常注重视觉。
由于我们已创建了一个源显示,我们可以克隆它并做出所需的更改,而不是从头开始。找到显示为“查看宠物源”的下拉菜单,点击箭头,然后点击 复制宠物源。
你会注意到我们现在在显示面板中有两个宠物源列表。突出显示的是新的一个。在我们对两个都使用相同的名称而感到困惑之前,让我们快速更改其名称。点击显示名称旁边的宠物源链接,在点击应用之前将名称更改为 Travel Feed
。
标题
我们将对标题进行相同的更改,将宠物更改为 Travel
,但在点击应用之前,确保将下拉菜单从 所有显示 更改为 此源(覆盖),这将更改 应用 按钮的文本为 应用(此显示),否则你将更改两个源:
当处理多个显示时,在更改设置时要小心,确保更改已正确配置,无论是仅针对您当前正在编辑的显示,还是针对所有显示(如果这是您的意图)。意外地将更改应用于所有显示(默认)可能会导致大量额外工作。记住这一点最简单的方法是始终注意应用按钮上显示的内容。
源设置
我又乱了顺序。这次,我们需要更改路径,该路径是从宠物源复制的。
我们将路径设置为 /travel/feed
。点击 路径 并将其输入到弹出窗口中的文本框中,然后点击 应用。
格式
在格式部分的设置中,通过将 宠物 更改为 旅行 来进行相同的更改。你会注意到此设置不提供我们刚才讨论的选项。某些设置仅适用于单个显示。
我们将做一些改变,以便适应我们需要在源中包含内容图片的需求。让我们告诉 Drupal 我们希望源以不同于默认的格式显示,正如你在宠物源中看到的那样。
在 显示 旁边点击 使用站点默认 RSS 设置 并从弹出菜单中选择 摘要。内容摘要通常包含文本和图片(如果内容包含的话),这正是我们想要的。点击 应用 按钮。
过滤条件
我们将跳过字段面板,因为我们不会指定特定字段。我们将让 Views 解析我们的文章内容本身。
只需从宠物源中更改一个设置。点击 包含分类术语(=宠物) 链接。在随后的弹出窗口中,将 travel
输入到文本框中,在顶部的下拉菜单中选择 此源(覆盖),然后点击 应用(此显示)。
现在,当我们滚动到预览区域时,我们将能够看到我们的带有旅行内容摘要的源:
两个已经完成,还有一个待完成!
创建剩菜源
我们将克隆宠物源,因为它不包含图片,这个也不会。在显示中点击宠物源按钮,从旅行源切换到它。找到显示为查看宠物源的下拉菜单,点击箭头,然后点击复制宠物源。
你会注意到我们现在在显示面板中有两个宠物源列表。突出显示的是新的一个。在我们对两个具有相同名称的内容感到困惑之前,让我们快速更改其名称。点击显示名称旁边的宠物源链接,在点击应用之前将其名称更改为剩菜源
。
标题
我们将对标题进行相同的更改,将宠物更改为剩菜
,但在点击应用之前,确保将下拉菜单从所有显示更改为此源(覆盖),这将更改应用按钮的文本为应用(此显示),否则您将更改所有源。
源设置
我们将路径设置为/leftovers/feed
。点击路径,在弹出窗口中的文本框中输入该路径,然后点击应用。
格式
在格式部分的设置下进行相同的更改,将宠物更改为旅行
。
过滤条件
点击具有分类术语(=宠物)链接。在随后的弹出窗口中,将是之一更改为不是之一。在宠物之后,在文本框中输入旅行,用逗号分隔它们,在顶部的下拉菜单中选择此源(覆盖),然后点击应用(此显示)。
现在,当我们滚动到预览区域时,我们将看到我们的最终源,它包含除用于前两个源的内容之外的所有内容。
太好了!我们已经完成了视图。让我们创建菜单块!
创建源链接块
如果网站访客找不到我们的内容,那么我们的内容将没有太大用处,因此我们将为他们创建一种查找方式。我们不会使用视图来完成这个任务。你可能想知道为什么,因为视图可以创建块显示。视图是为了选择项目(数据行)并为每个项目创建输出而设计的,无论是内容源、文章页面还是项目符号列表。我们的链接将是与行无关的 HTML 文本。换句话说,这是一段没有考虑文章内容或其他内容选择的文本块。正因为如此,最简单的方法是创建一个自定义块,作为主页上的内容菜单,如下所示:
-
导航到结构 | 块布局 (
/admin/structure/block
),然后点击自定义块库选项卡。然后,点击+添加自定义块按钮。 -
在块描述中输入
RSS 源
。 -
对于正文,在工具栏中点击源,然后输入以下内容:
<a href="/pets/feed">Pets</a><br />
<a href="/travel/feed">Travel</a><br />
<a href="/leftovers/feed">Other topics</a>
- 再次点击源,然后点击保存。
摘要
在本章中,我们学习了 RSS 源是什么以及它们是如何被使用的,以及如何创建为源准备的内容。我们还了解了视图模块以及视图是什么,如何创建一个具有多个源显示的视图,以及如何创建一个块菜单。
在我们的最后一章,我们将把所有内容整合到一个主页上,包括使用本章创建的块。
第八章:欢迎回家!
到目前为止,在这本书中,我们已经学习了快速搭建 Drupal 网站所需做的许多事情:创建内容类型、字段和内容;管理用户;添加模块;提供翻译;以及为其他网站创建内容源。在所有这些主题中,还有一些内容尚未涉及,当我们查看我们的主页时这一点就变得很明显。
糟糕的主页!
如下截图所示,我们的主页有很多问题:
一些与设计相关的内容超出了本书的范围,但还有一些我们可以解决。让我们列出我们主页上存在的问题:
-
内容过多!
-
没有访问主页之外的内容
-
我们的 RSS 源菜单需要添加
-
页脚菜单显示的是“法律”而不是“条款和条件”
-
“法律”链接会返回到主页
设计改进
接下来,让我们看看我们的列表,考虑一下存在的不足以及如何加以改进。
内容过多!
当然,Drupal 是一个内容管理系统,但这并不意味着所有内容都应该放在主页上。内容太多,显得杂乱无章。最好只展示一个完整的内容或少数几个简介。
有一个视图提供了主页内容的选取。它的默认行为是包括所有通过勾选“提升到首页”复选框而被提升的内容。因此,我们可以通过限制这些被提升内容的数量来限制显示的内容数量。让我们有点创意。
我们将限制简介只显示最新被提升的内容,并创建一个块,提供其他内容的链接列表。
没有内容访问权限
这是第一个问题的反面。如果我们打算展示最新内容以及一些其他内容列表中的内容,那么那些比这更早的内容怎么办?这是一个适合使用与博客中常见的相同解决方案的困境:存档。我们将创建一个来展示更早的内容。
没有 RSS 源菜单
这是一个容易解决的问题。我们已经创建了一个自定义块,为我们的 RSS 源提供了一个菜单。我们所需做的只是将这个块放置在主页上。
我们需要一个“条款和条件”页面
页脚菜单中的“法律”链接会返回到主页。我们将将其更改为我们想要的标题,并创建一个页面来链接到它。
进行更改
现在我们有了计划,让我们开始忙碌起来!
改进首页视图
导航到 结构 | 视图 (/admin/structure/views
)。向下滚动到 首页 视图。这是 Drupal 附带的一个视图。我们可以对其进行修改,但保留原始视图不变,而是创建一个副本进行修改,这正是我们在这里要做的:
-
从其行中的下拉菜单中选择复制。
-
在随后出现的“视图名称”文本框中,将名称更改为“首页 - 自定义”并点击复制。
-
在视图配置页面,我们将更改视图显示的项目数量。它目前配置为显示 10 个项目和一个分页器,但我们将将其更改为只显示一个。点击全部并从下拉菜单中选择此页(覆盖)。选择显示指定数量的项目的设置,然后点击应用(此显示)。
-
在分页器选项对话框中,将每页项目数更改为
1
,点击应用,然后点击保存。 -
返回到
/admin/structure/views
的视图列表。如果你查看列表,你会看到原始的首页和我们的自定义首页都有相同的路径。 -
由于技术原因,路径需要是
/node
,但我们不能有两个视图响应相同的路径。因此,在原始首页的行中,从下拉菜单中选择禁用。 -
此更改将确保只显示最新内容。让我们编辑我们的新视图,以便我们可以向其中添加额外的显示。当前的显示是为首页,但我们还想要一个提供额外内容标题链接块的显示。
-
在其配置页面,点击显示面板中的添加按钮,并选择块。
标题
点击标题链接,从下拉菜单中选择此块(覆盖)。然后在弹出窗口中输入Recent articles
,点击应用(此显示)。
格式
点击内容链接,从下拉菜单中选择此块(覆盖)。然后,选择字段并点击应用(此显示)。在随后的弹出窗口中,点击应用。
字段
到目前为止,我们已经告诉视图我们想要输出一个列表,并且我们想要能够选择列表中将包含的字段,但我们还没有选择任何字段。视图不喜欢这样,并且它没有帮助我们,给出了一个空输出。让我们让视图知道我们想要一个包含链接回内容的标题列表。
点击添加按钮。从下拉菜单中选择此块(覆盖),向下滚动并勾选标题复选框,然后点击应用(此显示)。在随后的弹出窗口中,点击应用(此显示)。
筛选条件
有多个筛选条件生效,但我们还想根据内容类型进行筛选,限制为文章。
点击添加按钮,从下拉菜单中选择此块(覆盖),向下滚动并勾选内容类型复选框,然后点击应用(此显示)。在随后的弹出窗口中,勾选文章复选框,然后点击应用(此显示)。
块设置
在“块名称”旁边点击无,在文本框中输入Recent articles
,然后点击应用。
分页器
点击10 个项目,将10
更改为3
,设置偏移量为1
,然后点击应用。这告诉视图使用最新文章之后的三个最新文章。我们忽略最新的原因是它将作为主要内容区域中的预告出现,所以我们不希望其标题也出现在块中。
这就完成了我们的块。别忘了点击保存。
导航到 结构 | 区块布局 (/admin/structure/block
)。在 侧边栏第一 部分,点击 放置区块。然后,在 最近文章 行中点击 放置区块,然后点击 保存区块。
添加存档
导航到 结构 | 视图 (/admin/structure/views
),向下滚动到 禁用 部分,并启用 存档 视图。
导航到 结构 | 区块布局 (/admin/structure/views
),在 侧边栏第一 部分。然后,点击 放置区块,在 存档 行中向下滚动。在这里,点击 放置区块,然后点击 保存区块 按钮。
添加 RSS 源菜单
之前,我们在视图中创建了一个 RSS 源区块显示。现在让我们将这个区块添加到我们的主页上。
导航到 结构 | 区块布局 (/admin/structure/views
)。在 侧边栏第一 部分,点击 放置区块。然后,在 RSS 源 行中向下滚动,点击 放置区块,最后点击 保存区块 按钮。
修复页脚菜单
我们想修复法律链接。我们需要修复的事情之一是它目前链接到主页而不是条款和条件页面。除非路径已经存在,否则 Drupal 不会允许为菜单项指定路径。因此,我们需要首先创建一个条款和条件页面。
导航到内容 | 创建内容 (/node/add
) 并选择基本页面作为内容类型。在标题文本框中输入 条款和条件
。我们现在不会输入法律术语,但暂时在正文中输入 占位符
。点击 URL 路径设置选项卡,输入 /termsandconditions
,然后点击保存。
导航到 结构 | 菜单 (/admin/structure/menu
),点击页脚菜单的编辑菜单按钮。
点击法律链接的编辑按钮,将标题从法律改为条款和条件。对于链接,输入“条款”,然后当自动完成字段提供内容标题时,点击它。在描述文本框中输入 T's & C's
并点击保存。
这完成了我们的改进。
摘要
在本章中,我们学习了如何通过编辑视图、提供存档和最近内容区块以及更改页脚菜单来改进一个弱的主页。
这完成了 Drupal 8 快速入门。我希望这本书能帮助你将网站搭建起来并运行,同时也帮助你理解基本的 Drupal 功能。感谢阅读!