Детальное сравнение WordPress и October CMS

Автор оригинала: Leonardo Losoviz
  • Перевод
Меня зовут Павел Ловцевич, я сооснователь и CTO веб-студии LOVATA. Одной из основных платформ, на которой мы разрабатываем проекты для наших заказчиков, является October CMS, с которой мы работаем уже почти 6 лет.

Эта CMS несколько опередила свое время и не сразу снискала заслуженную популярность. Однако в последние пару лет она переживает своего рода ренессанс, свидетельством чему является множество упоминаний о ней в англоязычной среде разработчиков.

С целью поддержать эту волну данным переводом я начинаю серию статей об этой прекрасной CMS.


Многие сейчас ищут альтернативы WordPress. В этой статье мы сравним его с October CMS и рассмотрим важные проблемы, которые нужно учитывать при поиске подходящей CMS для ваших проектов.

Три месяца назад (Оригинальная статья была написана весной 2019 года. — Прим. перев.) WordPress выпустила Gutenberg, чтобы расширить возможности редактирования контента по умолчанию. что побудило многих людей, недовольных этим изменением, искать альтернативные CMS. Некоторые пользователи предпочли выпустить форк «догутенберговской» WordPress. Но это не имеет особого смысла, поскольку WordPress за 15 лет существования накопила колоссальный технический долг. Если бы я искал альтернативу WordPress, я бы старался найти зрелую платформу, построенную на современных технологиях.

В этой статье мы сравним WordPress с похожей, но более современной October CMS, по многим техническим и нетехническим параметрам. Цель не в том, чтобы убедить вас использовать WordPress или перейти на October CMS. Я постараюсь показать, какие критерии необходимо учитывать при смене платформы. Такое же сравнение можно и нужно провести и с другими платформами, прежде чем принимать взвешенное решение.

Почему October CMS


Я узнал об October, когда она стала лучшей flat-file CMS 2018 года. После чего я начал изучать этот инструмент и потратил прилично времени, погружаясь в него как с точки зрения пользователя, так и разработчика. Вскоре я понял, что она является весьма подходящим объектом для сравнения. Я выбрал именно ее, а не альтернативные варианты вроде Grav, Statamic, ButterCMS, Joomla, Drupal, Jekyll, Hugo и т.д. И вот основные причины:

  • Я понял, как October CMS работает (в отличие от Grav);
  • Она бесплатная и опенсорсная (в отличие от Statamic и ButterCMS);
  • В свои пять лет ее можно считать относительно новой (в отличие от Joomla и Drupal);
  • Она содержит динамическую генерацию контента и работает на PHP (в отличие от Jekyll и Hugo).

Я считаю, что October это хороший вариант, потому что она основана на Laravel — фреймворке, используемом для создания современных веб-приложений. За семь лет существования он завоевал признание разработчиков, о чем свидетельствует обширное сообщество и экосистема. И разработка на этом фреймворке заметно контрастирует с написанием кода для WordPress. Если в последнем случае это в основном процедурное программирование, то в Laravel оно явно объектно-ориентированное.

В чем разница?


Ниже я сравню WordPress и October по разным категориям и выделю плюсы и минусы каждой из них. Но я не буду выбирать победителя, поскольку цель статьи не в этом. Да и, в любом случае, не существует «более хорошей» или «самой лучшей» CMS. У каждой из них свои сильные и слабые стороны, что делает их более или менее подходящими для определенной задачи, проекта, компании или команды. Кроме того, для проекта может быть полезно использование нескольких CMS, например, использование одной для управления данными и другой для рендеринга страниц. Только вам решать, какая из десятков систем лучше всего подходит для вашей задачи.

В этой статье нельзя сделать окончательные выводы, поскольку мы рассматриваем здесь один из многих вариантов. Например, мы также можем найти в сети сравнения вроде «WordPress против Drupal против Joomla», «WordPress против Static Site Generators» или даже «WordPress против Medium». Поскольку ни одна из этих статей не даёт полной картины, то ни одно из этих сравнений не может быть и не должно рассматриваться как окончательное. Итак, давайте сравним.

Философия и целевая аудитория


Неслучайно на WordPress сделан почти каждый третий веб-сайт. С момента своего создания она стремилась быть максимально удобной для пользователя, и у неё это неплохо получалось. WordPress устраняла потенциальные трудности в использовании для всех пользователей вне зависимости от их уровня образования и технического бэкграунда. Основатель WordPress Мэтт Мулленвег выразил мнение, что девиз WordPress «Демократизация публикаций» для нынешней эпохи означает следующее:

«Люди любого происхождения, интересов и способностей должны иметь доступ к программному обеспечению, которое позволяет им выражать себя в открытой сети и владеть своим контентом».

WordPress проста в использовании для всех, и её инклюзивность подтверждается и на стороне разработки: нередко можно встретить людей, не имеющих опыта программирования (таких как маркетологи, дизайнеры, блогеры, продавцы и т. д.), которые успешно запускают свои сайты. WordPress ориентирована на пользователя, и потребности пользователей тут приоритетнее потребностей разработчиков.

October CMS наоборот больше ориентирована на разработчика, что было чётко понятно с момента релиза:

«October CMS выдвигает смелую, но очевидную гипотезу: клиенты не создают веб-сайты, их делают разработчики. Роль клиента заключается в управлении сайтом и пояснении его бизнес-требований. Веб-разработчик и сама индустрия вращаются вокруг посредничества этих факторов».

По словам её основателей, миссия October CMS заключается в том, чтобы «доказать, что создание сайтов — это не очень сложно». October CMS, основанная на Laravel, станет хорошей отправной точкой для написания многократно используемого модульного кода. Он позволяет разрабатывать грамотно спроектированные приложения, которые будет легко кастомизировать и поддерживать в долгосрочной перспективе. Такие приложения можно поддерживать и полностью настраивать, не используя обходные приёмы («костыли») — как раз то, что привлекает серьезных программистов.

October CMS также может обеспечить отличное взаимодействие с пользователем, однако, она не так проста и удобна, как WordPress. Пользователям придётся разобраться, как работают определённые функции, прежде чем использовать их. Например, чтобы разобраться, как встроить форму через плагин, придётся прочитать длинную инструкцию, что сложнее, чем интуитивно понятная функция перетаскивания, которая есть в нескольких плагинах форм в WordPress.

Установка


WordPress можно установить за пять минут, хотя многие отмечают, что с учётом всех плагинов обычно на установку нужно от 15 минут. Кроме того, WordPress предлагает функцию Multisite, которая позволяет создавать сеть из нескольких виртуальных сайтов в рамках одной установки. Эта функция позволяет агентству легко администрировать сайты нескольких клиентов.

Установка October CMS тоже очень простая: сама установка Wizard занимает даже меньше пяти минут, а если вы устанавливаете её через консольную установку, то ещё быстрее. Последнее можно сделать, просто перейдя в целевой каталог и затем выполнив команду

curl -s https://octobercms.com/api/installer | php 

После этого нужно ввести конфигурацию базы данных, в противном случае она ведет себя как flat-file CMS. Как только установка будет завершена, у нас будет полностью функционирующий сайт, но пока достаточно простой. Если добавить время для установки и настройки необходимых плагинов, можно рассчитывать, что это займет не меньше 15 минут.

image

Безопасность


Не все считают WordPress безопасной из-за большого количества постоянно обнаруживаемых уязвимостей. Это вынуждает пользователей всё время обновлять саму CMS и все установленные плагины, чтобы избежать угроз безопасности. Среди основных проблем — поддержка старых версий PHP, которые больше не поддерживаются сообществом разработчиков PHP (WordPress сейчас поддерживает PHP 5.2.4, в то время как последняя полностью поддерживаемая версия PHP — 5.6). Эта проблема должна быть решена в апреле 2019 года, когда WordPress официально начнет поддерживать PHP версии 5.6 и выше (Проблема уже решена. — Прим. перев.).

Кроме того, угроза безопасности WordPress не столько в её внутренних проблемах, сколько из-за высокой популярности, что делает систему целью для хакеров. Однако это работает и в обратную сторону: повсеместное распространение WordPress означает, что её команда безопасности должна серьёзно относиться к своей работе, постоянно искать и исправлять уязвимости, в противном случае рискуют до трети сайтов в сети интернет. Ставки слишком высоки.

У October CMS, напротив, нет репутационных проблем с безопасностью. Однако, поскольку всего 27 000 активных сайтов сделаны на October (сравним с миллионами на WordPress), мы не можем оценивать обе системы на равных. Тем не менее, команда разработчиков October CMS серьёзно относится к безопасности. Об этом свидетельствует значение the Wizard installation prompt to input the CMS backend URL, которое по умолчанию установлено как / backend, но может быть изменено на что-то ещё, чтобы хакерам было сложнее ориентироваться на сайте. Изменение URL-адресов входа и бэкенда WordPress с /wp-login.php и / wp-admin соответственно, напротив, возможно только через плагин. К тому же, October CMS может функционировать как flat-file CMS (т.е. без базы данных) и избегать уязвимостей, связанных с БД, таких как SQL-инъекции.

