模块简介
Content 是站点内容管理模块,负责文章、栏目、单页、推荐位、标签、文章来源、文章属性、内容替换和内容设置等能力,是 Cms 主题最常配合使用的业务模块。
能力状态约定
稳定可用:已经在内容管理与站点展示主流程中实际使用扩展入口:推荐其他模块复用的正式入口预留能力:存在但当前更偏工具或迁移辅助,不建议直接当成业务主接口
核心特点
- 提供文章、单页、栏目、推荐位、标签等标准内容模型
- 栏目和文章支持基于
label的访问方式,适合模板、主题和外部模块稳定引用 - 文章来源支持自动落库,适合采集和导入场景
- 提供内容迁移命令,可把旧库的分类和文章迁移到当前模型
与其他模块的关系
- 常与
Cms组合使用,站点主题通常围绕文章、栏目和页面模型组织展示 Cms的主题示例数据导入会直接写入Content模型- 后台设置类能力依赖
System的配置存储
对外开放的数据模型
// 文章主体
App\Content\Models\Article
// 栏目树
App\Content\Models\ArticleClass
// 单页
App\Content\Models\Page
// 标签
App\Content\Models\ArticleTags
// 推荐位
App\Content\Models\ArticleRecommend
// 文章来源
App\Content\Models\ArticleSource
// 文章属性
App\Content\Models\ArticleAttr
如果其他模块需要建立稳定内容关联,优先使用这些模型和它们的 label 字段,而不是依赖后台页面路由。
对外开放的 Service
Source
状态:稳定可用、扩展入口
// App\Content\Service\Source
// 如果文章来源名称不存在,则自动写入 article_source 表
autoSave(?string $name = ''): void
这是目前 Content 模块唯一明确作为公共能力沉淀出来的 Service,适合文章采集、批量导入、同步第三方内容来源时调用。
命令
php dux move
状态:预留能力
# 命令类
App\Content\Command\MoveCommand
php dux move
# 从旧库读取分类和文章
# 按固定映射把旧分类迁移到当前 ArticleClass
# 把旧文章迁移为当前 Article
这个命令是内容导入迁移工具,不属于站点运行时接口,但对项目交付和历史数据迁移很有价值。
模块事件
当前 Content 模块没有定义额外的模块级 Event 类
当前也没有公开的事件总线扩展点
如果其他模块要接入内容能力,推荐优先顺序是:
- 直接读取文章、栏目、单页等模型
- 直接调用
Source::autoSave() - 通过文章、栏目、页面的
label建立稳定关联
其他模块接入建议
- 需要做站点内容展示时,优先围绕
Article、ArticleClass、Page和它们的label建立读取规则。 - 需要导入文章来源时,调用
Source::autoSave(),不要在业务模块里自己维护来源字典。 - 需要对接主题时,尽量使用文章和栏目
label,不要把数据库 ID 当成长期契约。 - 如果模块需要复杂的内容扩展配置,优先围绕现有内容模型扩展,不要直接依赖后台页面实现细节。