Система управления сайтом (CMS) - как выбрать
Систему управления сайтом часто называют «движком», что хорошо описывает его предназначение. CMS выполняет сразу несколько задач. Первая — это определяет то, как будет храниться информация. Вторая — как она будет между собой связана. И третья задача — администрирование сайта.
Проблема выбора CMS для сайта
Любой, кто задумал сделать сайт, сталкивается с подобной проблемой, потому что выбор систем очень большой. В этой статье я хочу рассказать о тех критериях, на которые следует обращать внимание при выборе «движка» сайта.
Рейтинги
Скорее всего вы будете ориентироваться на рейтинг CMS, которыми пестрит Интернет. На самом деле такие рейтинги полная профанация, потому что в их основе лежит статистика своего же сайта. В подавляющем большинстве случаев такие рейтинги основываются на зарегистрированных пользователях сайта рейтинга, где и размещают ссылки на используемые CMS. Таким образом это сферический конь в вакууме, не отражающий реальное положение дел.
Поэтому я могу порекомендовать рейтинг от W3Techs Usage statistics and market shares of content management systems, который охватывает более 803 систем (все ссылки приведены под таблицей рейтинга).
Нас интересует серый цвет, который указывает на популярность CMS среди всех сайтов. Интересно, что почти 30% сайтов не используют CMS или используют самописную систему.
Также нужно учитывать, что в рейтинге участвуют все системы, включая платные, бесплатны, те которые работают на JS, Python, Java, то есть абсолютно все CMS, независим от используемых технологий.
Обзоры CMS
Вы наверняка столкнетесь с многочисленными обзорами в Сети, где якобы специалисты будут рассказывать какую систему выбрать. 99% таких публикаций используют одну и туже копирку, которая уже не меняется лет 15. Всегда упоминается WordPress, дескать это самая популярная система, потом Drupal и Joomla. И дальше рандомно любые другие системы, например MODx, Craft CMS и т.п.
Такие обзоры пишут не люди, а копирайтеры, которые используют информацию с других сайтов. Поскольку это уже длится много лет, то у меня возникает только образ уробороса, который пожирает свой хвост. Это что-то вроде рекурсии, которая никак не может найти точку выхода. Поэтому такие обзоры пишутся не для людей, а для гугла, чтобы он связал сайт (часто этим грешат вебстудии) с нужной тематикой.
Популярность CMS
Если ориентироваться на рейтинг W3Techs, то мы увидим, что самодельные CMS — это примерно 30%, а потом с большим отрывом идет WordPress — почти 45%. Более того, если посмотреть динамику рейтинга по годам, то мы увидим, что доля WordPress примерно уже зафиксировалась на 43%, а доля самописных «движков» падает за счёт перехода на другие системы управления.
Причём, несложно заметить, как растёт доля сервисов, которые предлагают визуальное создание сайтов: Wix, Tilda и другие. Это не сколько CMS, сколько сервисы по созданию сайтов.
После WordPress идёт сервис Shopify — платный сервис, где месяц стоит минимум 24$. Потом идёт Wix, который стоит минимум 9$ в месяц.
Заметьте, что у Joomla более менее «приличные» 1,5%, а у Drupal уже менее 1%. Если немного «пошерстить» CMS, то выяснится, что у подавляющего большинства систем рейтинг менее 0,1%, причём число будет уменьшаться, поскольку сайты появляются намного быстрее, чем рост доли любой CMS.
Теперь небольшой вывод: если ориентироваться на рейтинг, то выделяются только WordPress (45%), самописные системы (30%), платные системы (в сумме примерно 10%) и остальные 15% раскиданы на примерно остальные 800 систем.
Таким образом вы не сможете корректно оценить систему, ориентируясь на рейтинг. Систем слишком много и все они имеют низкую популярность.
WordPress
Отдельно нужно рассказать об этой системе. В отличие от многих других писателей, я когда-то имел к ней самое непосредственное отношение, поскольку входил к команду русского WordPress'а и участвовал в популяризации этой системы. Здесь отмечу, что WordPress сейчас представляет собой уже целую компанию, но в наше время это был обычный open-source-проект, к которому мог присоединиться любой. Поэтому были любители, вроде меня, которые занимались переводами и адаптацией кода к нашим реалиям. Более того, старожилы помнят, что мои сборки WordPress (последняя была 2.3) были более распространены чем официальные. Ну просто потому что учитывали особенности кириллических хостеров.
Поэтому я знаю как устроен WordPress и многие его болячки не исправлены до сих пор. Самая главная проблема системы в его колоссальной прожорливости. Сайты на WordPress требуют много памяти и хороших ресурсов сервера. Корень проблемы лежит в его внутреннем устройстве, на которое всем плевать. Но за это приходится платить дорогими тарифами хостинга.
Другая проблема WordPress в том, что он совершенно голый. В его комплекте вы не найдёте ни одного плагина, а дефолтные шаблоны морально устарели ещё до их создания. Таким образом пользователь WordPress просто вынужден искать плагины и шаблоны, чтобы хоть как-то настроить свой сайт. Речь не о чем-то особенном, а о типовом варианте современного сайта, например OpenGraph.
Всё это порождает проблему, когда плагины и шаблоны пишутся сторонними разработчиками и каждый изобретает кто на что горазд. Техническая сложность создания шаблона WordPress в том, что система вначале сама получает все данные, а только потом подключает шаблон. А в шаблоне может быть нужны другие данные для вывода, а значит будет еще тонна обращения к базе и новый цикл обсчёта. WordPress просто конструктивно не предназначен для создания быстрых сайтов и вы ничего с этим не сделаете.
Поэтому, выбирая WordPress, вы сразу должны понимать, что скорее всего вам придётся раскошеливаться на дорогой хостинг.
В чём же популярность WordPress'а? Я вижу две основные причины. Первая — это то, что WordPress, а точнее его прародитель B2/Cafelog, был первой системой, которая вообще позволяла вести сайт на PHP и MySQL. До этого была ужасная Mambo, которая переродилась в Joomla!. Тогда только начинался бум блогов, поэтому потребность в более-менее нормальной CMS была колоссальной. Поэтому многие сделали ставку на WordPress.
Вторая причина — чисто маркетинговая. WordPress 2.5 уже стал бизнесом, в который было вложено 50 млн. долларов. То есть из WordPress стали делать бизнес. Бизнесом стала компания Automatic, сервис блогов (в пику ЖЖ и другим), ну и наверное ещё много чего.
Если кто-то скажет, что WordPress — хорошая система, то это будет ложью: система популярная, но не хорошая. С технической точки зрения она базируется на коде и принципах 2003 года, что и выливается в непомерное ресурсопотреблении.
Почему выбирают WordPress? Думаю, что это из-за лени искать альтернативы. На самом деле можно выбрать более подходящую систему под свои задачи, но люди достаточно ленивы, что-бы тратить на своё время. В бизнес WordPress вовлечено много крупных компаний и фрилансеров, поэтому каждый хочет урвать свой кусочек пирога. Поэтому выбор шаблонов (а это основное, что требуется для WordPress) огромен. Поэтому когда кто-то начинает делать сайт, то он начинает поиск не с выбора системы, а с выбора шаблона.
Drupal и Joomla
Хотя в обзорах часто упоминают эти две системы, на самом деле нет ни одной разумной причины их выбирать для своего сайта.
Drupal — это вообще изначально крайне специфичная система, которая имеет очень своеобразный подход к построению сайта. Сам по себе Drupal предполагался как супер-универсальная система под разные задачи, что в свою очередь породило жуткое техническое решение о структуре базы данных. Отчасти это повлияло на развитие других систем, в том же WordPress'е используется таксономии — это калька с Друпала. Крайне неудачное заимствование, которое значительно усложнило работу с базой. Поэтому Drupal, как мне видится, выбирают только крупные компании, которые имеют технические и людские возможности реализовывать всё, что вздумается. Для личного сайта, использовать Drupal — это как из пушки по мухам.
Что касается Joomla, то наверное её выбирают именно из-за нежелания садиться на иглу WordPress. Joomla прошла большой путь, поэтому под неё также множество шаблонов и сторонних модулей — для простого сайта, в общем-то можно использовать. Сложности возникнут, если потребуется сделать что-то выходящее за рамки системы, поэтому работа с Joomla предполагает умение «ковыряться в коде». Особенно это касается HTML/CSS, потому что шаблоны Joomla — это давно уже морально устаревший подход.
Платное/бесплатное
Под платным здесь, я понимаю системы, за которые нужно заплатить. Это может быть разовая сумма, либо на какой-то период. Если поизучать системы, то в целом такие системы (или сервисы) стоят от 10$ в месяц за минимальные возможности. Если же это full-версия, то ценник в несколько раз дороже. Например ExpressionEngine стоит 249$ в год.
Бесплатные системы можно использовать уже по своему усмотрению, но всё-равно они потребуют вложений. В большинстве своём бесплатные версии довольно ограничены, например имеют один дефолтный шаблон. Поэтому, чтобы что-то изменить, потребуется либо самому вникнуть в тонкости управления CMS, либо нанять специалиста. А это уже деньги. Скажем шаблон WordPress может стоит от 50 до 100$, хотя есть варианты и дешевле. Дешёвые варианты предполагают, что вы сами будете «допиливать» шаблон под свои задачи. Либо, опять же, докупать техподдержку, либо искать специалиста.
Поэтому бесплатные системы могут быть только для тех, кто разбирается в PHP, HTML и CSS. Во всех остальных случаях придется так или иначе заплатить. С другой стороны, бесплатные системы стимулируют развитие технических навыков. Раньше это было особенно заметно, когда новичок ставит CMS, а потом заводит отдельную рубрику сайта, где рассказывает, как ему удалось решить ту или иную задачу. Многие специалисты по CMS как раз и выросли на таких мелких подработках.
Платная CMS имеет ряд преимуществ именно с точки зрения техобслуживания. Поскольку за систему уже заплачено, то техподдержке выгодно «ублажить» клиента. Более того, такая поддержка намного более качественно выполнит работу, потому что это квалифицированные специалисты, а не сынок школьной подруги, который два раза поставил WordPress.
То есть при выборе системы сразу оценивайте примерные затраты. Поищите стоимость шаблонов, плагинов, узнайте типовую стоимость работы с этой системой, сколько стоит заказать полный сайт на этой системе и сколько будет стоить её поддержка.
Открытый/закрытый код
Некоторые системы имеют весь или часть закрытого кода. Тут нужно понимать, что код закрывается по разным причинам, хотя для PHP — это не самое частое явление. Но даже если код открыт, то многие не публикуют его в открытом виде, то есть его можно получить только после покупки.
Дело в том, что закрытый код может быть частью безопасности системы или защиты лицензии.
Безопасность системы достаточно важная характеристика, поэтому если код открытый, то злоумышленник может найти в нём уязвимость и использовать на разных сайтах. Например кто-то написал плагин для WordPress, который установили на сотне сайтов. Но если хакер имеет доступ к исходному коду, который имеет уязвимость, то он сможет написать свой post/get-запрос, который будет ломать сайты с этим плагином. Это одна из причин, почему WordPress постоянно попадает в скандалы, связанные с недостаточной безопасностью.
Ну и другой момент. Важно не то открыт или закрыт код, а важно есть ли для него документация. Как показывает опыт, то принципиальной разницы закрыт ли код, нет. Потому что пользователю не нужно «ковыряться в исходниках», ему намного важнее получить описание функций или готовый рецепт того, как быстро решить свою задачу.
Критерии выбора CMS для сайта
Я за то, чтобы выбор системы опирался на какие-то объективные характеристики, а не на пустые рейтинги. Вы понимает, что любая CMS — это не что иное, как программный код, а значит оценивать можно с этой точки зрения. При этом, конечно, же следует ориентироваться на то, как в той или иной системе решаются типовые задачи сайтостроения.
Потому что есть огромное количество систем, где нет элементарных вещей. Например нет возможности сделать карту сайта, нет возможности прописать произвольные редиректы, нет возможности указать description в HTML. Понятно, что новичку тяжело сразу во всём этом разобраться, и поэтому ему есть смысл просто поставить локально несколько разных CMS и посмотреть их возможности.
Старый/новый код
Система может постоянно обновляться и это хороший признак, что она не заброшена. Хотя наверняка есть системы, которые заброшены, но написаны в хорошем стиле. Просто всегда есть причина обновить систему, например из-за выхода PHP 8.4, который ломает совместимость с PHP 8.3.
Но скорее речь идёт о том, на какой кодовой базе построена система. Например WordPress — это 2003 год и понятно, что он давно уже не отвечает современным подходам. Обновления систем часто ломают обратную совместимость, поэтому для пользователей это проблема, но с точки зрения развития системы— это благо. Поэтому при выборе системы узнайте о совместимости шаблонов или плагинов с новыми версиями системы. Чем новее такая переделка, тем больше у вас будет возможностей.
Админ-панель
Я встречал совершенно «дикие» CMS по своим возможностям, но при этом с великолепными по дизайну админ-панелями. Всякие рюшечки, аппетитные цвета, тени, градации, шрифты — просто сказка. Оно и понятно, что админ-панель может привлекать новых пользователей, особенно «эстетов», ценящих красоту. Но, правда в том, что админ-панель в первую очередь должна отражать возможности и функционал сайта. Сама по себе красивая панель бессмысленна, если с её помощью нельзя, скажем, поменять шапку сайта.
Считается, что «стандартом» админок является WordPress, но это лишь отчасти верно. Дело в том, что эксперименты с админ-панелью всегда сопровождали его развитие, но в итоге осталось только два варианта: это меню в левой боковой колонке, либо меню в верхней части экрана. Все другие варианты просто не удобны для использования. Поэтому принципиальной разницы между дизайном WordPress или MaxSite CMS нет — цвета и рюшечки не в счёт, тут всё равно все карандаши разные.
Поэтому когда вы попадёте в админ-панель системы, попробуйте её оценить в первую очередь по своей логичности структуры и по тому как быстро открываются страницы админки. Это особенно касается страниц опций и многочисленных настроек.
Что касается страницы редактирования записей, то я бы посоветовал обратить внимание на несколько критериев. Лично мне очень нравится большое текстовое поле, где можно набирать тексты, но так, чтобы ничего не мешало. Часто текстовое поле размещается рядом с боковой служебной колонкой, тем самым текстовый редактор занимает мизерную часть ширины экрана. Чтобы лучше понять мою мысль, представьте себе текстовый редактор LibreOffice. Если система позволяет раскрыть окно редактора на всю ширину браузера, то вам будет достаточно комфортно работать с текстом.
Лично для меня вершиной удобства является админка Albireo CMS. Посмотрите скриншоты админ-панели, чтобы понять как это может выглядеть в идеале.
Структура страниц
Чтобы вам было немного проще, я расскажу как устроена любая страница любого сайта. Это всегда HTML-код. Поэтому, независимо от того, какую вы выберете систему, очень важно иметь возможность влиять на итоговый html-код страницы.
Разные системы по разному решают эту задачу. Я покажу на примере MaxSite CMS, потому что в ней это реализовано очень хорошо и вам будет пример с которым вы сможете сравнивать.
Структурно любая html-страница состоит из секции HEAD и BODY.
Секция HEAD — это служебная секция, в которой прописываются всякие meta-данные и подключаются css-стили и js-скрипты. Например вы хотите подключить внешний js-скрипта или внешние css-стили к своему сайту. Система позволяет сделать это разными способами, но вам следует выбрать тот, который не потребует изменений файлов шаблона или системы. В MaxSite CMS для этого можно использовать например ушку head
.
Или например вы хотите прописать несколько своих css-стилей в секцию HEAD. В MaxSite CMS для этого есть отдельная опция/вкладка «CSS стили», где вы просто пишете нужный код.
Вторая секция BODY — это то, где выводится весь контент сайта. Структурно вёрстка страницы обычно разбивается на верхний блок шапки (header), нижний блок подвала (footer), а между ними контекстная часть с текстом записи и боковым сайдбаром (sidebar).
Текст записи — это то, что вы набираете в текстовом редакторе, а вот остальные блоки скорее всего должны быть отдельными файлами (модулями, компонентами). То есть когда вам нужно сменить шапку или подвал, то вы можете выбрать в админ-панели компонент понравившейся шапки/подвала. Это возможно потому что компоненты представляют собой самостоятельные файлы. Если подходящего компонента нет, то вы можете сделать свой. Важно при этом то, что не затрагиваются другие файлы шаблона. Вообще.
Сайдбар состоит из виджетов — где каждый это отдельный блок. Управлять виджетами можно на отдельной странице (там все настройки виджетов), а потом просто указывается какие виджеты нужно разместить в сайдбаре. Таким образом устройство сайдбара само по себе достаточно сложно с технической точки зрения, но скорее всего у вас не будет задач, которые выходят за рамки системы. Поэтому задачи будут более примитивные. Например разместить в сайдбаре рекламный блок. Для этого вы используете уже готовый виджет, где указываете свой код. Важно, чтобы система поддерживала однотипные виджеты, например разместить сразу пять реклам в разных частях сайдбаров.
Если вы поймёте, как устроена страница, то вам будет проще определить требованию к CMS. Такая структура не моё изобретение, а является общемировой практикой html-вёрстки. Поэтому, чем ближе CMS будет к этому «стандарту», тем лучше.
Но есть системы, где шаблон представляет собой смесь фиксированного html и php-кода. В таких системах предполагается, что вся верстка должна осуществляться с помощью css-стилей. Это, конечно, же тупиковая идея, поэтому мой совет — это выбирать системы, где вы будете иметь полный контроль над HTML. Если при этом можно будет этим управлять, не меняя файлы шаблона, то это будет прекрасно.
«Голые» системы
Многие системы поставляются фактически в «голом» виде. Для того, чтобы получить из них полноценный сайт, потребуется установить либо массу сторонних плагинов, либо лезть в код шаблона. Лично я не считаю, что это нормально, поэтому я бы обратил внимание на то, насколько система из коробки удовлетворяет критериям современного сайта.
Решается это разными способами.
Часто разработчики предлагают установить дополнительные модули к системе. Некоторые разработчики именно так монетизируют свои CMS, предлагаю систему бесплатно, а модули уже за деньги.
Для MaxSite CMS я выбрал другой путь — в комплекте системы уже почти 70 готовых плагинов. То есть помимо того, что система предлагает из коробки, можно добрать функционал через плагины. Они покрывают 99% потребностей сайта, потому что за 15 лет развития, было придумано уже всё что можно.
Но вот для Albireo CMS я использую другой подход. В ней нет такого понятия как плагин, но зато шаблон сам решает что и как выводить. Поэтому базовый шаблон уже из коробки имеет всё то, что в других системах ставится отдельно.
Собственно я хочу обратить ваше внимание, что любая CMS должна сразу из коробки иметь минимально необходимый функционал современного сайта. Если этого нет, то должен быть простой механизм внедрения произвольного кода.
Ресурсопотребление и размеры
Хотя это я упоминаю WordPress, всё-таки нужно признать, что есть системы, которые также много жрут ресурсов. Проверить это довольно сложно, поэтому ориентируйте на отзывы, или на реальные сайты этой системы.
Также бывают системы, которые сами по себе занимают много места на диске. В статье PHP - неправильный путь. Фатальные недостатки развития языка я привожу статистику некоторых php-систем по размеру кода. Мой совет ориентироваться на небольшие системы, потому что в них элементарно меньше хлама и мусора. Не говоря уже о том, что большое количество файлов может привести к блокировке на сервере хостера.
Системы на базе данных или на файлах (flat-file system)
Работать с базой всегда сложнее, чем с файлами, но есть масса задач, когда для сайта не требуется сложная CMS. Например вы делаете сайт для лендинга — это всего лишь одна страница, для которой ставить CMS просто не имеет смысла. Даже если у вас 10 страниц, то CMS вам просто не нужна.
Мне приходилось работать с клиентами, которые ставили WordPress только для нескольких страниц. Просто потому что начитались всяческих обзоров. Ирония в том, что им приходилось платить за дорогой хостинг. Когда мы переводили сайт на MaxSite CMS или Albireo Framework, то они переходили на самый дешёвый тариф и экономили кучу денег.
Системы, которые работают на файлах (как Albireo CMS) имеет огромное преимущество в том, что они могут быть очень компактными. Просто для сравнения: текущая версия Albireo Lite имеет ядро из двух phar-файлов суммарным размером 75 Кб (распакованный размер 225 Кб).
Если вам нужен простой сайт, то не спешите выбирать систему на MySQL, вполне возможно вас устроит Flat File CMS, вроде Albireo CMS.
Установка системы. Обновление
Первый тест на пригодность системы — это этап её установки. Перед тем, как скачивать систему, почитайте раздел документации о том, как её нужно устанавливать. Если будут скриншоты, то это ещё лучше, вы сразу помёте с чем придётся столкнуться.
Чем проще установка, тем лучше. Есть системы, которые имеют установщик на несколько страниц, где куча вопросов и опций. Для новичка — это достаточно сложно, тем более, что сейчас почти все технические вопросы установки можно решить автоматом. Останется буквально несколько полей, где нужно ввести конфиденциальные данные.
Также я встречал системы, которые устанавливаются с помощью composer или git. Хотя git это еще приемлемо, поскольку это просто копирование с гитхаба, но вот composer — это целая экосистема. Да, там буквально пара команд, но потом вы столкнетесь с проблемой обновления системы. Там такой «лес» повылазит...
Для сравнения скажу как происходит установка MaxSite CMS. Самый простой способ — это загрузить на сервер пару файлов установщика и набрать его в браузере. Установщик сам скачает дистрибутив в гитхаба, выполнит распаковку файлов и запустит мастер установки — это одна страница, где нужно указать параметры базы и админский пароль.
Также есть системы с нулевой установкой. Например Albireo CMS не требует установки. Вы просто загружаете файлы на сервер и всё начинает сразу работать. То есть вообще нигде ничего не нужно указывать.
Что касается обновления, то есть разные подходы. Современный заключается в том, что это должно происходить автоматом. На самом деле это достаточно сложное техническое решение, поэтому в идеале вы просто нажимаете кнопку или ссылку «Обновить» и система сама обновляется как ей нужно. Такая схема используется в MaxSite CMS и в WordPress.
Многие системы не имеют своей «обновлялки», тогда обновление происходит простым копированием новых файлов по FTP. В принципе я бы не отвергал такого способа, особенно если файлы системы не на гитхабе, а где-то в дебрях Сети.
Использование php-фреймворков
Есть системы, которые работают на сторонних php-фреймворках. Например MaxSite CMS использует CodeIgniter второй версии. Но CodeIgniter очень компактный и быстрый фреймворк, поэтому его использование оправдано. Чего не скажешь о таких монстрах, как Laravel или Symfony. Они сами по себе очень-очень большие, поэтому когда CMS их использует, то её размер превышает любые разумные пределы. Поэтому я бы избегал таких CMS, тем более, что их структура становится жутко запутанной, как и сам php-фреймворк.
«Универсальность» системы
Лично я не считаю, что CMS должна подходить для всех задач пользователей. Любая система всегда базируется на некой структуре данных и работает с ней. Поэтому когда мы говорим об обычном сайте, то всегда подразумеваем, что есть текст записи, какие-то метки, рубрики, какие-то поля и всё. Но если речь идёт, например об Интернет-магазине, то это уже совершенно другая структура данных. Это множество таблиц со сложной, а часто и индивидуальной, структурой. Если для типичного сайта/блога делать систему, которая ещё и будет Интернет-магазином, то это как скрещивать ужа с ежом.
Поэтому не нужно стремиться к «универсальным» системам. Например для WordPress есть плагины для магазинов, но это настолько сильно усложняет работу «движка», то сайт становится совершенно неподъёмным для сервера. Можно было бы поставить просто отдельную систему, но многие почему-то считают, что это «не кошерно».
Поэтому лучше иметь специализированное решение. Если нужен магазин, то лучше использовать соответствующую систему, например OpenCart. Может она и не идеальна, но изначально нацелена на решение этих задач.
Итого
Работая с MaxSite CMS и Albireo CMS, я постоянно смотрю на другие системы. Некоторые из них выглядят очень неплохо, даже не смотря на их непопулярность. Были системы, которые меня восхищали по своему компактному коду. Стороннему человеку может показаться, что все поголовно сидят на WordPress и больше ничего другого не существует. На самом деле многие программисты презирают WordPress и его популистский подход и предлагают свои альтернативы. Конечно их системы никогда не будут иметь такую популярность, но это не значит, что они хуже.
Нужно просто понимать, что задача любой CMS — это генерация HTML-кода и это может быть важным критерием выбора системы для своего сайта. CMS должна помогать строить сайт, а не вводить свои ограничения.