Стек технологий


Как WordPress, так и October CMS работают в традиционном стеке LAMP: Linux, Apache, MySQL и PHP. Однако обязателен только PHP: также можно использовать Windows, Nginx, MariaDB и т. д. October CMS может вести себя как flat-file CMS, то есть может обходиться без базы данных, правда, в ущерб функциональности (например, пропадают сообщения в блогах). Единственное, что гарантированно остаётся — функциональность страниц (pages), которая считается базой для создания и публикации контента и идёт в качестве основной функции.

Что касается языкового стека, то сайты, сделанные на WordPress и October CMS, основаны на HTML, CSS и JavaScript (обратите внимание, что PHP используется для генерации HTML). October CMS также позволяет легко использовать файлы LESS и SASS.

Парадигма программирования


WordPress использует принцип функционального программирования, основанный на вычислении путём вызова функции, которая не имеет состояния приложения. Несмотря на то, что разработчикам WordPress не обязательно придерживаться функционального программирования (например, для кодирования своих тем и плагинов), эта парадигма досталась основному коду системы для сохранения совместимости с предыдущими версиями на протяжении 15 лет. Это было одним из столпов успеха WordPress, однако это влечёт за собой накопление технического долга.

С другой стороны, October CMS использует императивную парадигму программирования, основанную на вычислении путем манипулирования состоянием объектов. October CMS основана на Laravel — фреймворке, полностью построенном на принципах объектно-ориентированного программирования. Эти принципы позволяют создавать модульные приложения на основе концепций Model-View-Controller для отделения пользовательского интерфейса от данных приложения, Dependency Injection для настройки зависимости классов, а также разделения интерфейса для определения основных сервисов, предоставляемых фреймворком.

Хуки


Программирование в WordPress можно охарактеризовать как «Разработка через хук». Хук — это механизм, который позволяет изменить поведение или значение по умолчанию и даёт возможность другому коду исполнять соответствующие функции. Хуки запускаются через «экшены», которые позволяют выполнять дополнительные функции, и «фильтры», которые позволяют изменять значения.

Хуки, которые широко распространены в кодовой базе WordPress — один из моих любимых аспектов программирования в WordPress. Они позволяют плагинам взаимодействовать друг с другом, ядром или темой, обеспечивая базовую поддержку аспектно-ориентированного программирования.

Хорошая новость в том, что Laravel (и, соответственно, October CMS) также поддерживает концепцию хуков, которая называется «События». Они обеспечивают простую реализацию концепции наблюдателя, позволяя коду подписываться и слушать события, которые происходят в приложении, чтобы реагировать по мере необходимости. События позволяют разбить сложную функциональность на компоненты, которые можно устанавливать независимо. При этом они будут взаимодействовать друг с другом, что позволяет создавать модульные приложения.

Зависимость от JavaScript-библиотек


Последняя версия WordPress по умолчанию включает в себя Gutenberg основанный на React.js, для создания контента. Следовательно, разработка WordPress теперь по большей части основана на JavaScript (преимущественно через React). Хотя возможно и использование других фреймворков и библиотек, о чём свидетельствует Elementor Blocks для Gutenberg, основанные на Marionette.

Кроме того, WordPress всё ещё основана на Backbone.js (для Media Manager) и jQuery (устаревший код), однако ожидается, что зависимость от этих библиотек исчезнет, ​​поскольку Gutenberg становится новым умолчанием.

October CMS зависит от jQuery, которую она использует для реализации своего опционального AJAX-фреймворка для загрузки данных с сервера без обновления страницы браузера.

Страницы, темы, плагины


Как WordPress, так и October CMS рассматривают страницу как базовую единицу для создания и публикации контента (в случае WordPress, в дополнение к постам). Обе они поддерживают изменение внешнего вида сайта с помощью тем и позволяют устанавливать и расширять функциональные возможности с помощью плагинов.

Несмотря на то, что концепции одинаковы в обеих CMS, есть несколько различий в реализации. Как следствие, ведут они себя немного по-разному.

В WordPress страницы определяются как содержимое и хранятся в базе данных. Поэтому контент страницы может быть создан только через CMS (например, в админке) и переключение с одной темы на другую не делает существующую страницу недоступной. Благодаря этому, весь процесс получается довольно слаженным.

В October CMS, напротив, страницы представляют собой статические файлы, хранящиеся в каталоге темы. Плюсом этого архитектурного решения является то, что содержимое страницы можно создавать из внешнего приложения, например, текстовых редакторов вроде Sublime или Visual Studio Code. С другой стороны, при переключении с одной темы на другую необходимо вручную воссоздать или скопировать страницы из текущей в новую тему, иначе они исчезнут.

Важно отметить, что October CMS разрешает маршрутизацию по страницам. Поэтому страницы используются не только как контейнеры для контента, но и для функциональности. Например, плагин для ведения блога зависит от страницы для отображения списка сообщений в блоге по выбранному URL-адресу, ещё одной страницы для отображения сообщения в блоге по другому выбранному URL-адресу и так далее. Если какая-либо из этих страниц исчезнет, ​​связанная функциональность из плагина станет недоступной и этот URL-адрес выдаст ошибку 404. Следовательно, в October CMS темы и плагины CMS не полностью отделены и переключать темы нужно аккуратно.

image

Функциональность «из коробки» и плагины


WordPress предлагает минимальную базовую функциональность, которую можно увеличивать с помощью плагинов. Он придерживается «правила 80–20», чтобы решать, включать те или иные функциональные возможности в своё ядро или нет.

Если они приносят пользу 80% пользователей, то их включают, в противном случае они реализуются через плагины. При установке плагинов на сайт они могут привести к раздуванию кода, если их установлено слишком много. Плагины также могут плохо работать друг с другом, выполнять похожий код или загружать похожие ресурсы, что приводит к неоптимальной производительности. Поэтому, хотя запускать сайт WordPress относительно просто, обслуживать его и сохранять оптимальное и производительное состояние при добавлении новых функций это более сложная задача.

image

October CMS тоже пытается предложить минимальную базовую функциональность. Даже слишком: единственная гарантированная функция — создание и публикация страниц. Для всего остального нам нужно будет установить один из плагинов. Другими словами, есть всё, что нужно, и ничего лишнего.

Цель ясна: большинство простых сайтов состоят только из страниц, возможно, даже без постов в блоге, пользователей или авторизации. Зачем приложению загружать ресурсы для них, если они не нужны? Как следствие, функциональные возможности для ведения блогов, управления пользователями, перевода и некоторых других функций доступны через официальный маркетплейс.

image

October CMS также включает в себя некоторые функции, которые (хотя они и не всегда нужны) могут значительно улучшить приложение. Например, она предоставляет встроенную поддержку для загрузки медиафайлов в Amazon S3 и доступа к ним через CDN Rackspace. Ещё в ней есть Media Manager, который в основном используется через плагины, например, для добавления изображений в блоге. Страницы также могут использовать Media Manager для встраивания медиа-файлов, однако CMS идёт с разделом Assets для загрузки медиа-файлов для них, что видится более удобным.

Мне кажется, что October CMS позволяет создавать максимально простые приложения, в основном для несложных сайтов. Но могут быть и неприятные последствия. Это может привести к раздуванию кода, так как грань между тем, что нужно, и тем, что нет, очень тонка и её сложно заранее определить в рамках CMS.

Это легко почувствовать, если мы рассмотрим концепцию «пользователя»: в WordPress пользователи и администраторы сайта принадлежат одному и одной и той же сущности user (и мы можем сделать пользователя администратором через роли и привилегии). В October CMS два этих понятия реализованы отдельно: «из коробки» доступна функциональность администратора, который может авторизоваться в админке и изменять настройки, в то время как зарегистрированные пользователи реализуются через отдельный плагин. У этих двух типов пользователей разный процесс входа в систему и разные таблицы БД для хранения данных. Таким образом, возможно, нарушается принцип DRY (don’t repeat yourself).

Эта проблема возникает не только в отношении поведения сущности, но и того, какие поля данных она должна содержать. Например, должны ли поля данных пользователя на сайте быть определены заранее? Обязательно ли поле с номером телефона? А поле URL в Instagram, учитывая, что Instagram стал очень популярным относительно недавно? А если мы создаём профессиональный веб-сайт, не использовать ли вместо Instagram поле для LinkedIn? Эти решения однозначно зависят от ситуации и не могут быть приняты ни CMS, ни плагином.

Плагин October CMS под названием User реализует систему пользователей, но без наличия кастомных полей. А плагин User Plus добавляет несколько дополнительных кастомных полей. Если их недостаточно — есть плагин User Plus+, который добавляет еще больше кастомных полей. В какой момент пора остановиться? (Мы в LOVATA разработали собственный плагин Buddies, который решил эту проблему и позволяет создавать любое количество любых кастомных полей. — Прим. перев.)

