这个CMS比它的时代早一些,并且没有立即获得应有的欢迎。但是,在最近的几年中,它一直经历着一种复兴,这在英语开发环境中对此有很多参考。
为了通过此翻译支持这一潮流,我开始撰写有关此漂亮CMS的一系列文章。
现在许多人正在寻找WordPress的替代品。在本文中,我们将其与October CMS进行了比较,并探讨了为您的项目找到合适的CMS时要考虑的重要问题。
三个月前(原始文章写于2019年春季-...注意笔) WordPress发布了Gutenberg,以扩大默认情况下编辑内容的可能性。这促使许多人不满意此更改,以寻找替代CMS。一些用户选择了分叉“ Pre-Gutenberg” WordPress。但这没有多大意义,因为WordPress在其存在的15年中积累了巨大的技术债务。如果我正在寻找WordPress的替代产品,我会尝试寻找一个基于现代技术的成熟平台。
在本文中,我们将以多种技术和非技术方式将WordPress与类似但更现代的October CMS进行比较。目标不是说服您使用WordPress或切换到October CMS。我将尝试向您展示在更改平台时应考虑哪些标准。在做出明智的决定之前,可以并且应该与其他平台进行相同的比较。
为什么选择十月CMS
当十月成为 2018年最佳平面文件CMS 时,我了解到了十月。之后,我开始研究此工具,并从用户和开发人员的角度投入了大量时间。我很快意识到她是一个非常适合比较的主题。我选择了它,而不是替代选项,如GRAV,Statamic,ButterCMS,的Joomla,Drupal的,杰奇,雨果等。这是主要原因:
- 我想出了十月CMS的工作方式(相对于Grav);
- 它是免费和开源的(不同于Statamic和ButterCMS);
- 在她的五年中,它被认为是相对较新的(与Joomla和Drupal不同);
- 它包含动态内容生成,并且可以在PHP上运行(与Jekyll和Hugo不同)。
我认为October是一个不错的选择,因为它基于Laravel(用于构建现代Web应用程序的框架)的基础。在其存在的七年中,它得到了开发人员的认可,这一点在广大社区和生态系统中得到了证明。在此框架上进行开发与为WordPress编写代码形成鲜明对比。如果在后一种情况下主要是过程编程,那么在Laravel中显然是面向对象的。
有什么区别?
下面,我将比较WordPress和October在不同类别中的优势,并重点介绍它们各自的优缺点。但是我不会选择获胜者,因为那不是本文的目的。而且,无论如何,都不存在“更好”或“最好”的CMS。他们每个人都有自己的优点和缺点,这使它们或多或少地适合于特定的任务,项目,公司或团队。另外,使用多个CMS对项目很有用,例如,一个用于数据管理,另一个用于呈现页面。由您决定数十种系统中哪一种最适合您的任务。
由于我们正在考虑此处的许多选择之一,因此本文无法得出明确的结论。例如,我们还可以在网络上找到“ WordPress与Drupal与Joomla,WordPress与静态网站生成器”甚至“ WordPress与中型”的比较。由于这些文章都没有提供完整的描述,因此这些比较都不能也不应被认为是最终的。因此,让我们进行比较。
哲学和目标受众
几乎每三个网站都是 基于WordPress 构建的,这并非巧合。自成立以来,它一直努力尽可能地做到用户友好,并且做得很好。WordPress消除了所有用户的潜在使用麻烦,无论他们的教育水平和技术背景如何。WordPress创始人Matt Mullenweg表示,当前时代WordPress座右铭“民主化出版”的含义如下:
“具有各种背景,兴趣和能力的人们应该可以使用允许他们在开放的Web上表达自己并拥有其内容的软件。”
WordPress对所有人都很容易使用,并且其兼容性在开发方面也得到了证实:找到没有编码经验的人(例如营销人员,设计师,博客作者,卖家等)成功启动其网站并不少见。WordPress以用户为中心,用户需求优先于开发人员需求。
相反,十月份的CMS更加面向开发人员,从发布之日起就清楚地理解了这一点:
“ 10月CMS提出了一个大胆但显而易见的假设:客户没有建立网站,开发者却没有。客户的角色是管理站点并解释其业务需求。Web开发人员和整个行业本身都围绕这些因素的调解。”
根据其创始人的说法,十月份CMS的任务是“证明建筑工地不是很困难”。十月基于Laravel的CMS将是编写可重用模块化代码的良好起点。它使您能够开发设计良好的应用程序,这些应用程序易于长期定制和维护。无需使用变通办法(“拐杖”),就可以维护和完全自定义此类应用程序-正是这些吸引了认真的程序员。
October CMS还可以提供出色的用户体验,但是,它不像WordPress那样简单且用户友好。用户在使用某些功能之前需要了解它们的工作原理。例如,要弄清楚如何通过插件嵌入表单,您将需要阅读一长篇说明,这比WordPress 中多个表单插件中的直观拖放功能要复杂得多。
安装
WordPress可以在5分钟内安装完毕,尽管许多人指出,考虑到所有插件,通常需要15分钟或更长时间。此外,WordPress的提供了一个多站点功能,可以让你在一个安装上创建多个虚拟站点的网络。此功能使代理机构可以轻松管理多个客户的站点。
October CMS的安装也非常简单:向导安装本身只需不到五分钟的时间,如果通过控制台安装来安装,则速度甚至更快。后者可以通过简单地导航到目标目录然后运行命令来完成
curl -s https://octobercms.com/api/installer | php
之后,您需要输入数据库配置,否则它的行为就像平面文件CMS。安装完成后,我们将拥有一个功能全面的网站,但目前为止非常简单。如果您增加了安装和配置所需插件的时间,则可能至少需要15分钟。
安全
由于大量不断发现的漏洞,并非所有人都认为WordPress安全。这迫使用户不断更新CMS本身和所有已安装的插件,以避免安全风险。主要问题之一是对PHP较早版本的支持,而该版本不再受PHP开发人员社区支持(WordPress当前支持PHP 5.2.4,而最后一个完全受支持的 PHP 版本是5.6)。此问题应在2019年4月WordPress正式开始支持PHP 5.6及更高版本时解决(问题已解决。-Ed。)。
此外,WordPress的安全风险不是其内部问题,而是由于其高度流行,这使该系统成为黑客的目标。但是,它的工作方向却相反:WordPress的普遍性意味着其安全团队必须认真对待他们的工作,不断寻找并修复漏洞,否则互联网上多达三分之一的站点都将面临风险。赌注太高了。
相比之下,十月CMS没有声誉安全问题。但是,由于10月仅建立了27,000个活动站点(与WordPress上的数百万相比),我们无法对两个系统进行相同的评分。但是,十月CMS开发团队非常重视安全性。向导安装提示输入CMS后端URL的值证明了这一点,该URL默认情况下设置为/ backend,但是可以更改为其他名称,以使黑客更难以浏览该站点。相反,分别通过/wp-login.php和/ wp-admin更改WordPress登录和后端URL 只能通过plugin进行。此外,十月CMS可以用作平面文件CMS(即没有数据库),并且可以避免数据库漏洞(例如SQL注入)。
技术栈
WordPress和October CMS都可以在传统的LAMP堆栈中运行:Linux,Apache,MySQL和PHP。但是,仅需要PHP:您还可以使用Windows,Nginx,MariaDB等。October CMS的行为类似于平面文件CMS,也就是说,它可以在没有数据库的情况下进行,尽管是以功能为代价的(例如,博客文章消失了) ... 唯一可以保证的是页面功能,页面功能被视为创建和发布内容的基础,并且是主要功能。
在语言堆栈方面,使用WordPress和October CMS构建的网站基于HTML,CSS和JavaScript(请注意,PHP用于生成HTML)。October CMS还使使用LESS和SASS文件变得容易。
编程范例
WordPress使用函数式编程的原理,它基于通过调用不具有应用程序状态的函数的计算得出的结果。尽管WordPress开发人员不必坚持使用功能性编程(例如,为其主题和插件编写代码),但此范例已由主要系统代码所接管,以保持与以前版本的兼容性长达15年。这是WordPress成功的支柱之一,但这需要积累技术债务。
另一方面,十月CMS使用命令式编程范例通过操纵对象的状态进行计算。October CMS基于Laravel,Laravel是一个完全基于面向对象编程原理构建的框架。这些原理使您可以基于Model-View-Controller概念创建模块化应用程序,这些概念用于将用户界面与应用程序数据分离,Dependency Injection用于设置类依赖关系,还可以分离用于定义框架提供的主要服务的界面。
钩子
WordPress中的编程可以称为“挂钩开发”。挂钩是一种机制,它允许您更改行为或默认值,并使另一个代码执行相应的功能。挂钩通过“操作”(允许您执行其他功能)和“过滤器”(允许您更改值)启动。
WordPress代码库中普遍存在的钩子是WordPress编程中我最喜欢的方面之一。它们允许插件彼此交互,交互或交互,为面向方面的编程提供基本支持。
好消息是,Laravel(以及相应的October CMS)也支持钩子的概念,这称为“事件”。它们提供了观察者概念的简单实现,使您的代码可以订阅和侦听应用程序中发生的事件,以根据需要做出反应。通过事件,您可以将复杂的功能分解为可以独立安装的组件。这样,它们将彼此交互,这使您可以创建模块化应用程序。
JavaScript库依赖
默认情况下,最新版本的WordPress包含用于创建内容的基于React.js的Gutenberg。因此,WordPress开发现在主要基于JavaScript(主要是通过React)。尽管可以使用其他框架和库,正如基于Marionette的Elementor Blocks for Gutenberg 所证明的那样。 此外,WordPress仍基于Backbone.js(用于媒体管理器)和jQuery(旧版代码),但是随着古腾堡成为新的默认设置,对这些库的依赖有望消失。 October CMS取决于jQuery,它用于实现其可选
AJAX框架,用于从服务器下载数据而无需刷新浏览器页面。
页面,主题,插件
WordPress和October CMS都将页面视为创建和发布内容的基本单元(对于WordPress,除帖子外)。它们都支持使用主题更改网站的外观,并允许您使用插件安装和扩展功能。
尽管这两个CMS中的概念相同,但是在实现上仍存在一些差异。结果,它们的行为略有不同。
在WordPress中,页面被定义为内容并存储在数据库中。因此,只能通过CMS创建页面内容(例如,在管理面板中),并且从一个主题切换到另一个主题不会使现有页面无法访问。因此,整个过程非常协调。
相反,在十月CMS中,页面是存储在主题目录中的静态文件。这种体系结构解决方案的优点是可以从外部应用程序创建页面的内容,例如,诸如Sublime或Visual Studio Code之类的文本编辑器。另一方面,从一个主题切换到另一个主题时,您需要手动重新创建页面或将页面从当前主题复制到新主题,否则它们将消失。
请务必注意,十月CMS允许页面路由... 因此,页面不仅用作内容的容器,而且还用作功能。例如,博客插件依赖于一个页面以一个选定的URL显示博客文章列表,另一个页面以一个不同的选定URL显示博客文章,依此类推。如果这些页面中的任何一个消失,则插件的相关功能将不可用,并且此URL将显示404错误。因此,在CMS十月份,CMS主题和插件未完全分开,因此您需要仔细切换主题。
开箱即用的功能和插件
WordPress提供的基本功能最少,可以通过插件进行增强。它遵循80-20规则来决定是否在其核心中包括某些功能。
如果它们使80%的用户受益,则将它们包括在内,否则通过插件实现。在网站上安装插件时,它们可能会导致代码膨胀如果安装太多。插件之间也可能无法正常工作,执行相似的代码或加载相似的资源,从而导致性能欠佳。因此,虽然运行WordPress网站相对简单,但是在添加新功能时维护它并保持最佳状态和生产状态是一项更加困难的任务。
October CMS还尝试提供最少的基本功能。甚至太多:唯一保证的功能是页面的创建和发布。对于其他所有内容,我们将需要安装其中一个插件。换句话说,这里有您需要的一切,仅此而已。
目标很明确:大多数简单站点仅由页面组成,甚至可能没有博客文章,用户或授权。如果不需要它们,为什么应用程序会为其加载资源?结果,博客,用户管理,翻译和某些其他功能的功能可通过官方市场获得。
October CMS还包括一些功能(尽管并不总是需要)可以极大地改善应用程序。例如,它提供内置支持,用于将媒体文件加载到Amazon S3并通过CDN Rackspace访问它们。它还有一个媒体管理器,主要通过插件使用,例如,将图像添加到博客。页面还可以使用媒体管理器来嵌入媒体文件,但是CMS附带了“资产”部分来下载媒体文件,这似乎更加方便。
在我看来,October CMS允许您创建最简单的应用程序,主要用于简单站点。但是可能会有不愉快的后果。这可能会导致代码膨胀,因为所需内容与不所需内容之间的界限非常狭窄,并且很难在CMS框架内预先确定。
如果我们看一下“用户”的概念,这很容易感觉到:在WordPress中,用户和站点管理员属于同一用户实体(并且我们可以通过角色和特权使用户成为管理员)。在十月CMS中,这两个概念是分别实现的:管理员可以直接使用现成的功能,他们可以登录管理面板并更改设置,而注册用户是通过单独的插件实现的。这两种类型的用户具有不同的登录过程和用于存储数据的不同数据库表。因此,可能违反了DRY(请勿重复)的原则。
这个问题不仅出现在实体的行为方面,还出现在它应包含的数据字段中。例如,是否应该预定义站点上的用户数据字段?是否需要提供电话号码的字段?以及Instagram URL字段,考虑到Instagram相对最近变得非常流行?如果我们正在建立一个专业网站,我们是否应该使用LinkedIn框而不是Instagram?这些决定明确取决于情况,并且CMS或插件均无法做出这些决定。
一个名为User的October CMS插件实现了用户系统,但没有自定义字段。并且User Plus插件添加了一些其他自定义字段。如果还不够,可以使用User Plus +插件添加更多自定义字段。什么时候停止?(我们在LOVATA开发了自己的Buddies插件,该插件可以解决此问题,并允许您创建任意数量的任何自定义字段。-注意翻译。)
另一个问题-如果没有位置向实体添加新功能,则会导致创建另一个非常相似的对象,仅仅是为了支持那些必需的功能。例如,在十月CMS中,默认情况下具有页面创建功能,您还可以通过插件创建静态页面。它们的本质是相同的:页面和静态页面都保存为静态文件。使它们与众不同的唯一原因(据我了解)是,静态页面是使用可视编辑器而不是HTML编辑器进行编辑的,并且可以添加到菜单中。在我看来,只有结构上的差异,例如将一个对象另存为静态文件,而将另一个对象另存为数据库,才能解释为页面创建另一个对象的情况(为此有一个pull request),但是对于现在的简单功能,这会导致膨胀码。
因此,十月CMS允许您以非常经济有效的方式创建Web应用程序,例如,通过在不需要数据库时将其删除。但是该应用程序也可能变得过于肿,因为开发人员被迫为相似的对象实现几种解决方案,这可能会使使用变得复杂(“我需要使用页面还是静态页面?”)。
由于WordPress和October CMS都没有找到避免膨胀的完美解决方案,因此您需要仔细设计任何应用程序体系结构,以避免将来出现问题。
内容创作
古腾堡为WordPress带来了两项创新:它使用组件作为实体来创建网站,与HTML blob编码相比,它具有一些优势;引入了一个名为“ block”的新实体,该实体在2019年古腾堡第二阶段完成后(已实施)。请注意翻译)。与使用短代码,TinyMCE,菜单,小部件等添加内容的混乱过程相比,它将提供一种统一的方式来在网站中包含内容,从而简化了用户体验。
由于Gutenberg块可以生成和存储静态HTML作为博客文章的一部分,因此安装多个Gutenberg块不一定会导致站点上的用户端代码膨胀。管理员方面的不便可能会限制它。因此,古腾堡被认为是一种以模块化的方式构建站点的好方法,它具有简单而强大的用户界面来创建内容。也许最大的缺点是需要学习React,这并不容易。
如果在WordPress中创建内容的主要单位是React组件,那么October CMS的想法是创建网站就足以知道旧的HTML。实际上,在创建页面时,我们使用常规的HTML编辑器(标记)。
如果页面是纯静态HTML,则不需要CMS。但是October CMS 的页面是使用Twig模板编写的,这些模板被编译为简单的,优化的PHP代码。它们可以基于包含重复元素(例如页眉和页脚)的布局(布局),可以引起占位符(占位符),这些占位符在布局中定义为允许页面上的内容设置,并且还可以包括parshely(局部),它们是实体是可重用的代码段。
另外,页面可能包含内容块。(内容),它们是可以分别进行编辑的Text,HTML或Markdown文件。它们还可以包含组件,这些组件是使用插件实现的功能。最后,如果HTML还不够,我们需要创建动态代码,则可以添加PHP函数。
整个编辑器是HTML。 TinyMCE没有用于内容可视化编辑的文本字段-至少不是通过默认界面(此功能留给了插件)。因此,可以说您必须了解HTML才能使用October CMS。此外,几种不同的内容创建选项(页面,布局,占位符,地块,内容块,组件和PHP函数)可能非常有效,但它们不像通过统一的WordPress块界面那样容易使用。随着您可以添加其他元素(例如静态页面,菜单或摘录),事情可能变得更加复杂。。而且其中的某些页面(例如页面和静态页面)似乎具有相同的功能,因此很难选择使用什么内容以及何时使用。
我认为几乎任何人都可以管理WordPress网站。但是,与没有技术背景的用户相比,10月CMS对开发人员来说更方便。因此,程序员可能会喜欢它,但是来自界面其他区域的人似乎并不直观。
媒体经理
WordPress和October CMS都有一个媒体管理器,可让您轻松地将多媒体文件添加到站点,支持一次拖放添加多个文件,并在内容区域显示图像。它们的外观和行为几乎相同:我注意到的唯一明显区别是WordPress的Media Manager允许您嵌入图像库,而October CMS的Media Manager允许您手动创建承载已上传文件的文件夹结构。
但是自古腾堡(Gutenberg)问世以来,WordPress媒体已大大扩展:与TinyMCE编辑器不同,您现在可以嵌入视频,图片和照片库,TinyMCE编辑器仅提供其在网站上的外观的不准确版本。他们还添加了有趣的,但易于使用的功能,此视频对此进行了演示。
国际化
WordPress核心使用gettext启用主题和插件的翻译。从包含所有要翻译的字符串的.pot文件开始,我们需要创建一个.po文件,其中包含将其翻译为适当语言的内容。然后将该文件编译为二进制.mo文件,适合快速提取翻译。完成这些任务的工具包括GlotPress(在线)和Poedit(可下载的应用程序)。方便地,此机制还可以在Gutenberg的客户端本地化中使用。
WordPress当前没有用于翻译内容的单一核心解决方案,并且直到Gutenberg的第四阶段才会提供它们(计划于2020年或之后)。目前,此功能将由提供不同策略来存储和管理翻译内容的插件提供。例如,诸如Polylang和WPML之类的插件将每个翻译存储在自定义数据库表的单独一行中。这是很方便的,因为内容不会混合,但工作起来会更慢,因为在查询数据库时,它需要对两个表进行额外的内部联接。qTranslate X插件将所有翻译存储在原始数据库表的一个字段中。这样,可以更快地请求数据,但是由于内容混合,如果禁用插件,站点可能会中断。我们仍然需要选择最适合我们需求的策略。
October CMS不是通过核心而是通过内部团队创建的插件来支持多语言。该插件可确保无错误地集成到系统中。从功能的角度来看,它可以完成其工作,但是从开发的角度来看,该插件并不十分完美。
在WordPress中,页面只是具有“页面”帖子类型的帖子,并且它们具有单一的翻译机制。十月CMS中有对象“页面”,“静态页面”和“博客文章”。尽管它们非常相似,但是它们需要三种不同的翻译实现!页面内容可以包含消息代码(例如,名称为nav.content,header.title等的代码),每个消息代码都包含自己的所有语言环境的翻译,作为rainlab_translate_messages数据库表中的序列化JSON对象。
“静态页面”的内容是在每个区域设置的新静态文件中创建的,尽管所有区域设置的所有翻译URL均未存储在相应的文件中,而是存储在默认语言文件中。
博客文章的内容存储为Rainlab_translate_attributes数据库表中每个区域设置一行的序列化JSON对象,翻译后的URL存储在Rainlab_translate_indexes数据库表中每个区域设置一行。
我不知道这种复杂性是否与插件的实现方式或October CMS的体系结构有关。无论如何,这是开发中不必要的代码膨胀的另一个示例。
插件管理
WordPress和October CMS都提供了一个高级插件管理器,可让您查找,安装新插件并将以前安装的插件更新为最新版本-全部通过后端进行。
依赖管理
October CMS使用Composer作为程序包管理器,允许插件在安装过程中下载并安装其依赖项,从而轻松进行开发。
相比之下,WordPress尚未像任何其他PHP依赖项管理器一样正式实施Composer,因为关于WordPress 网站是还是依赖项尚无协议。因此,如果他们需要Composer用于项目,则开发人员需要自己添加它。
随着转向古腾堡(Gutenberg)的发展,NPM已成为首选的JavaScript依赖项管理器,流行的开发人员工具也依赖于它,并且客户端库作为独立的软件包不断发布。在NPM注册表中。
与数据库的交互
WordPress提供了一些功能,可从数据库中获取数据(例如,get_posts)并存储数据(例如,wp_insert_post和wp_update_post)。检索数据时,我们可以传递参数以进行过滤,限制和组织结果,以指示是否应将结果作为类的实例或作为属性的数组进行传递。当函数不能完全满足我们的要求时(例如,当我们需要执行INNER时) JOIN与一个用户表),我们可以直接通过全局变量$ wpdb查询数据库。在创建具有自定义帖子类型的插件时,代码很可能会执行自定义SQL查询以在自定义表中检索和/或存储数据。因此,WordPress试图在第一阶段通过通用功能提供对数据库的访问,而在第二阶段尝试通过低级数据库访问。
十月份,CMS使用了一种不同的方法:不是直接连接到数据库应用程序,而是使用Laravel的Eloquent ORM访问数据库中的数据,并使用类实例(模型)对其进行操作。因此,与数据库的交互也应基于面向对象编程的原理。这是高级访问;只需遵循创建表和建立对象之间关系的规则,该插件就可以在不编写SQL字符串的情况下检索和/或保存数据。例如,下面的代码通过Flight模型从数据库中获取一个对象,更改属性,然后再次保存。
$flight = Flight::find(1);
$flight->name = 'Darwin to Adelaide';
$flight->save();
更新数据模型
WordPress成功的另一个原因(除了不破坏向后兼容性)是其数据库的体系结构。。它旨在允许应用程序随时间增长。此目标是通过元属性(即可以随时自由添加到数据库对象的属性)实现的。这些属性不是存储在相应对象表(wp_posts,wp_users,wp_comments或wp_terms)的列中,而是存储在相应元表(wp_postmeta,wp_usermeta,wp_commentmeta或wp_termmeta)中的一行,并使用INNER JOIN进行检索。因此,虽然检索这些元值比较慢,但它们提供了灵活性。也就是说,应用程序数据模型很少需要从头开始重建体系结构才能实现某种新功能。
October CMS不使用元属性,但可以存储多个任意值。它们不会像序列化的JSON对象一样直接显示为数据库表中的列。否则,当对象需要一些新属性时,我们需要在相应的表中添加一个新列(为此,使用了前面提到的User Plus和User Plus +插件)。要更新应用程序的数据库架构,October CMS依赖Laravel 迁移,这是遵循该架构的指令集(例如添加或删除列,重命名索引等等)。它们在软件更新时执行,例如,在安装新版本的插件时执行。
无头功能
WordPress和October CMS均可自主使用。也就是说,我们可以将CMS视为一种内容管理系统,该内容管理系统使内容可以通过API进行访问,允许您在客户端上显示网站并可以支持其他应用程序,例如移动应用程序。的确,随着Gutenberg内容编辑器本身将WordPress视为无头CMS,WordPress一直在稳步走向无头。结果,Gutenberg也可以与任何其他CMS一起使用,例如Drupal Gutenberg (已经存在Gutenberg实现和CMS October-。注意Trans ..)。
无头系统需要实现某种API来返回数据,例如REST或GraphQL。 WordPress通过WP REST API支持REST ,提供沿预定义路由/ wp-json / wp / v2 / ...的端点; October CMS通过RESTful插件和API Generator支持REST ,这使您可以创建自定义终结点,并因此将版本控制作为终结点URL的一部分来支持,并且可以提供更好的针对机器人的保护。 WordPress还通过WPGraphQL支持GraphQL ,但是October CMS没有。
重要的是,无头系统应提供有效的内容管理功能。正如我们已经提到的,WordPress具有健壮的数据库体系结构,可提供许多数据对象(用户,帖子和用户帖子,页面,类别,标签和自定义分类法,注释)。它们可用于模拟一个良好的应用程序,用于扩展这些数据对象的元属性(允许应用程序相应地更新其数据模型且无重大更改),还可以使用高级自定义字段插件来填补在数据对象之间建立关系的空白。另外,VersionPress插件使用Git启用对数据库内容的版本控制。也就是说,WordPress有利于内容管理。
October CMS可以排除数据库并像平面文件系统一样工作,或者具有数据库并像混合文件一样工作,将页面内容存储为静态文件和博客文章到数据库中。因此,内容不是集中的,但是它需要一种不同的方法来管理它。例如,尽管我们可以使用Git来对控制页面进行版本控制,但本身不支持数据库版本控制。这个问题的解决方案是填补通过数据学派作为代码,可以在部署期间进行版本控制和执行。此外,October CMS不提供带有预定义数据对象的内置数据库模型,该模型可以满足大多数应用程序的需求。因此,要实现其数据模型,应用程序很可能需要单独开发,这需要更多工作。另一方面,它可以更有效(例如,使用WordPress meta属性中的INNER JOIN从列访问属性比从另一个表中的行访问速度更快)。
CLI支持
WordPress和October CMS都可以使用命令行界面(CLI)通过控制台进行交互:在WordPress中,这是通过WP-CLI完成的,在十月CMS中是通过Laravel 的Artisan完成的。除了Laravel命令之外,October CMS还实现了一些本机命令,用于系统更新,数据库迁移等。这些工具使浏览器外部的网站访问非常方便,例如用于测试。
代管
为WordPress网站找到托管服务提供商没有问题。考虑到WordPress的市场份额,有数十个甚至数百个供应商相互竞争,这是一个非常活跃的市场。唯一的问题是根据所有报价为特定站点找到最合适的提供商。毕竟,它们可以在价格,质量,类型,带宽和存储容量,客户支持,位置,硬件更新频率以及其他条件上有所不同,我们可以根据这些条件主要通过比较它们的评论来进行导航。
尽管事实上10月份CMS的托管服务提供商并不多,但仍有许多托管提供商提供其服务,因此您可以比较它们并选择合适的提供商。他们中的许多人都是October CMS的合作伙伴,很容易在搜索引擎中找到其他人,但是由于我还没有找到一篇独立的评论或比较性文章,因此选择最合适的人会有些困难。
市场,生态系统和价值
商业WordPress生态系统的价值为每年100亿美元。这证明了通过提供WordPress产品和服务(例如网站开发,托管,主题和插件开发,支持,安全性等)能够赚钱的大量人员和公司。确实,它是如此之大以至于甚至显得有些slightly肿,从某种意义上说,您经常可以找到解决同一问题的不同插件,无法正常工作或多年未更新的插件以及彼此相似的主题。
但是,在创建新站点时,生态系统的规模和多样性也意味着我们更有可能找到至少一个实现每个必需功能的插件,从而为我们省钱而不必自己开发功能。可自定义主题的存在使您可以以最小的努力来创建具有相当独特设计的网站。因此,很容易以不到100美元的价格启动并运行WordPress网站,从而使该CMS成为任何预算项目的合适选择。
他相对较新,只有五岁(已经六岁了。),OctanCMS在生态系统和市场规模方面肯定落后于WordPress,但它正在稳步增长。目前,其市场具有600多个插件和几个主题(截至2020年6月,已经发布了900多个插件和大约200个主题。-大约翻译)。在插件方面,October CMS团队要求社区努力创建具有其他功能尚未提供的原始插件。
因此,尽管600个以上的插件不是很多,但它们至少提供600多个不同的功能。也就是说,尽管没有办法在多个供应商之间进行选择,但是我们可以预期该网站的基本典型需求(例如博客,评论,论坛,社交媒体集成,电子商务等)将被关闭。另外,由于October CMS的创建者亲自检查了所提供的所有插件并根据质量建议对它们进行了评估,因此我们可以预期这些插件将按预期运行。
另一个优点是,十月份的插件可以包含Laravel软件包中的项目(尽管并非所有插件都与十月份兼容)至少没有黑客)。但是关于主题的建议很少,也就是说,我们很可能必须制定自己的主题,为此任务雇用一名开发人员。十月CMS主题很可能是自定义开发,因为主题和插件不是完全分开的,这使得易于替换的主题市场更加难以创建。但这是一个临时性的问题:释放此功能后,可以将页面存储在数据库中,并且主题的交换不应违反该功能。
我认为,由于主题和插件较少,因此在OctoberCMS上创建简单网站的成本要比在WordPress上创建类似网站的成本更高。但是对于复杂的站点,最佳的十月体系结构(面向对象的编程范例和“模型-视图-控制器”)使软件更易于维护,因此可能更便宜。
社区
成为WordPress社区的一员并能够访问它是使用WordPress的最令人信服的原因之一。这不仅是由于规模(它提供了世界上几乎所有网站的三分之一,很多利益相关者都与WordPress相关联,而且其社区非常庞大),还在于多样性。 WordPress社区包括来自不同行业的人员-开发人员,营销人员,设计师,博客作者,卖家等,来自各个洲和国家/地区的人会说多种语言,这些语言来自不同的社会和经济背景,背景,残障人士或没有他们,代表公司,非营利组织和政府组织等。因此,无论我们面临什么问题,都有可能某人能够在以下方面帮助您:支持论坛。对WordPress的贡献也非常简单:Make WordPress团队将对支持不同项目(可访问性,设计,国际化以及许多其他项目)感兴趣的利益相关者聚集在一起,并组织他们如何以及如何定期进行交流-主要是通过您专用的Slack聊天。
另外,WordPress社区是真实而有形的:它不仅存在于Internet上,而且在WordCamps以及世界各地的其他聚会中离线聚集。2018年在48个国家/地区举办了145个WordCamp,共售出45,000张门票,并与687个小组进行了5,400次会议。因此,附近可能有一个本地小组,每个人都可以加入该小组寻求帮助,学习如何使用该平台,定期学习并教别人。从这个意义上讲,WordPress不仅是CMS,更重要的是它是人。因此,永远不要仅仅因为其技术特性而决定放弃WordPress,考虑它的社区也很重要。
十月的CMS社区有时比WordPress社区更小,种类也更少,尽管随着它的受欢迎程度稳步增长。十月提供了一个支持论坛您可以在哪里寻求帮助,但是他不是很活跃。还有一个Slack聊天 (此刻正式冻结,社区正在转移到Discord-大约翻译)。该聊天非常活跃,并且定期检查October的创始人以确保所有请求均得到正确解决。这次聊天是获得有关使用October的一些简单建议和生活技巧的绝好机会,但它主要是针对开发人员的:没有可访问性,设计,国际化和WordPress等其他主题的渠道。至少现在。目前没有关于10月CMS的会议,但是有Laracon -Laravel社区的会议。
维护者和项目管理政策
我们是否可以确定该软件将持续很长时间,并且如果我们决定今天开始该项目,那么将来就不必切换到另一个平台了吗?有多少人参与软件开发?谁决定前进的方向?
世界上有三分之一的站点都由WordPress提供支持,并且有足够的利益相关者为该软件的开发做出了贡献,因此您不必担心站点将停止服务。但是,WordPress中存在有关治理模型的内部讨论,许多社区成员表示,有关WordPress开发方向的决定是由运营WordPress.com的Automattic单方面做出的。。一个关键的里程碑是决定推出古腾堡(Gutenberg)的决定,许多贡献者对此表示反对。古腾堡显然在开发和发布阶段缺少项目管理人员的沟通。结果,社区中的许多人都在质疑WordPress创始人和Automattic首席执行官Matt Mullenweg历来考虑的“软独裁者”的作用,并正在探索不同的治理模型,以找到更适合WordPress未来的模型。这个追求是否会导致任何改变还是现状仍将拭目以待。
关于十月份CMS的发展方向的决定主要由创始人Alexei Bobkov和Samuel Georges以及开发商和社区经理Luke Towers做出。。October CMS还不熟悉像管理这样的奢侈问题:现在,他们更加关注如何使项目可持续发展以及如何使项目为开发团队创造收入。
文献资料
WordPress文档并不全面,但是可以做得很好。但是,如果您考虑到所有来源的有关WordPress的所有文档,例如著名站点(Smashing Magazine,CSS技巧等),专门站点(WPShout,WPBeginner等),个人博客,在线课程,没有涉及到使用WordPress的任何方面。
在10月的CMS中,第三方资源提供的文档与WordPress的情况相距甚远,但是其自己站点上的文档非常丰富,绝对足以开始开发。十月创始人定期添加新文档。我个人喜欢的方面之一是将Laravel文档复制到所有相关问题的October文档中,因此读者无需填写空白即可猜测十月份的领域是什么,什么是Laravel。
但是也有缺点。October文档使用了从Laravel衍生的术语,例如中间件,服务容器,Facade和合同,但没有充分解释它们的含义。因此,先阅读Laravel文档可能会有所帮助。幸运的是,它是广泛而直接的,并且Laravel的截屏视频-Laracasts不仅是学习Laravel的重要资源,也是学习Web开发的又一绝妙资源。
输出量
我决定通过将WordPress与类似的CMS进行比较,找出对寻找WordPress替代品的开发人员有吸引力的功能。它应该是一个基于PHP的免费开源CMS,并在多个社区的支持下创建动态内容。在满足这些条件的CMS中,我选择了October CMS进行比较,因为我已经对此有所了解,并且因为我喜欢Laravel提供的干净模块化方法。我认为这是网站开发的崭新面貌。
在本文中,我没有尝试选择赢家,而是简单地分析了选择一个或另一个CMS的合理时间,并比较了它们的优缺点。没有“最佳”的CMS,只有最适合特定情况的CMS。同样,任何希望CMS与特定团队和特定预算一起用于特定项目的人都需要比较所有提案,以找出最适合特定项目的提案。重要的是,不要像我在本文中那样局限于几个CMS,而要给他们一个机会。
作为开发人员,我喜欢我在十月CMS中看到的内容,尤其是因为它允许您创建通过Laravel提供的模块化应用程序。我会考虑将此CMS用于新站点。但是,在撰写本文时,我也重新发现了WordPress。由于WordPress非常流行,因此遭到了很多批评,主要是关于过时的代码库以及最近推出的Gutenberg。但是,WordPress具有一些很棒的功能(例如可伸缩的数据库模型),这些功能很少受到赞扬,但也应予以考虑。最重要的是,不应仅从技术角度看待WordPress:社区和生态系统的规模使WordPress比其他选择高出一两个级别。简而言之,某些项目可以从使用WordPress中受益。而其他人最好使用October CMS或其他平台。
最后,我想指出,无论您是否决定使用此特定CMS,研究CMS的工作原理本身都是非常有用的。例如,我已经从事WordPress多年,而对October CMS的了解又是一个新话题,它教会了我很多在WordPress中没有碰到的东西(例如具有PHP标准指南)。现在由我决定更改CMS还是保留WordPress。