不同 CMS 如何处理内容块

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

想象一个非常简单的博客。博文只是一两个标题和一段或三段文字。在这种情况下,使用一个 CMS,您只需输入标题和这些段落,然后点击发布即可,非常完美。也许还会有一些元数据,比如日期和作者。我在这里冒昧地说,**仅标题和内容字段**是 CMS 的反模式。它在灵活性方面很强大,但由于缺乏抽象控制,会导致长期的痛苦。

不过,我们不要谈论整个 CMS,让我们将范围缩小到仅仅是那个内容区域问题。

现在想象一下,我们有一个内容更加丰富的网站。我们试图使用我们的 CMS 来构建各种页面。其中一些可能是博客式的。一些更像是登陆页面。这些页面由文本块构建而成,但也包含不同的组件。地图!滑块!广告!引用!

这里有四个不同的示例,以便您确切地了解我的意思。

我敢打赌,这种事情看起来很熟悉。

您可以绝对通过将所有这些块放入单个内容字段来实现这一点。嘿,这只是 HTML!将所有这些块所需的 HTML 直接放入该内容字段,它就会按您的意愿执行。

这样做有两个重大的问题。

  1. **并非每个人都非常精通 HTML。**您可能正在为其他人设置一个 CMS,他们使用内容很在行,但不太擅长代码。即使对于那些熟悉 HTML 的人来说,这也没有很好地利用 CMS。例如,通过拖放来重新排列页面会容易得多,而不是仔细复制粘贴 HTML。
  2. **数据库中的 HTML 问题。**所以您有五个页面带有图像滑块。滑块需要一些特定的、嵌套的、结构化的 HTML。您是将其放入五个不同的页面中吗?该滑块必然会发生变化,您需要避免更改五次。将您的 HTML 保留在模板中,将数据保存在数据库中。

那么……我们该怎么办?说实话,我并不确定 CMS 是如何处理这个问题的。所以我四处查看了一下。这就是我找到的。

在 CraftCMS 中……

CraftCMS 为此提供了一种名为 Matrix 的字段类型。

单个 Matrix 字段可以具有任意数量的块类型,作者在添加新内容时可以从中进行选择。每个块类型都获得自己的一组字段。

在 Perch 中……

Perch 使用他们称为 Blocks 的功能来处理此问题。

在我们的博客模板中,帖子的正文只是一个添加文本的大区域。但是,您的编辑器可能希望使用图像、视频或任何其他内容来构建帖子。我们可以让他们能够使用 Perch Blocks 在不同的内容之间进行选择,并将这些内容放入他们的帖子中。

在 Statamic 中……

Statamic 使用 Replicator 元字段类型 来处理这个想法。

Replicator 是一种元字段类型,使您能够定义字段集,您可以根据自己的想象以任何顺序和排列方式动态地将这些字段组合在一起。

在 WordPress 中……

这里很容易想到 高级自定义字段 (Advanced Custom Fields),它似乎正中下怀。我喜欢 ACF,但我认为这里不太一样。虽然您可以创建新的自定义字段来使用,但随后您需要请求该数据并以特殊方式在模板中输出它。这不是处理现有内容块的方法。

SiteOrigin 页面构建器 这样的东西,它通过使用现有的内容区域和小部件来工作。

还有即将推出的 Gutenberg 编辑器。它注定要成为 WordPress 核心的一部分,但目前 它是一个插件。Brian Jackson 有一篇很好的文章介绍了它。在 Gutenberg 本身的演示内容中,它很好地解释了这一点。

这个新编辑器的目标是使向 WordPress 添加丰富内容变得简单和愉快。这整篇文章都是由内容片段组成的——有点类似于乐高积木——您可以随意移动和交互。移动光标,您会注意到不同的块会亮起轮廓和箭头。按下箭头可以快速重新定位块,而无需担心在复制粘贴过程中丢失内容。

请注意可用的不同块。

在 Drupal 中……

Drupal 有一个名为 Paragraphs 的模块用于此。

最终用户现在可以根据需要在预定义的段落类型之间即时选择,而不是将所有内容都放在一个包含图像和视频的所见即所得正文字段中。段落类型可以是任何内容,从简单的文本块或图像到复杂且可配置的幻灯片。

在 ModX 中……

ModX 有一个名为 ContentBlocks 的付费插件用于此。

模块化内容原则意味着您将内容分解成更小的内容片段,这些片段可以单独使用或解析。因此,您可以设置标题、图像和文本描述,而不是单个内容块。

每个这样的内容小块都有自己的模板,因此您可以对其值执行惊人的操作。


当然,这些并不是唯一的 CMS。您的 CMS 是如何处理的呢?