Другая проблема — если нет места для добавления новых возможностей к сущности, это приводит к созданию другого, очень похожего объекта, просто для поддержки этих требуемых возможностей. Например, в October CMS по умолчанию есть функция создания страниц, а также можно создавать статические страницы через плагин. Их суть одинакова: и страницы, и статические страницы сохраняются в виде статических файлов. Единственное, чем они отличаются (насколько я понимаю) — это то, что статические страницы редактируются с помощью визуального редактора вместо HTML-редактора и их можно добавлять в меню. Мне кажется, только структурные различия вроде сохранения одного объекта в виде статического файла, а другого — в базе данных, могут объяснить создание дополнительного объекта для страницы (для этого есть pull request), но для простой функциональности, которая есть сейчас, это приводит к раздуванию кода.

Таким образом, October CMS позволяет создать веб-приложения очень бережливым и эффективным способом, например, с удалением базы данных, когда она не нужна. Но приложение также может стать слишком раздутым, поскольку разработчики вынуждены реализовывать несколько решений для похожих объектов, что может усложнять использование («Мне нужно использовать страницу или статическую страницу?»).

Поскольку ни WordPress, ни October CMS не нашли идеального решения для избежания раздувания, нужно тщательно проектировать любую архитектуру приложения, чтобы избежать проблем в будущем.

Создание контента


Gutenberg привносит два новшества в WordPress: он использует компоненты в качестве сущности для создания сайтов, что даёт несколько преимуществ по сравнению с BLOB-кодированием в HTML и вводит новую сущность «блок», который после завершения фазы 2 Gutenberg в 2019 (Уже реализовано. — Прим. перев.). Он будет предлагать унифицированный способ включения контента в сайт, что позволит упростить работу пользователя по сравнению с хаотичным процессом добавления контента с помощью шорткодов, TinyMCE, меню, виджетов и так далее.

image

Поскольку блоки Gutenberg могут создавать и сохранять статический HTML как часть постов блога, установка нескольких блоков Gutenberg не обязательно приводит к раздуванию кода на сайте на стороне пользователя. Она может ограничиваться неудобствами на стороне администратора. Следовательно, Gutenberg можно считать хорошим подходом для создания сайтов модульным способом с простым, но мощным пользовательским интерфейсом для создания контента. Возможно, самым большим недостатком является необходимость изучать React, что не очень просто.

Если основная единица создания контента в WordPress это компоненты React, то October CMS основана на идее, что для создания сайтов достаточно знать старый добрый HTML. Действительно, при создании страницы мы работаем с обычным редактором HTML (Markup).

image

Если бы страница была исключительно статическим HTML, не было бы необходимости в CMS. Но страницы (pages) в October CMS написаны с использованием шаблонов Twig, которые скомпилированы в простой оптимизированный PHP-код. Они могут основываться на лэйаутах (layouts), которые содержат повторяющиеся элементы, такие как header и footer, могут вызывать плейсхолдеры (placeholders), который определяются в лэйаутах для обеспечения возможности настройки контента на странице, а также могут включать паршелы (partials), которые по сути являются повторно используемыми фрагментами кода.

Кроме того, страницы могут содержать контентные блоки (content), которые представляют собой файлы форматах Text, HTML или Markdown, которые можно редактировать отдельно. Они также могут содержать компоненты (component), которые являются функциональностью, реализованной с помощью плагинов. И, наконец, если HTML недостаточно и нам нужно создавать динамический код, можно добавить функции PHP.

Весь редактор — это HTML. Нет текстовых полей с TinyMCE для визуального редактирования контента — по крайней мере, не через интерфейс по умолчанию (эта функциональность отдана на откуп плагинам). Поэтому, можно сказать, что знать HTML обязательно, чтобы использовать October CMS. Кроме того, несколько различных вариантов создания контента (страницы, лэйауты, плейсхолдеры, паршелы, контентные блоки, компоненты и PHP-функции) могут быть очень эффективными, но работать с ними не так просто, как через унифицированный интерфейс блоков WordPress. Всё может усложняться ещё больше, поскольку можно добавлять и другие элементы, например, статические страницы и меню или сниппеты. И у некоторых из них, например, страниц и статических страниц, по-видимому, одинаковые функциональные возможности, что усложняет выбор, что и когда использовать.

Думаю, что, почти любой сможет администрировать сайт на WordPress. А вот October CMS более удобна для разработчиков, чем для пользователя без технического бэкграунда. Поэтому она может нравиться программистам, но людям из других сфер интерфейс может не показаться интуитивно понятным.

Медиа-менеджер


И в WordPress, и в October CMS есть медиа-менеджер, который позволяет без особых усилий добавлять мультимедийные файлы на сайт, поддерживает добавление нескольких файлов одновременно с помощью перетаскивания и отображает изображения в области контента. Они выглядят и ведут себя почти одинаково: единственное явное различие, которое я заметил, в том, что Media Manager для WordPress позволяет встраивать галереи изображений, а Media Manager для October CMS позволяет вручную создавать структуру папок, в которой размещаются загруженные файлы.

image

Но с момента появления Gutenberg медиа-возможности WordPress значительно расширились: теперь можно встраивать видео, картинки и фотогалереи, в отличие от редактора TinyMCE, который предлагает лишь неточную версию того, как это будет выглядеть на сайте. Ещё добавили интересные, но простые в использовании функции, которые продемонстрированы в этом видео.

Интернационализация


Ядро WordPress использует gettext для включения перевода тем и плагинов. Начиная с файла .pot, содержащего все строки для перевода, нам нужно создать файл .po, содержащий их перевод на соответствующий язык. Затем этот файл компилируется в двоичный файл .mo, подходящий для быстрого извлечения перевода. Среди инструментов для выполнения этих задач есть GlotPress (онлайн) и Poedit (скачиваемое приложение). Удобно, что этот механизм также работает в локализации на стороне клиента для Gutenberg.

image

Сейчас у WordPress нет ни одного решения в ядре для перевода контента, и они не будут их предлагать до четвертой фазы Gutenberg (запланированной на 2020 или позже). Пока эта функциональность будет обеспечиваться плагинами, которые предлагают разные стратегии для хранения и управления переведённым контентом. Например, плагины вроде Polylang и WPML хранят каждый перевод в отдельной строке из пользовательской таблицы базы данных. Это удобно, поскольку содержимое не перемешивается, но работает медленнее, так как требует дополнительного внутреннего объединения из двух таблиц при запросе базы данных. Плагин qTranslate X хранит все переводы в одном поле из исходной таблицы базы данных. Так быстрее запрашиваются данные, но из-за смешения контента может сломаться сайт, если отключить плагин. Нам остаётся выбрать стратегию, максимально удовлетворяющую наши потребности.

October CMS поддерживает многоязычность не через ядро, а через плагин, созданный штатной командой. Этот плагин гарантирует безошибочную интеграцию в систему. С функциональной точки зрения он выполняет свою задачу, а вот с точки зрения разработки плагин не совсем идеален.

В WordPress страница — это просто пост с типом поста «страница», и для них существует единый механизм перевода. В October CMS есть объекты «page», «static page» и «blog post». Хоть они и очень похожи, но требуют трех разных реализаций переводов! Контент «page» может включать в себя коды сообщений (например, коды с именем nav.content, header.title и т. д.), каждый из которых содержит свои переводы для всех локалей в виде сериализованного объекта JSON в таблице базы данных rainlab_translate_messages.

Содержимое «static page» создаётся в новом статическом файле для каждой локали, хотя все переведенные URL-адреса для всех локалей хранятся не в соответствующем файле, а в файле языка по умолчанию.

Содержимое «blog post» хранится в виде сериализованного объекта JSON с одной строкой на локаль в таблице базы данных rainlab_translate_attributes, а переведённый URL-адрес хранится с одной строкой на локаль в таблице базы данных rainlab_translate_indexes.

Я не знаю, связана ли эта сложность с тем, как был реализован плагин, или с архитектурой October CMS. В любом случае, это ещё один пример нежелательного раздувания кода при разработке.

Управление плагинами


Как WordPress, так и October CMS предлагают продвинутый менеджер плагинов, который позволяет находить, устанавливать новые плагины и обновлять ранее установленные плагины до последней версии — и всё это через бэкенд.

image

Управление зависимостями


October CMS использует Composer в качестве менеджера пакетов, позволяя плагинам загружать и устанавливать свои зависимости при установке, обеспечивая, таким образом, безболезненную разработку.

WordPress, напротив, официально не внедрила Composer (как и любой другой менеджер PHP-зависимостей), потому что нет соглашения о том, является WordPress сайтом или его зависимостью. Следовательно, если им для проектов нужен Composer, разработчикам нужно добавить его самостоятельно.

