logo

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

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

演示 EBT 模块 下载 EBT 模块

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

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

演示 EPT 模块 滚动

滚动

PHP课程 - 第3部分 - 创建自己的CMS

07/10/2025, by Ivan

使用 CMS 创建网站并不局限于 Drupal、Joomla 或 Wordpress。世界上大多数网站都是基于自写的 CMS 开发的。虽然 PHP 已经有大量成熟的代码,但开发者仍然常常倾向于使用自己的解决方案。让我们来分析一下,为什么值得自己编写一个 CMS。

确实,Drupal 是一个功能强大的系统,拥有大量模块、钩子(hooks)以及用于开发自定义模块的函数。很多人都会编写模块,但我们来看看真正开发 Drupal 核心(CMS 本身)的人有多少?
你可能听说过,Drupal 是上百甚至上千名开发者共同努力的结果。但我们不妨仔细看看,究竟是谁在开发 Drupal。

在 Drupal 下载页面上,有一个区块列出了核心开发者,也就是那些直接参与 CMS 核心代码的人。

drupal.org/node/3060/committers?sort=desc&order=Commits

在该页面上可以看到开发者及其对核心的提交次数。以下是部分列表:

开发者 最近一次提交 首次提交 提交次数
Dries 3 天前 11 年前 10501 次提交
webchick 5 天前 3 年前 3108 次提交
Gábor Hojtsy 2 天前 4 年前 1635 次提交
Steven 4 年前 11 年前 1156 次提交
drumm 1 年前 5 年前 764 次提交
killes@www.drop.org 4 年前 6 年前 506 次提交
Kjartan 5 年前 11 年前 383 次提交
catch 2 天前 21 周前 329 次提交

逐一分析:

Dries

Dries(1 万次提交)——全名 Dries Buytaert,是 Drupal 项目的创始人。正如你所见,Drupal 项目已经存在超过 11 年。Dries 创建了 Acquia 公司,专门提供 Drupal 网站的技术支持(与 Drupal 自身不同,这是一项收费服务),同时也参与 Drupal 及其模块的开发。在一次采访中,Dries 曾表示他现在已不再直接参与核心开发,而主要负责管理 Acquia 公司。而他提交的大量核心代码,大多是其他开发者提交的补丁(patch),他负责合并。

Webchick webchick(3 千次提交)——全名 Angie Byron,Drupal 7 的主要开发者之一。她曾在 Lullabot 公司工作,现在(或曾经)在 Acquia 公司任职。她还创建了著名的命令行工具 Drush,用于通过终端操作 Drupal。目前,Angie 是 Drupal 的核心开发负责人之一。

Gabor Gábor Hojtsy——是 Drupal 6 的主要开发者之一,并在 Drupal 7 中负责国际化(i18n)和多语言支持功能的实现。

当然,还有其他核心开发者,他们负责特定的功能模块。但主要贡献者就是上述这些人。因此,尽管人们常说 Drupal 是“成千上万程序员的成果”,实际上核心部分主要由几位核心开发人员维护。

为什么要自己开发 CMS?

回到最初的问题:为什么要自己开发 CMS?
还记得你花了多长时间学习 Drupal 吗?事实上,有些开发者创建一个简单 CMS 所需的时间,比学习像 Drupal 这样复杂系统所需的时间还要少。

PHP 是一种相对简单的语言(与其他语言相比),编写基本功能代码几乎不需要特别的知识。当然,要开发一个可扩展的系统,你需要逐步深入学习更多内容。但我们先来看下自己开发 CMS 的优点:

1. 完全掌控代码结构。
你知道代码中每个部分的位置。你多久会去看 taxonomy.modulecomment.module 的源码?大多数人很少这样做。功能已经实现、文档齐全、模板可以覆盖,一切看似完美。但当出现 bug 时呢?难道要在 drupal.org 提交问题等待核心开发者回复?这显然不是高效的解决方式。

2. 高性能。
众所周知,Drupal 相对较慢,它执行的数据库查询很多。而自写的 CMS 可以针对具体任务进行优化,运行速度通常会更快。当然,Drupal 也有缓存与优化模块,但对于共享主机(shared hosting)用户,这仍然可能是问题。

3. 完全自主。
在自写 CMS 中,你不必遵循 “不要修改核心代码” 的规则。你可以自由地直接修改核心逻辑,不需要等待官方版本更新来整合你的改动。

当然,也有一些缺点——但这些我们暂且不谈。Drupal 是一个优秀的系统,这是众所周知的事实。

那么,现在你决定开始编写自己的 CMS 了——我们开始吧。