logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动

1.6. 产品与分类 —— 创建数据库表

07/10/2025, by Ivan

在创建商品和分类功能之前,让我们先思考一下,客户和网站管理员需要哪些信息。我们必须提供足够的商品信息:包括商品名称、商品详细描述、商品价格。我们还可以展示商品的主图和附加图片。为了计算运费,可能还需要商品重量;为了防止超卖,还需要库存数量。对于管理员而言,还需要商品的 ID 以及供搜索引擎使用的可读 URL(即“伪静态链接”)。

最终,我们至少需要以下字段:

字段 说明
ID 商品的内部编号
Name 商品名称
Slug (ЧПУ) 供搜索引擎使用的可读 URL
Description 商品详细描述
SKU 商品编号(用户可见)
Price 商品价格
Stock 库存数量
Primary image 主图
Additional images 附加图片

后续文章中我们将扩展此字段列表,目前这些已经足够使用。

商品分类表应包含以下字段:

字段 说明
ID 分类的内部编号
Name 分类名称
Description 分类描述
Slug (ЧПУ) 搜索引擎友好的 URL

我们本可以立即实现用于显示商品和分类的数据结构及功能,但这样会失去灵活性。网站中的许多内容类型有共同属性。如果我们提取这些共性并创建一个抽象内容类型,我们的框架将更加灵活,可以在不同内容类型中复用功能,而无需重复代码。这样的共用功能包括:

  • 内容版本控制
  • 访问权限控制
  • 页面、商品的评论功能
  • 页面与商品的评分系统

页面 (Pages)

页面用于显示网站的静态内容,如“联系我们”、“配送与支付说明”等。这些页面的数据结构如下:
字段 说明
Name 页面名称
Slug (ЧПУ) 页面 URL
ID 页面内部编号
Heading 页面的 <h1> 内容
Title 页面的 <title> 内容
Content 页面正文内容
Keywords meta 关键字标签内容
Description meta 描述标签内容

内容 (Content)

页面是我们将要扩展的主要内容类型。当需要更多字段时,我们将在此基础上扩展。分类页面本质上也是一种页面,只是需要更多字段以实现与商品的关联。
字段 说明
ID 内部编号
Name 内容标题
Slug (ЧПУ) 可读 URL
Content 内容正文
Type 内容类型(例如 page、product、category)
Order 内容排序字段(例如菜单项顺序)
Parent 父级内容,用于层级关系,如子分类或页面目录
Meta keywords 关键词
Meta description 描述信息
Date created 创建日期
Creator 内容作者
Active 是否向访客显示内容
Secure 权限字段,例如仅注册用户可查看

修订版本 (Revisions)

Drupal 拥有版本控制系统,我们也将实现类似的内容修订机制。
字段 说明
ID 内容内部编号
Current revision 当前修订版本号
现在我们已经规划好了内容类型,可以开始创建数据库。每种类型将对应一张独立的表。最终我们会得到以下数据表:
表名 说明
Content 用于存储内容的活动版本及固定信息,如作者等。
Versions 用于存储内容的不同版本数据。
Content types 记录框架的内容类型,并将内容与类型关联。
Products 用于扩展商品的详细信息。
Revision history 保存修订版本历史记录。

Content 表结构

网站的所有内容都存储在此表中。如果我们想扩展某种内容类型,将在单独的表中实现。例如,商品将存储在 Content 表中,并通过 ID 与 Products 表关联。
字段 类型 说明
ID Integer (auto increment) 用于与其他表关联的主键
Current_revision Integer 与版本表关联
Active Boolean 内容是否已发布
Secure Boolean 是否仅登录用户可访问
Parent Integer 父级内容 ID
Order Integer 排序字段
Author Integer 创建该内容的用户 ID
Type Integer 内容类型 ID
Path Varchar 存储可读 URL (slug)
现在我们可以执行以下 SQL 语句来创建 Content 表:
CREATE TABLE `content` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `current_revision` int(11) NOT NULL,
  `active` tinyint(1) NOT NULL,
  `secure` tinyint(1) NOT NULL,
  `parent` int(11) NOT NULL,
  `order` int(11) NOT NULL,
  `author` int(11) NOT NULL,
  `type` int(11) NOT NULL,
  `path` char(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;