С переходом на Gutenberg, NPM стал предпочтительным менеджером зависимостей JavaScript, от него зависит популярный инструментарий разработчика, а клиентские библиотеки постоянно выпускаются в виде автономных пакетов в реестре NPM.

Взаимодействие с базой данных


WordPress предлагает функции для извлечения данных из БД (например, get_posts) и их хранения (например, wp_insert_post и wp_update_post). При извлечении данных мы можем передавать параметры для фильтрации, ограничения и упорядочения результатов, чтобы указать, должен ли результат быть передан как экземпляр класса или как массив свойств и т. д. Когда функция не полностью удовлетворяет нашим требованиям (например, когда нам нужно выполнить INNER JOIN с пользовательской таблицей), мы можем запросить базу данных напрямую через глобальную переменную $wpdb. При создании плагина с пользовательским типом записи код, скорее всего, будет выполнять пользовательские запросы SQL для извлечения и/или сохранения данных в пользовательских таблицах. Таким образом WordPress пытается обеспечить доступ к базе данных через общие функции на первом этапе и низкоуровневый доступ к базе данных на втором этапе.

В October CMS используется другой подход: вместо непосредственного подключения к базе данных приложение использует Eloquent ORM от Laravel для доступа к данным в базе и манипулирования ими с помощью экземпляров классов (Models). Благодаря этому взаимодействие с БД также должно основываться на принципах объектно-ориентированного программирования. Это высокоуровневый доступ; плагин может извлекать и/или сохранять данные без написания строки SQL, просто следуя правилам создания таблиц и установления отношений между объектами. Например, приведенный ниже код извлекает объект из базы данных через модель Flight, изменяет свойство и снова сохраняет его.

$flight = Flight::find(1);
$flight->name = 'Darwin to Adelaide';
$flight->save();


Обновление модели данных


Ещё одной причиной успеха WordPress (помимо того, что она не нарушает обратную совместимость) была архитектура её БД. Она была разработана так, чтобы позволить приложениям со временем расти. Эта цель достигается с помощью мета-свойств, то есть свойств, которые могут быть свободно добавлены в объект базы данных в любой момент. Эти свойства хранятся не в столбце соответствующей таблицы объектов (wp_posts, wp_users, wp_comments или wp_terms), а в виде строки в соответствующей таблице meta (wp_postmeta, wp_usermeta, wp_commentmeta или wp_termmeta) и извлекаются с использованием INNER JOIN. Следовательно, несмотря на то, что извлечение этих мета-значений происходит медленнее, они обеспечивают гибкость. То есть, модель данных приложения редко нуждается в перестроении архитектуры с нуля, чтобы реализовать какую-то новую функциональность.

image

October CMS не использует мета-свойства, но может хранить несколько произвольных значений. Они не отображаются напрямую как столбцы в таблицах базы данных, как сериализованный объект JSON. В противном случае, когда объекту требуется какое-то новое свойство, нам нужно добавить новый столбец в соответствующую таблицу (для этого используются плагины User Plus и User Plus +, упомянутые ранее). Чтобы обновить схему базы данных приложения, October CMS полагается на миграции Laravel, которые представляют собой наборы инструкций для выполнения по схеме (такие как добавление или удаление столбца, переименование индекса и т. д.). Они выполняются при обновлении программного обеспечения, например, когда устанавливается новая версия плагина.

Headless-возможности


Как WordPress, так и October CMS могут использоваться автономно. То есть, мы можем рассматривать CMS как систему управления контентом, которая делает контент доступным через API, позволяет отображать веб-сайт на стороне клиента и может поддерживать другие приложения, например, мобильные. Действительно, WordPress неуклонно движется в сторону headless, поскольку редактор контента Gutenberg сам рассматривает WordPress как headless CMS. Как следствие, Gutenberg также может работать с любой другой CMS, как видно на примере Drupal Gutenberg (Уже существует реализация Gutenberg и для October CMS. — Прим. перев.).

Headless-системе нужно реализовать какой-либо API для возврата данных, например, REST или GraphQL. WordPress поддерживает REST через WP REST API, предоставляя эндпойнты по заранее определенному маршруту / wp-json / wp / v2 / ...; October CMS поддерживает REST через плагины RESTful и API Generator, которые позволяют создавать настраиваемые эндпойнты и, как следствие, поддерживают управление версиями как часть URL-адреса эндпойнта и могут обеспечить лучшую защиту от ботов. WordPress также поддерживает GraphQL через WPGraphQL, а вот у October CMS нет его реализаций.

Что немаловажно, headless-система должна предлагать эффективные возможности управления контентом. Как мы уже упоминали, у WordPress есть надёжная архитектура базы данных, которая предлагает множество объектов данных (пользователи, посты и пользовательские посты, страницы, категории, теги и пользовательские таксономии, комментарии). По ним можно неплохо смоделировать приложение, мета-свойства для расширения этих объектов данных (что позволяет приложению обновлять свою модель данных соответствующим образом и без значительных изменений), а также с помощью плагина Advanced Custom Fields заполнить пробел в построении отношений между объектами данных. Кроме того, плагин VersionPress позволяет осуществлять контроль версий содержимого базы данных с помощью Git. То есть, WordPress хорошо подходит для управления контентом.

October CMS может исключать базу данных и вести себя как плоская файловая система, или иметь базу данных и вести себя как гибрид, сохраняя содержимое страниц в виде статических файлов и постов в блоге в базе данных. Поэтому контент не централизован, а для управления им нужен другой подход. Например, хотя мы можем использовать Git для управления версиями страниц, сама по себе поддержка контроля версий в БД отсутствует. Решение этой проблемы — заполнение данных в базе через сидеры, которые, будучи кодом, могут быть поставлены под контроль версий и выполнены при развертывании. Кроме того, October CMS не предлагает встроенную модель БД с предопределенными объектами данных, которая могла бы удовлетворить потребности большинства приложений. Следовательно, для реализации своей модели данных, приложению скорее всего потребуется индивидуальная разработка, а это больше работы. С другой стороны, это может быть более эффективно (например, доступ к свойству из столбца быстрее, чем из строки в другой таблице посредством INNER JOIN, в мета-свойствах WordPress).

Поддержка CLI


И с WordPress и с October CMS можно взаимодействовать через консоль с помощью Command Line Interface (CLI): в WordPress это делается через WP-CLI, а в October CMS через Artisan от Laravel. В дополнение к командам Laravel, October CMS реализует несколько собственных команд для обновления системы, переноса базы данных и т.д. Эти инструменты делают доступ к сайту вне браузера очень удобным, например, для тестирования.

Хостинг


Найти поставщика услуг хостинга для сайта на WordPress не проблема. Учитывая долю рынка WordPress, существуют десятки, если не сотни поставщиков, конкурирующих друг с другом, это очень динамичный рынок. Единственная проблема заключается в поиске наиболее подходящего провайдера для конкретного сайта на основе всех предложений. Ведь они могут варьироваться по цене, качеству, типу, пропускной способности и объёму хранилища, поддержке клиентов, местоположению, частоте обновления оборудования и других критериев, по которым мы можем ориентироваться в основном через обзоры, которые их сравнивают.

Несмотря на то, что для October CMS их не так много, есть ряд хостинг-провайдеров, предлагающих свои услуги, так что можно сравнить их и выбрать подходящего. Многие из них — партнёры October CMS, другие легко отыскать в поисковике, но, поскольку я не нашел ни одного независимого обзора или сравнительной статьи, выбрать наиболее подходящие будет чуть сложнее.

Маркетплейс, экосистема и стоимость


Коммерческая экосистема WordPress оценивается в $10 млрд в год. Это свидетельствует об огромном количестве людей и компаний, которые смогли заработать, предлагая продукты и услуги WordPress, такие как создание сайтов, хостинг, разработка тем и плагинов, поддержка, безопасность и другие. Действительно, она настолько большая, что даже слегка раздута, в том смысле что очень часто можно найти разные плагины, решающие одну и ту же проблему, плагины, которые не работают или не обновлялись годами, и темы, которые похожи друг на друга.

Тем не менее, при создании нового сайта размер и разнообразие экосистемы также означает, что мы, скорее всего, найдем хотя бы один плагин, реализующий каждую из требуемых функциональных возможностей, что позволит нам сэкономить деньги, не разрабатывая функциональность самостоятельно. Наличие настраиваемых тем позволяет создать сайт с достаточно уникальным дизайном с минимальными усилиями. Как следствие, можно легко создать и запустить сайт WordPress меньше чем за $100, что делает эту CMS подходящим вариантом для проектов с любым бюджетом.

Будучи относительно новым, ему всего пять лет (Уже шесть. — Прим. перев.), OctoberCMS, безусловно, отстает от WordPress по размерам экосистемы и маркетплейса, но он уверенно растёт. В настоящее время в его маркетплейсе представлено более 600 плагинов и несколько тем (По состоянию на июнь 2020 опубликовано более 900 плагинов и около 200 тем. — Прим. перев.). Что касается плагинов, команда October CMS просит сообщество приложить усилия к созданию оригинальных плагинов, которые предлагают функциональность, ещё не предоставленную ни одним другим.

