locomotivemtl/charcoal-cms

Charcoal CMS(内容管理系统)模块


README

Charcoal CMS 模块(内容管理系统)。提供基本对象以构建网站。特别是,Section(或页面)、新闻事件Faq 以及其他用户数据,特别是 ContactInquiry

此模块高度依赖于 charcoal-object(因此是 charcoal-core),它提供了 CMS 对象所依赖的基类 Content 以及许多特质/接口行为。

如何安装

安装 charcoal-cms 的首选(也是唯一支持)方式是使用 composer

★ composer require locomotivemtl/charcoal-cms

对于完整、可立即使用的项目,从 charcoal project boilerplate 开始

★ composer create-project locomotivemtl/charcoal-project-boilerplate:@dev --prefer-source

依赖项

推荐依赖项

对象

核心对象

Section 对象

在 Charcoal 中,一个 section 是作为完整网站结构图一部分的可到达的 页面。它们可以在菜单或面包屑导航中显示,并通过唯一的 URL(routable)访问。

section 类型

    • 块 section 将其内容定义为块的结构的映射。
  • 内容
    • 内容 section 在单个简单的 HTML 属性中定义其内容。
    • 空 section 与模板相关联,但不需要任何自定义内容。
  • 外部
    • 外部 section 简单地重定向到外部(或内部)URL。

所有 section 类型(除 外部 外)都使用 Template 对象进行渲染。通常,Charcoal view 确保链接到 template(默认为 mustache

section 是标准的 Charcoal Model,这意味着它们可以通过 Metadata 对象(它定义了属性映射)进行描述,并且可以通过 Source 对象进行存储。

基本 section 属性

接口

从模型

  • Describable:对象可以通过 Metadata 定义。
  • Storable:对象具有唯一的 ID 并且可以存储在存储/数据库中。

从内容

  • Content:一个“管理”的 charcoal 模型(可通过元数据/存储)。
  • Authorable:创建和修改用户(管理员)被保存在存储中。
  • Revisionable:在对象每次更新时,将保留更改的副本。
  • Timestampable:创建和修改时间被保存在存储中。

从 charcoal-object

  • 分层:对象可以分层堆叠。
  • 可发布:对象具有发布状态、日期和过期时间。允许审核。
  • 可路由:对象可以通过URL访问。

来自 charcoal-cms

  • 元标签:对象具有用于SEO目的的元信息。
  • 可搜索:可以使用额外关键词帮助搜索引擎。
  • 可模板化:对象可以使用模板/控制器/配置组合进行渲染。

扩展部分对象

\Charcoal\Cms\Section\*对象是final的。要扩展,请使用\Charcoal\Cms\AbstractSection基本对象,以确保不会出现元数据冲突。

标签对象

标签对象通过提供额外的分类层将任何对象链接在一起。标签还可以用于增强内部搜索引擎。

CMS 对象

事件对象

Charcoal 事件是一个专门的内容对象,用于描述事件,通常发生在特定日期和地点。

基本事件属性

接口

从模型

  • Describable:对象可以通过 Metadata 定义。
  • Storable:对象具有唯一的 ID 并且可以存储在存储/数据库中。

从内容

  • Content:一个“管理”的 charcoal 模型(可通过元数据/存储)。
  • Authorable:创建和修改用户(管理员)被保存在存储中。
  • Revisionable:在对象每次更新时,将保留更改的副本。
  • Timestampable:创建和修改时间被保存在存储中。

从 charcoal-object

  • 可分类:对象可以被放入一个类别中。
  • 可发布:对象具有发布状态、日期和过期时间。允许审核。
  • 可路由:对象可以通过URL访问。

来自 charcoal-cms

  • 元标签:对象具有用于SEO目的的元信息。
  • 可搜索:可以使用额外关键词帮助搜索引擎。
  • 可模板化:对象可以使用模板/控制器/配置组合进行渲染。

扩展事件对象

\Charcoal\Cms\Event对象是final的。要扩展,请使用\Charcoal\Cms\AbstractEvent基本对象,以确保不会出现元数据冲突。

事件类别

事件类别对象是简单的charcoal/object/category,用于分组/分类事件。默认类型是Charcoal\Cms\EventCategory

事件实现了来自charcoal-object的Categorizable接口。

常见问题解答对象

常见问题解答对象是一种特殊的内容类型,采用“问题”/“答案”格式。

常见问题解答类别

常见问题解答类别对象是简单的charcoal/object/category,用于分组/分类常见问题解答对象。默认类型是Charcoal\Cms\FaqCategory

常见问题解答实现了来自charcoal-object的Categorizable接口。

新闻对象

新闻对象是一种特殊的内容类型,具有特定的新闻日期。

基本新闻属性

接口

从模型

  • Describable:对象可以通过 Metadata 定义。
  • Storable:对象具有唯一的 ID 并且可以存储在存储/数据库中。

从内容

  • Content:一个“管理”的 charcoal 模型(可通过元数据/存储)。
  • Authorable:创建和修改用户(管理员)被保存在存储中。
  • Revisionable:在对象每次更新时,将保留更改的副本。
  • Timestampable:创建和修改时间被保存在存储中。

从 charcoal-object

  • 可分类:对象可以被放入一个类别中。
  • 可发布:对象具有发布状态、日期和过期时间。允许审核。
  • 可路由:对象可以通过URL访问。

来自 charcoal-cms

  • 元标签:对象具有用于SEO目的的元信息。
  • 可搜索:可以使用额外关键词帮助搜索引擎。
  • 可模板化:对象可以使用模板/控制器/配置组合进行渲染。

扩展新闻对象

\Charcoal\Cms\News对象是final的。要扩展,请使用\Charcoal\Cms\AbstractNews基本对象,以确保不会出现元数据冲突。

新闻类别

新闻类别对象是简单的charcoal/object/category,用于分组/分类事件。默认类型是Charcoal\Cms\NewsCategory

新闻实现了来自charcoal-object的Categorizable接口。

开发

安装开发环境

$ composer install --prefer-source

API文档

开发依赖

  • phpunit/phpunit
  • squizlabs/php_codesniffer
  • satooshi/php-coveralls

持续集成

编码风格

charcoal-cms模块遵循Charcoal编码风格

可以使用composer phpcs执行编码风格验证/强制执行。还可以使用composer phpcbf使用自动修复器。

作者

许可证

Charcoal根据MIT许可证授权。有关详细信息,请参阅LICENSE