1.7 字段(Field)与实体(Entity):在 Drupal 中处理字段与实体
在 Drupal 中,有两个非常重要的模块:Fields 和 Field UI。它们允许我们为各种对象(节点、评论、用户、分类术语等)附加不同类型的字段。这些对象由 Entity(实体) 模块创建。通过 Entity + Fields 的组合,我们可以在网站上实现各种现实世界对象之间的关系。
例如:你有一家公司,公司下有多个部门,每个部门又有若干员工。我们可以为“部门”创建一个 分类词汇表(Taxonomy Vocabulary),并在其中添加公司所有部门,然后创建一个 内容类型(Content Type)Employee(员工),并为其添加与部门关联的字段。
最终,我们不仅能获得部门和员工的独立页面,还能得到一个彼此关联的目录结构。在本课中,我们将创建这样的“部门与员工”目录,但首先要理解:Drupal 让你能够快速为网站添加各种对象,并灵活地建立它们之间的链接。
开始前,请确保以下模块已启用:Entity、Field、Field UI 和 Taxonomy。
让我们创建一个分类词汇表(Vocabulary)—— Department(部门)。(我们之前的课程中已创建过词汇表,参见 此课程)
接下来,创建内容类型 Employee(员工)(我们之前已介绍如何创建内容类型)。可以将标题字段重命名为 Full name(全名):
然后点击 Manage Fields(管理字段):
管理字段(Manage fields)
在此标签页中,我们可以为内容类型(以及其他实体:评论、用户等)添加字段。现在,添加一个指向“Department”分类词汇表的字段:
每位员工还有一个职位,因此我们添加一个 Position(职位) 字段。字段类型选择 Text(文本),这是一个普通文本字段。
我们还可以添加一个 Birthday(生日) 字段(请确保 Datetime 模块已启用):
日期类型建议选择 Date only(仅日期):
接着,将 Body(正文) 字段重命名为 About Me(关于我):
修改标签后:
现在,我们已经为每个员工添加了一些字段(在下一节中,我们将添加一个 Photo(照片) 字段来上传员工照片)。此时,在“添加员工”页面中,就会出现这些附加字段。
如果你希望调整编辑表单中字段的显示顺序,请转到 Manage form display(管理表单显示) 选项卡。
管理表单显示(Manage form display)
在该标签页中,我们可以配置节点编辑表单中字段的排列顺序。而在 Manage display(管理显示) 中,我们配置的是内容页面上字段的显示顺序。
管理显示(Manage display)
在摘要(Teaser)视图中,我们可以隐藏 Department 字段的输出,因为该字段在部门页面的摘要中已经是固定的。但在完整节点视图中,应显示部门字段,以便用户能从员工页面跳转回部门页面。
另外,我们可以为生日字段设置日期格式,使其仅显示日期而不显示时间。点击齿轮图标并选择合适的日期格式:
别忘了在每次修改后点击“保存(Save)”。同样地,请记得调整 Default 显示模式(如果未单独定义 Full content 模式,则 Default 将作为默认节点显示方式)。
现在我们可以添加员工了:
如果进入“Department(部门)”词汇表的编辑页面,还可以看到用于编辑分类术语字段的选项卡:
因此,我们可以为每个部门添加字段(例如“员工数量”或“部门徽标”等)。
同样的操作也适用于网站用户。打开账户设置页面:
/admin/config/people/accounts
现在你已经了解:在 Drupal 中几乎可以为所有内容添加字段。你可以自行决定是使用 Taxonomy(分类)、Users(用户) 还是 Nodes(节点) 来构建结构。
例如,与其使用分类词汇表来表示部门,不如直接创建一个 Department 内容类型,并通过 Entity Reference(实体引用) 模块来建立与员工的关系。这种方式同样可以让不同内容之间相互关联。
Drupal 的字段系统结合 Views 模块 提供了极其强大的功能,让你能灵活构建各种类型的网站。即使现在你还没完全理解,也可以继续学习下一课,随着实践你会逐渐掌握这些概念。