Поэтому, хотя 600+ плагинов это не очень много, они по крайней мере предлагают 600+ разных функций. То есть хоть и нет возможности выбирать между несколькими поставщиками, мы можем рассчитывать, что будут закрыты основные типовые потребности веб-сайта, такие как ведение блога, комментарии, форум, интеграция с социальными сетями, электронная коммерция и другие. Кроме того, поскольку основатели October CMS лично проверяют все представленные плагины и оценивают их в соответствии с рекомендациями по качеству, мы можем рассчитывать, что эти плагины будут работать так, как ожидается.

Ещё один плюс в том, что плагины October могут включать элементы из пакетов Laravel (хотя не все из них совместимы с October, по крайней мере, без хаков). А вот предложений по темам немного, то есть нам, скорее всего, придётся разрабатывать собственную тему, наняв разработчика для этой задачи. Тема October CMS, скорее всего, будет индивидуальной разработкой, поскольку темы и плагины не полностью отделены, в результате чего рынок легко заменяемых тем сложнее создать. Но это временная проблема: после релиза этой функции страницы могут быть сохранены в базе данных и обмен темами не должен нарушать функциональность.

На мой взгляд, из-за меньшего количества тем и плагинов создание простого сайта на OctoberCMS обойдётся дороже, чем создание аналогичного сайта на WordPress. Но для сложных сайтов лучшая архитектура October (парадигмы объектно-ориентированного программирования и Model-View-Controller) делает программное обеспечение более лёгким в обслуживании и, как следствие, потенциально более дешёвым.

Сообщество


Быть частью сообщества WordPress и иметь к нему доступ — одна из самых веских причин для использования WordPress. Это связано не только с размером (оно обеспечивает почти одну треть всех веб-сайтов в мире, с WordPress связано очень много заинтересованных сторон, а его сообщество является впечатляюще большим), но и с разнообразием. Сообщество WordPress включает людей из разных профессий — разработчиков, маркетологов, дизайнеров, блогеров, продавцов и т. д., людей со всех континентов и стран, говорящих на многих языках, из разных социальных и экономических слоёв, с разным образованием, с ограниченными возможностями или без них, представляющих корпоративные, некоммерческие и государственные организации и т.д. Следовательно, вполне вероятно, что с какой бы проблемой мы ни столкнулись, кто-то наверняка сможет помочь на одном из форумов поддержки. Сделать вклад в WordPress тоже довольно просто: группа Make WordPress объединяет заинтересованные стороны, которым интересно поддерживать различные проекты (доступность, дизайн, интернационализация и многие другие) и организует то, каким образом и как регулярно они общаются — в основном через какой-либо канал в своём выделенном чате в Slack.

Кроме того, сообщество WordPress реальное и осязаемое: оно существует не только в Интернете, но собирается в оффлайне на WordCamps и на других встречах по всему миру. В 2018 году было проведено 145 WordCamps в 48 странах, куда совокупно было продано более 45 тыс. билетов, и в общей сложности 5400 встреч с участием 687 групп. Следовательно, вполне вероятно, что поблизости есть местная ячейка, к которой может присоединиться каждый, чтобы попросить о помощи, научиться пользоваться платформой, учиться на регулярной основе и учить других. В этом смысле WordPress — это не просто CMS, но, что ещё важнее, это люди. Поэтому никогда не стоит принимать решение об отказе от WordPress только из-за её технических характеристик, важно также принимать во внимание её сообщество.

image

Сообщество October CMS в разы уступает по размеру и разнообразию сообществу WordPress, хотя оно неуклонно растёт вслед за растущей популярностью. October предлагает форум поддержки, где можно попросить о помощи, правда, он не очень активен. Ещё есть чат в Slack (На данный момент официально заморожен, сообщество переезжает в Discord. — Прим. перев.), который довольно активен и в котором регулярно отмечаются основатели October, чтобы убедиться, что все запросы должным образом решены. Этот чат — отличная возможность получить несложный совет и лайфхаки по использованию October, но он предназначен в основном для разработчиков: нет каналов о доступности, дизайне, интернационализации и на другие темы, как в WordPress. По крайней мере, пока. Сейчас нет и конференций, касающихся October CMS, но есть Laracon — конференция для сообщества Laravel.

Мейнтейнеры и политика управления проектом


Можем ли мы быть уверенными, что ПО просуществует довольно долго, и, если мы решим начать проект сегодня, нам не придётся переходить на другую платформу в будущем? Сколько людей занимается разработкой программного обеспечения? Кто решает, в каком направлении оно движется?

На WordPress сделана треть всех сайтов в мире, и у неё достаточно заинтересованных сторон, вносящих свой вклад в развитие ПО, поэтому можно не бояться, что перестанут обслуживаться сайты. Тем не менее, сейчас в WordPress проходят внутренние обсуждения касательно модели управления, и многие члены сообщества заявляют, что решения, касающиеся направления развития WordPress, принимаются в одностороннем порядке компанией Automattic, управляющей WordPress.com. Ключевым этапом стало решение о запуске Gutenberg, с которым многие участники не согласились. Gutenberg явно не хватило коммуникации со стороны руководства проекта на стадии разработки и релиза. Как следствие, многие члены сообщества ставят под сомнение роль «мягкого диктатора», каким исторически считали основателя WordPress и генерального директора Automattic Мэтта Мулленвега, и исследуют различные модели управления, чтобы найти более подходящую модель для будущего WordPress. Ещё неизвестно, приведёт ли этот квест к каким-либо переменам или же сохранится статус-кво.

Решения относительно направления развития October CMS в основном принимаются основателями Алексеем Бобковым и Сэмюэлем Жоржем, а также разработчиком и менеджером сообщества Люком Тауэрсом. October CMS пока не знакома такая роскошь как проблема управления: сейчас их больше волнует, как сделать проект устойчивым, и сделать так, чтобы он приносил доход команде разработки.

Документация


Документация WordPress не является исчерпывающей, но она довольно неплохо справляется со своей задачей. Но, если брать в расчет всю документацию о WordPress из всех источников, таких как известные сайты (Smashing Magazine, CSS tricks и т.д.), специализированные сайты (WPShout, WPBeginner и многие другие), личные блоги, онлайн-курсы, почти не существует аспекта работы с WordPress, который ещё не был бы затронут.

У October CMS ситуация с документацией в сторонних источниках очень далека от WordPress, зато документация на собственном сайте достаточно обширна и её точно хватит для начала разработки. Основатели October регулярно добавляют новую документацию. Один из аспектов, который мне лично понравился, это дублирование документации Laravel в документацию October по всем релевантным вопросам, поэтому читателю не нужно самому заполнять пробелы и догадываться о том, что является доменной областью October, а что — Laravel.

Но есть и минусы. Документация October использует термины, происходящие из Laravel, такие как мидлвар (middleware), контейнер сервисов (service container), фасады (facades) и контракты (contracts), без адекватного объяснения, что это такое. Поэтому может быть полезным предварительно почитать документацию Laravel. К счастью, она обширна и понятна, а скринкасты Laravel — Laracasts — ещё один отличный источник изучения не только Laravel, но и веб-разработки в целом.

Вывод


Я решил выяснить, какие функции могут привлекать разработчиков, которые ищут альтернативы WordPress, сравнив WordPress с аналогичной CMS. Это должна была быть бесплатная CMS с открытым исходным кодом, основанная на PHP и создающая динамический контент, пользующаяся поддержкой со стороны нескольких сообществ. Из CMS, которые удовлетворяли этим условиям, я выбрал для сравнения October CMS, поскольку уже знал о ней кое-что, и потому, что мне нравится её чистый модульный подход, предоставляемый Laravel. Мне кажется, это свежий взгляд на разработку веб-сайтов.

В этой статье я не пытался выбрать победителя, а просто проанализировал, когда имеет смысл выбрать ту или иную CMS, сравнивая их сильные и слабые стороны. Не существует «лучшей» CMS, есть лишь наиболее подходящая для конкретной ситуации. Кроме того, любому, кто ищет CMS для использования в конкретном проекте с определенной командой и с определенным бюджетом, нужно сравнить все предложения, чтобы понять, какое из них лучше подходит для конкретного проекта. Важно не ограничиваться парой CMS, как это сделал я в этой статье, а дать шанс им всем.

Мне как разработчику нравится то, что я увидел в October CMS, особенно то, что она позволяет создавать модульные приложения, предоставляемые через Laravel. Я бы рассмотрел эту CMS для нового сайта. Но в процессе написания этой статьи я также заново открыл для себя WordPress. Поскольку она очень популярна, WordPress немало критикуют, в основном касательно её устаревшей кодовой базы и, с недавнего времени, введения Gutenberg. Тем не менее, у WordPress есть несколько отличных функций (например, масштабируемая модель базы данных), которые редко хвалят, но их также стоит учитывать. И самое главное, WordPress не следует рассматривать только с точки зрения технических аспектов: размер сообщества и экосистемы ставит её на один или два уровня выше альтернатив. Если кратко, некоторые проекты могут выиграть от использования WordPress, в то время как другим лучше использовать October CMS или какую-нибудь другую платформу.

