类别概述
Joomla 核心组件中的几个实现了类别,以启用以某种方式类似的记录进行分组。如果您正在开发组件,则可以轻松地将类别功能合并到您的组件中。
最初考虑如何在数据库中存储和链接类别很有帮助。下图以与 com_contact
关联的类别为例。蓝色矩形与数据库表相关,黄色矩形与 Joomla 类相关。红色条旨在指示类别表中的记录。
Joomla 类别表被分成“分区”,每个使用类别的组件一个分区。(这里“分区”的用法比较宽泛,例如与“数据库分区”的技术术语无关)。
在每个分区中,类别记录都保存在树结构中,但始终与同一个组件关联 – 例如,您不能拥有一个 com_content
类别,其父级是 com_contact
类别。这在图中由指向同一分区的左侧箭头表示。树的根是一个单个系统根节点,它是所有组件顶级类别记录的父级。
如果 Joomla 组件支持使用类别,则组件的数据库表将包含一个保存类别 ID 的列。因此,每个组件记录(至少,每个与类别关联的记录)都包含相应类别记录的 ID(作为外键)。所有类别属性都保存在类别表中的类别记录中。
这在图中使用 com_contact
的示例进行了说明。从类别表分区到联系人详细信息表的一对多链接表示类别记录可以与许多联系人记录关联。
有两个与类别相关的 Joomla 类(以黄色显示),它们提供用于访问类别数据的 API
- 类别 – 这与类别表中的分区相关。您实例化的类别对象需要知道您要访问类别表的哪个分区,因此在创建它时,您需要指定关联的组件。
- CategoryNode – 这与单个类别记录相关。获得类别对象后,您可以访问该分区中的 CategoryNode 对象。
在您的代码中,您可以通过为每个组件/分区创建一个类别实例,来访问多个组件的类别数据。