В заключении я хотел бы отметить, что изучение того, как работает какая-либо CMS, само по себе очень полезно вне зависимости от того, решите вы использовать эту конкретную CMS или нет. Я, например, годами работал над WordPress, и изучение October CMS это свежий взгляд на вопрос, который научил меня многим вещам (таким как наличие рекомендаций по стандартам PHP), с которыми я не сталкивался в WordPress. Теперь мне решать, сменить CMS или остаться на WordPress.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

А вы знакомы с October CMS?

  • 38,4%Никогда не слышал43
  • 33,9%Слышал, но не приходилось использовать38
  • 14,3%Слышал и хочу попробовать на подходящем проекте16
  • 17,0%Я регулярно разрабатываю с October CMS19

Похожие публикации

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 58

    +2
    Как же мне нравятся такие опросники, когда даже не добавляют вариант «пробовал %инструмент% и он мне не понравился»
      +1
      Замечание дельно. Спасибо, не подумал об этом.

      Если у вас именно такой опыт, поделитесь им, пожалуйста, здесь в комментариях.
        0
        Вот да, пробовал этот October, но нет, не взлетело. Laravel, это, конечно, здорово, но когда из коробки весь контент хранится в файлах, это, мягко говоря, странно.
          0
          Контент может храниться и в базе, для этого есть соответствующая галочка в настройках. А что странного в том, что статичный контент хранится в файлах?
        +1
        Регулярно разрабатываю на OctoberCMS. Очень нравится эта система, мощная гибкая, современная.
          +2
          Отличная CMS, перешли на нее с modx. Используем на проектах около двух лет. Спасибо за перевод, october заслуживает большей популярности.
            0

            А чем вам октобер понравился больше модх? Можете расписать плюсы и недостатки кратко?
            Я просто сам от модх в восторге и смущают только все более редкие обновления. Вот и просматриваю "запасной аэродром "

              0

              Проще попробовать самому.
              1) Twig вместо мешанины нативного парсера с fenom
              2) чанки в файлах
              3) Приучивает делать правильно. Использовать композер, консоль, расширять код, а не хардкодить. Возможно в modx тоже все это можно, но я даже не задумывался. А тут октябрь заставляет разбираться.
              4) Ajax framework. Можно в 10 строчек кода написать простой фильтр на фронте, сортировку и т.п.
              5) Можно легко расширять админку. Например создать свой formwidget (что-то вроде tv поля). В modx я лепил eval в tv поле (не помню точно что он делал, но было не удобно).
              6) Есть repeater из коробки. В modx, вроде, такое позволяет сделать только migx. То есть создать одно поле "телефоны компании" с возможностью добавить много номеров.
              7) Можно расширять будь что без правки чужого кода. Добавить новое поле в чужой плагин (ячейку в бд и поле в админке), добавить поле в списке (например список статей в админке), добавить связь между моделями.

            +2
            Спасибо за перевод!
            Начал пользоваться OctoberCMS еще с беты, есть как сильные так и слабые стороны.
            Один из весомых плюсов, весьма мощная и гибкая админка из коробки, что позволяет реализовывать банальные CRUD'ы и средние за весьма короткое время, для чего-то не стандартного так же все легко кастомизируется.

            Конечно есть и минусы, в маркете не так много нужных плагинов, а на некоторые плагины весьма завышенная цена. Так же отсутствуют туториалы для редакторов и администраторов как в том же Bitrix или WP, но разок написав и передав клиенту, все в принципе решается.

            Еще тем кто любит «чистоту» может не понравиться php код в административных шаблонах с форматом .htm.
              +2

              выбор в общем то очевиден, уже несколько лет на October сижу

                +2
                Октябрь — свежий глоток воздуха в open-source среде. Редкий случай, когда продукт ставит во главу угла разработчика и следует концепции MVP. Мастхев для тех, кто хочет с комфортом реализовывать интересные и сложные проекты.
                  +1
                  Херасе свежий) Протухнуть успел несколько раз, при этом ванильный WordPress имеет 35% рынка всех сайтов мира, как бы намекая, что все остальные CMS появляются и исчезают и толькот Ворпёс — вечен! Спасибо Мэтту!
                    +1
                    Октябрь сравнительно недавно вышел из беты. Намекает на что? Что каждый школьник может склепать на WP гс своего клана в контер-страйк? Миссия WP — быстренько склепать сайт на шаблонном дизайне и не дать фрилансерам опухнуть от голода.
                      0
                      Намекает, что скоро его постигнет та же участь, что и Joomla, Drupal, PHP-Nuke… Миссия WordPress — намного шире, чем вы думаете, посмотрите, что из себя представляет компания Automattic, какая у нее капитализация, кто инвесторы и сколько разных продуктов они делают сами и сколько интересного куплено в последнее время.

                      Порог входа в WordPress низкий, поэтому даже домохохяйка может себе сама склепать сайт, обвешать плагинами, темами с тимфореста и потом стонать в окмментариях, что WordPress — говно и он медленный.

                      Но не забывайте, что есть и разработчики и программисты, которые делают на WordPress отличные уникальные решения, которые стоят не одну тысячу долларов.

                      А само понятие фрлинаса — это уже нищебродство и побирательство. Есть, конечно, исключения, но таких людей единицы. Хотите денег — работайте! Хотите много денег — создавайте свой продукт. И не важно, какой будет бэкенд, круиворукие мобераторы и на современных фреймворках делают лютое говнище.

                      Мира и добра вам в хату.
                        0
                        Вы в курсе, что ничто не вечно под луной? =) Давайте вспомним такие компании, как Nokia, Olympus и пр., которые когда-то были лидерами в своих сферах.
                          0
                          Согласен, что мир не вечен.
                      +1

                      На WP даже мелочи бесят, такие как:


                      • куча ненужных тегов в head которые приходится удалять
                      • ctrl+s не работает
                      • куча хлама в functions.php, таких как пагинация, хлебные крошки
                      • и прочее (сейчас уже не вспомню всё).
                        –1
                        99% проблем у пользователей WordPress в прокладке между монитором и стулом, ну вот реально, вы несёте чушь, не разбираясь в вопросе и вводите других в заблуждение.

                        1. Зачем вы удаляете служебные теги из head, чем они вам помешали, они там не просто так находятся.
                        2. Работает сохранение
                        3. Не надо пихать в функции всё подряд, этот файл предназначен для другого
                        4. По существу, пожалуста
                          +1
                          1) Хорошо. Зачем мне нужны эти теги в head? Чтобы проще было понять какие уязвимости есть в этой версии? И чтобы поисковик видел на каждой странице редирект из shortlink на нормальный урл? Также зачем мне теги restapi если я его не использую. Если мне что-то из этого понадобиться из этого, то я его подключу сам.
                          2) Точно, извините, работает. Давно не делал ничего на ВП. Раньше не работало.
                          3) Ну в основном там куча кода (хлебные, шорткоды, фильтры и т.п.) в километр длиной.
                          4) Если честно, то с ВП не работал уже года 3 и не помню какие там были проблемы.

                          Конечно можно разрабатывать хорошие сайты и на ВП. Нет никакого желания спорить что лучше. Хотите — используете ВП, хотите — October.
                            0
                            Без rest api не работает половина плагинов под WordPress как и само ядро с активным Gutenberg. Если вы уберете теги из head — это вообще никак не защитит вас от влома, вот прям совсем никак, есть другие 50 вариантов как определить, что у вас за CMS и какой она версии. Большинство тегов внутри head служебные и нужны для интеграции с внешними сервисами. На странице с shortlink указан rel=canonical, поэтому они и индексироваться не будет и само собой никакого редиректа не будет.

                            У меня одна претензия к head — это код для эмоджи, остальное нужные вещи.

                            PS: я не пытаюсь спорить, просто интересно, почему и людей такое мнение о продукте, на котром полмира вертится, не удивлюсь, если Илон Маск тож юзал WordPress, чтобы отправить свой корабль на Марс.
                              0
                              1) Хорошо. Зачем мне нужны эти теги в head? Чтобы проще было понять какие уязвимости есть в этой версии?

                              Эти теги, это какие?) Серьезных уязвимостей в ядре, кстати, не было уже не помню сколько лет.

                              Что касается rest api — как уже ответили, некоторые плагины используют возможности этого (кстати, очень удобного) api. Если не хотите, чтобы кто угодно его использовал извне, то есть плагины, отрубающие часть или весь api для незарегистрированных пользователей. Причём, мне кажется, неплохо бы из коробки мочь такое делать. Хотя, учитывая широкую направленность этой CMS и то, что чаще люди не осознают последствий своих действий, наверное, всё-таки это не нужно.
                                0
                                Видимо не правильно оформил комментарий и хабр вырезал теги)
                                Имелись ввиду теги: dns-prefetch, generator, shortlink и т.п.
                                Пол года назад на 20+ сайтах убрал все вот это лишнее, никаких проблем после отключения rest api я не увидел.
                                  0
                                  То есть, вы думаете, что тег dns-prefetch лишний? А вы в курсе, что он делает?
                                    0
                                    Догадываюсь что он пытается ускорить загрузку страницы. Но суть в том, что он добавляется сам, а не я его добавляю когда это нужно.
                                      0
                                      Классическое «не указывайте мне, что делать»? Ну, не знаю, это очень странно, когда одни разрабы заботятся о других и добавляют разные плюшки, а другие разрабы их хейтят за это и выдирают эти плюшки)
                        0
                        Да, действительно, OctoberCMS ориентирована в большей степени на разработчиков. Но с точки зрения коммерческой разработки эту систему практически невозможно продать.

                        С точки зрения бизнеса у WordPress огромное количество плюсов. Самый основной из них это низкая стоимость разработки и поддержки.

                        Из чего она состоит:
                        1. Наличие огромного количества уже готовых качественных плагинов, тем оформления, и специалистов. Речь идет не только о разработчиках, но и контент-менеджерах, маркетологах, SEO-специалистах, интеграторах и т.д.;
                        2. WordPress очень много внимания уделяет поддержанию совместимости и стабильности API. Это значит, что разработанный ранее функционал скорее-всего будет хорошо работать и в будущем вместе;
                        3. Сама система и многие плагины регулярно обновляются. Это тоже снижает стоимость разработки;
                        4. Админка у WordPress одна из самых удачных на рынке. Это опять же снижает расходы бизнеса;
                        5. WordPress очень просто установить и посмотреть что там. Из коробки эта система уже предлагает достаточно много функционала. И это опять же снижает стоимость.

                        October CMS может быть сколь угодно хорошей системой, но в нынешнем виде она попросту не нужна рынку. Она позиционирует себя как конкурент WordPress, но не дает ответа на вопрос чем же она лучше.

                        Клиент заходит на главный сайт этой системы и видит кусок кода. Заходит на страницу с Features, видит фразу «Web Development is Simple» с кучей незнакомых слов, а также куски кода ниже.
                        +1
                        Уже наверное года два-три активно пишу на octobercms, соглашусь с LeMaX очень радует гибкость и расширяемость админки, ибо львиную долю работы покрывает, очень радует js фреймворк
                          0
                          Важно понимать, что CMS это не серебряная пуля. Каждый инструмент хорош для своих задач. Слишком часто WP используют для натягивания совы на глобус. Когда сравнивают October и WP мне очень странно на это смотреть — у них общего только семейство. В остальном, они разные и предназначены для разного. Разная философия, разные цели, разный порог входа.
                            0
                            Познакомился с октябрём чуть больше года назад и с тех пор периодически делал на нём проекты. Ощущения от него неоднозначные.

                            С одной стороны, быстрый старт за счет backend-части и описания вывода необходимых полей на уровне конфигурации и описания связей между моделями. Но если нужно что-то более кастомное, то нужно намного глубже в неё залезать и с определенными моментами немного намучался (навскидку, из того что помню — странную систему в заданием приоритета через drug'n'drop).

                            С другой стороны, как для человека, который собирает сайты на Laravel, необычно отсутствие единого файла с роутерами. Т.е нужно или описывать роуты в плагинах или прописывать их на уровне шаблона, что очень непривычно и вызывает определенное отторжение.

                            В целом, чувствуется, что у неё есть потенциал и бОльшая ориентированность на разработчиков, но вот малое количество информации и необходимость глубоко вникать при нестандартных решения немного отпугивало.

                            Самые главный минус — это малое количество информации и примеров использования по самой October CMS. И вот здесь идея популяризации этой CMS, конечно, радует.
                              0
                              Удивительно слышать про:

                              Но если нужно что-то более кастомное, то нужно намного глубже в неё залезать и с определенными моментами немного намучался


                              Экстенды просто прекрасны в Октябре. Другое дело, что не каждый плагин это поддерживает.
                              +1
                              Очень гибкая CMS ка хорошо подходит для веб студий и стартапов (когда нужно быстро и качественно). В принципе октябрь от себя ничего не добавляет можно и в больших проектах использовать
                                0
                                Очень нравиться эта cms. Так просто с ajax запросами я еще не работал :). И отличная документация.
                                Уже третью crm перевожу на OctoberCMS. И с каждым проектом открываю для себя все больше удобства Октября. Еще очень нравиться активность русскоязычного чата в телеграме, где всегда подскажут и помогут. Очень часто можно просто поиском найти решение.
                                Чуть пугает сильное отставание от версий Laravel, но активно ведутся работы по переходу на Laravel 6.
                                  0
                                  В свои пять лет ее можно считать относительно новой (в отличие от Joomla и Drupal)

                                  Вот не факт, что новизна в данном случае является плюсом )
                                  Joomla ведь на месте совсем не стоит, развивается постоянно. Там уже столько продумано… о чём в новой CMS ещё даже не задумывались.
                                    0
                                    Новизна позволяет рассчитывать, что под «капотом» нет уже совсем откровенного legacy и в случае с October это так и есть.

                                    Ничего не могу сказать про Joomla, т.к. работал с ней последий раз в 2006 году. Слышал, что у нее там давно свой фреймворк «под капотом», но вот как-раз таки большое количество т.н. «инхауз» решений это и есть их ахилесова пята. Навыки работы с Joomla, WP и пр. подобными CMS с многолетней историей за пределами фактически не востребованы за пределами их экосистем.

                                    Что касается «задумывались» или нет. October достаточно сильно отличается от прочих CMS своей аскетичностью, на что автор оригинальной статьи и обращает внимание. Система пользователей, управление навигацией сайта и т.п. это все реализовано через плагины, из коробки система дает только самый необходимый минимум. Я считаю это большим ее преимуществом, это своего рода реализация «Unix way».
                                    0
                                    Статья достаточно однобокая и не совсем корректная по отношению к WordPress. Начнем со структуры. Ключевой сущностью WordPress является не страница (page), а запись (post). Ее дополняют таксономии, пользователи и комментарии.

                                    Эти сущности дополняют таблицы с метаданными. Это отдаленно напоминает EAP и отлично подходит для хранения разнородной информации (sparse data). Помимо этого такая структура очень гибкая, а также позволяет довольно просто производить выборку и фильтрацию.

                                    Разрабатывать модули для WordPress очень удобно благодаря системе хуков и фильтров, а также стабильности API.

                                    Но самым основным достоинством WordPress является то, что он позволяет очень быстро создавать проекты для малого и среднего бизнеса, которые просто поддерживать и расширять.

                                    В этом и кроется секрет популярности WordPress и WooCommerce.
                                      0
                                      Забавно, что сообщество October имеет такое же мнение по поводу статьи. =) Что автор недостаточно глубоко вник в тему и проводит сравнение с перевесом в пользу WP. ️

                                      Имхо, баланс в целом соблюден, если каждая из сторон не осталась довольна! ️
                                        +1

                                        Насчёт скорости можно поспорить, я перешёл 3 года назад на Октябрь и понял, на мини проектах скорость разработки одинакова, на проекте покрупнее Октябрь уделывает вордпресс по всем статьям. Вордпресс хорош для тех, кто далёк от программирования, но в итоге все равно пользователь сталкивается с адом плагинов, с багами, с безопасностью, а в Октябре такого нет. А скорость работы сайта просто радует

                                          +1
                                          Приведу простой пример.

                                          Есть клиент со вполне обычным Интернет-магазином.

                                          И вот он захотел добавить оплату Authorize.Net eCheck, прикрутить Signifyd, а также интегрировать это все счастье с UPS.

                                          Для WooCommerce уже есть готовые модули. Их интеграция, настройка и тестирование могут занять условные 15 часов. Если их писать с нуля под OctoberCMS, то на это уйдет 50-60 часов.

                                          Клиент видит две цифры и для него все очевидно.
                                            0

                                            Я не согласен, есть плагин под октябрь называется шопоголик, к нему есть расширения для платёжных систем, и прикрутить их к нему это не 50-60 часов, а 8, так что считайте сами

                                              +1
                                              Для указанных выше систем точно нет. Да, для Stripe и Braintree какие-то модули есть, но они не поддерживают ACH, подписки и работу с платежными профилями.

                                              Что касается написания подобных модулей с нуля, то здесь все очень и очень непросто. Да, любой уважающий себя платежный шлюз имеет библиотеку на PHP, но ее нужно как-то интегрировать с существующей системой, предусмотреть огромное количество разных ситуаций, начиная с банальных возвратов и заканчивая вопросами безопасности (PCI DSS и вот это вот все).

                                              C доставками все тоже очень непросто. Чтобы получить документацию к UPS API, например, у вас может уйти пару часов. Потом еще придется вникать в дебри XML… В общем, то еще веселье и явно не на 8 часов.

                                              К чему это я. October CMS — это отличная система, но клиентам ее продавать крайне сложно.

                                              Это очень интересно и увлекательно самому писать платежные шлюзы, интеграции со службами доставки, заново изобретать вариации и копаться с библиотеками генерации PDF, но не все готовы оплачивать это.

                                              В больших проектах — да, возможно, но там часто принимают решение сразу на Laravel писать.
                                                0
                                                Вы безусловно правы в том, что велосипедостроение это несерьезно. Такие проекты, как October и Shopaholic в силу относительной молодости не имеют всех востребованных интеграций.

                                            0
                                            Как можно сравнивать проекты, которые делались в разное время для разных задач, не очень ясно. Основная беда (и преимущество, позволившее остаться до сих пор на коне) WP, которую никто никогда и не скрывал — это достаточно жесткая структура базы данных ядра. В октябре, как я понимаю, такой проблемы нет, из-за чего и проблем со скоростью тоже.
                                              0
                                              В WordPress нет базы данных ядра. Там есть отдельные таблицы для разных сущностей, есть таблицы для метаданных и связей.

                                              Основная проблема WordPress — это использование глобальных переменных. Да, это постепенно исправляют, многое инкапсулируют, но все еще не так хорошо как бы этого хотелось. Жить это особо не мешает.

                                              Вторая проблема — это маршрутизация. Стандартные вещи работают из коробки. Если по какой-то причине нужно что-то своё, то тут возникают проблемы. Да, они решаемы, но все же.

                                              В остальном вполне себе можно жить.
                                          +2
                                          Я начинал как Wordpress разработчик. А сейчас последние несколько лет разрабатываю на Октябре, очень нравится. Больше всего нравится, что Октябрь — это про программистов, CMS сама учит делать правильно, а не на костылях.
                                            0
                                            Ну если вы, как программист, делаете сайт, и в дальнейшем планируете его поддерживать, не привлекая контент-менеджеров, то да, для вас это идеальное решение. Фишка же WordPress в том, что его легко можно передать на поддержку обычным контент-менеджерам, которые потихоньку будут наполнять сайт и даже относительно безболезненно его дорабатывать. Что значительно удешевит стоимость поддержки сайта в перспективе. И это даже если не брать в расчёт новый редактор контента Gutenberg, который ставит WordPress сразу на одну ступень с такими популярными сервисами, как Medium. Не всё, конечно, было гладко с внедрением этого редактора, но такое ощущение, что это лучшее, что могло случиться с WordPress, даже не смотря на то, что многим, якобы, он не понравился.
                                              0
                                              А с чего вы решили, что контент-менеджеру будет сложно поддерживать Октябрь? речь о том, что с т.з. DX Октябрь, ой, как хорошо. Единственная сложность ля контент-менеджера в том, что с админкой WP знакома «каждая домохозяйка», а с Октябрем придется познакомиться.
                                                0
                                                Может быть, и не сложно. Но октябрь, как я понимаю, пока не может предложить ничего лучше или даже похожее на Gutenberg. С другой стороны, для меня, как разраба, проще написать кучу блоков под этот редактор, чтобы потом контент-менеджер как угодно мог их вставлять на страницах, при этом не зная ничего про html.
                                                  0
                                                  Есть и Gutenberg и даже Editor.js. Есть даже что-то похожее на Elementor.
                                                  0
                                                  Кстати, редактор Gutenberg же есть в виде отдельного продукта, что даёт возможность встраивать его теоретически в любую CMS, и есть его адаптация под тот же Drupal. Может быть, и в октябре он когда-нибудь появится? Было бы неплохо.
                                                +1
                                                В общем то в Октябре тоже есть гутенберг, а еще editorjs появился недавно.
                                                  +1
                                                  А вы точно в вопросе разбираетесь? У Октября удобная и простая панель управления. Более того, я как программист, разрабатываю проект, чтобы он легко поддерживался контент-менеджерами.

                                                  Безболезненно дорабатывать и контент менеджер — мне кажется, или это противоположные понятия?

                                                  Gutenberg есть в виде плагина для October CMS. А так же плагины для онлайн редактирования контента с фронта, разные плагины для кастомных блоков и тд

                                                  И извините за прямоту, но между ваших строк читается — сделать быстро дешево чтобы отдать клиенту и контенты сами допиливали мелочи. А Октябрь на мой взгляд, это про программистов и качество — клиент получает качественный, функциональный, удобный проект, который будут обслуживать контент менеджеры; а разработчик получает клиента и дорабатывает проект по мере его развития и роста (WIN WIN).
                                                    0
                                                    Может быть, я упустил этот момент, но преимущество в дальнейшей поддержке WP — огромнейшее коммьюнити и огромнейшее количество (подчеркиваю) качественных и бесплатных плагинов, чем точно October не может похвастаться. Не сомневаюсь, что и на нём можно вполне качественный продукт получить, но бюджеты здесь явно будут выше из-за более скудного выбора плагинов, а это означает дополнительные затраты на разработчиков, что далее даёт ещё одну серьезную проблему — замыкание на того разработчика, который разрабатывал дополнительный функционал и практически невозможность передачи на поддержку другим разработчикам.
                                                      0
                                                      Полностью согласен про комьюнити. В данном вопросе любая CMS проигрывает WP. Но это вопрос истории, рано или поздно будет новый «король» на рынке CMS со своим комьюнити.

                                                      Что касается готовых решений, вы тоже правы, но частично. У Октября примерно 900 плагинов, против тысяч 60 000 у WP или сколько их там сейчас. Но следствием популярности WP является очень широкий разброс квалификации разработчиков и их плагинов. Подавляющее большинство плагинов представляет из себя небезопасное тормозное нечто. У Октября же плагины пока вручную отсматриваются модераторами маркетплейа и имеют более менее приличное качество, в том смысле, что очевидного «шила» там нет. 100% готовых решений, разумеется, пока нет, но 80% для типовых сайтов точно есть.

                                                      Что касается итоговых бюджетов, то здесь можно говорить о том, что в случае с Октябрем не придется дополнительно тратиться на доведение его до безопасного состояния, возможности CLI и архитектура в целом на голову выше того, что предлагает WP кодом, частям которого уже 20 лет. Скафолдинг кастомной функциональности не в пример быстрее и дешевле.

                                                      Что касается отчуждаемости кода, здесь как-раз тот факт, что под капотом Laravel, делает возможным работу с проектом на October любому разработчику, знающему этот фреймворк. Но, конечно, количество недокументированной кастомщины, если на такую нарвешься в случае с любой CMS приведет к фейлу проекта.
                                                        0

                                                        Не понимаю, почему вы ставите во главе низкую стоимость. На мой взгляд низкая стоимость wp ведёт к тому, что тьма разработчиков это бракоделы на коленке за 5000₽ любой сайт. А с другой стороны тьма заказчиков, которые хотят получить за 5000₽ интернет магазин у студента и обмануть судьбу.


                                                        Октябрь по ценнику разработки проектов соответсвует рынку разработки, а иногда дешевле тк есть готовые решения в виде плагинов и тем (я про проекты для бизнеса, а не сайтик визитка моей собачке).


                                                        Кроме того в Октября уже неплохое сообщество покрывающее запросы на доработки и сопровождения проектов. Ну и не забываем, что Октябрь это Laravel, поэтому дефицита разработчиков, которые смогут поддерживать и дорабатывать проект — нет.


                                                        Для меня до сих пор не понятно, почему люди, разрабатывающие сайты на Wordpress гордятся низкой, а порой смешной стоимостью разработки. Вы делаете коммерческие проекты для бизнеса, чтобы проекты зарабатывали, но сами хвалитесь низкой стоимостью. Парадокс Вордпресса.

                                                  +1
                                                  Сказать, что я доволен october cms — ничего не сказать! Админка просто супер: чисто, аккуратно и самое главное — ничего лишнего.
                                                    +1
                                                    Перешел на OctoberCMS с yii2, теперь все гораздо проще, нисколько не ущемлен. Реюзаю плагины из проекта в проект, следую общепринятым методологиям октября при разработке. Если по минусам — то, маркетплейс — есть куда развиваться, иногда не найти того — что необходимо(но быстро допиливается), темы в маркетплейсе слабо развиты.
                                                      0
                                                      October CMS основана на Laravel — фреймворке, полностью построенном на принципах объектно-ориентированного программирования. Эти принципы позволяют создавать модульные приложения на основе концепций Model-View-Controller для отделения пользовательского интерфейса от данных приложения,

                                                      Ну начнем с того, что в Laravel не реализуются принципы MVC. И философия MVC изложена не в полном объеме. Ну вообщем такое.

                                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                      Самое читаемое