CMS «GIRVAS»

Логотип CMS «GIRVAS».
Логотип CMS «GIRVAS».

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

Привет, меня зовут Андрей - я разработчик-самоучка и по совместительству руководитель собственного предприятия в лице ИП. Так уж сложилось, что начиная с 2020 года я занимаюсь разработкой собственной системы управления содержимым с нуля и двигаюсь к своей цели несмотря ни на что. На своем пути я встречал презрение, недоумение и насмешки в адрес моей работы - все это из-за банального непонимания того чем я занимаюсь. Однако теперь, когда люди видят, что разрабатываемая система работает, думают уже иначе. Презрение, недоумение и насмешки начинают улетучиваться, заменяясь пониманием и желанием увидеть результат.

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

Важность наличия веб-сайта

Прежде чем я начну писать о самой системе, предлагаю поговорить о том, а зачем вообще нужен веб-сайт? В современном мире веб-сайты играют важную роль, но иногда не первостепенную, поскольку социальные сети и мессенджеры стали мощным инструментом для рекламы и информирования. Однако ярые приверженцы идеи наличия только странички в социальной сети либо не знают, либо не хотят понять то, что наличие веб-сайта дает больше возможностей для рекламы и информирования, поскольку внешне оформить сайт и информацию можно разными путями. И тебя никто в этом не ограничит, поскольку все что перед тобой - полностью под твоим контролем.

По мимо тотального контроля над информацией и внешним видом стоит учитывать и возможность самопиара организации при помощи веб-сайта. Как правило, веб-сайт организации является ее лицом в сети Интернет, поскольку ни один человек в Интернете не расскажет столько, сколько это сделает веб-сайт - услуги, примеры работ, описание самой организации, контакты и прочее. Наполнение веб-сайта уже зависит от его типа, поскольку его тип влияет не только на характер наполнения, но и способ его отображения. Хотите только рассказать об организации и услугах? Ваш выбор - лендинг или сайт-визитка. Хотите периодически информировать клиентов о происходящем вокруг компании и поддерживать с ними диалог? Ваш выбор - блог или полценный веб-портал. Хотите просто общаться с клиентами? Ваш выбор - блог или форум. Как видно из всего этого - веб-сайт может быть разным. Все зависит от задачи.

Разработка новой CMS

Во время разработки я часто сталкиваюсь с одним и тем же вопросом: «Зачем разрабатывать новую CMS, если в Интернете уже существует куча других?». После этого вопроса начинают приводить в пример, как правило, зарубежные CMS: WordPress, Joomla, OpenCart и MODX. Их очень много, и каждая из них нацелена на что-то конкретное. Одна CMS нацелена больше на блоги, другая на интернет-магазины и так далее. Везде прослеживается одно и тоже - целевой тип. Начиная с 2022 года пришла еще другая проблема - вероятность ухода с российского рынка иностранных CMS. Конечно для CMS с открытым исходным кодом сделать это будет сложно, но разработчики могут пытаться препятствовать распространению своей системы на территории России, если этого захотят.

График доли на рынке CMS по версии блога компании «ArtisMedia»
График доли на рынке CMS по версии блога компании «ArtisMedia»

Смысл работы любого разработчика - желание разрабатывать и развиваться, пытаться внести в этот мир что-то новое, что-то инновационное. Я не жду того, что все скажут «Вау». Этого никогда не будет. Всегда найдутся те, кому разработка покажется плохой или ненужной, и для для аргументации найдут кучу причин. Иногда даже на оценку может повлиять старый опыт использования или банальное недоверие к новому. Доверие и уважение надо завоевывать.

У меня есть команда, но разрабатываю CMS один. Исключением является лишь верстка и иногда клиентское программирование дополнительных шаблонов для сайта - эту задачу я доверяю другому человеку, поскольку не могу разорваться на несколько частей.

Работая над CMS я опираюсь на желание выпустить вполне востребованный и универсальный продукт. По планам, новая система управления содержимым не должна быть нацелена на конкретный тип веб-сайта. Я хочу сделать так, чтобы веб-мастер смог сделать свой веб-сайт таким, каким хочет. Понятное дело, что в некоторых случаях придется изобретать собственный кирпич и даже использовать костыль и самопальный велосипед, но новая CMS должна стать максимально гибкой и давать меньше необходимости в "допиливании" функционала.

Итак, я плавно подхожу к рассказу о самой CMS. Уважаемые читатели, перед вами CMS «GIRVAS» - карельский взгляд на системы управления содержимым.

Назначение CMS

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

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

Техническая начинка. Что «под капотом»?

CMS «GIRVAS» разрабатывается на C-подобном скриптовом языке общего назначения PHP версии 8.2.6. Еще один из частых вопросов, который мне задают, это «А почему PHP, а не какой-то другой язык? Например, Python?». Это вопрос о популярности.

Не смотря на то, что PHP является одним из самых старых языков для веб-разработки - его использовало по состоянию на 18 января 2024 года, по версии независимой компании «W3Techs», 76.6% всех веб-сайтов в сети Интернет, чья начинка «под капотом» известна. В мае 2023 показатель был 78,9%. Доля постепенно снижается, но можно сказать, что PHP будет держаться еще долго, поскольку продолжает совершенствоваться. На момент написания данной статьи уже есть версия 8.3.0, поэтому CMS будет переведена в дальнейшем на более новую версию.

Статистика использования PHP веб-сайтами по состоянию на 18 января 2024 года по версии компании «W3Techs».
Статистика использования PHP веб-сайтами по состоянию на 18 января 2024 года по версии компании «W3Techs».

Как видно из статистики используемый язык программирования довольно популярен, поэтому и было принято решение изначально писать CMS именно на PHP, а не на каком-то другом. Это о серверной составляющей. Что с клиентской частью?

Клиентская часть, что неудивительно, пишется на JavaScript без использования сторонних библиотек. Я придерживаюсь разработки собственных решений. Любителей jQuery сразу расстрою - его там нет, но это не мешает его туда встроить, если в этом есть необходимость.

Коробка с карандашами. Точнее с модулями...

О какой коробке с карандашами я пишу? Карандаш - один из инструментов, который позволяет что-то дорисовать/нарисовать, если это необходимо. Так и с модулями. Речь пойдет о модульной системе CMS «GIRVAS».

Страница с модулями в административной панели CMS «GIRVAS».
Страница с модулями в административной панели CMS «GIRVAS».

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

История разработки CMS уходит в лохматые 2015-е годы, в мои школьные годы. Тогда были мои первые попытки, которые не увенчались успехом. Тогда я только начал изучать программирование, основы веб-разработки, да и устройство веб-сайтов в целом. Уже тогда я делал первые попытки по созданию собственной системы, поскольку мне стало не хватать конструкторов (по типу uCoz, Яндекс.Народ) и готовых CMS. Интерес и жажда создать свое взяли вверх.

Если бы я, начиная с 2015 года, пытался учесть абсолютно все, да еще и с учетом интенсивности развития мира веб-разработки, то я бы никогда не приблизился к той точке, до которой я дошел сегодня. Сейчас я стою на пороге выпуска своей собственной системы управления с модульной системой, которая позволяет дополнить систему отсутствующим функционалом.

Для того, чтобы способ разработки модулей стал более понятным, будет выпущена документация по модулестроению. Ниже представлен демонстрационный ролик от 30 августа 2023 года по модульной системе.

Демонстрационное видео от 30 августа 2023 года: «Модульная система»

Собственный репозиторий или «внешний склад» с модулями и шаблонами

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

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

Шаблоны со своей логикой сборки

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

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

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

Мультиязычность. Говорим с поисковиками на других языках!

«Насколько высока потребность в мультиязычности веб-сайтов сегодня?» - это один из вопросов, который я начал получать не так давно от тех, кто стал интересоваться CMS «GIRVAS». Однозначного ответа на этот вопрос нет, поскольку он очень относителен. Я постараюсь дать ответ на него.

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

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

Страница создания записи в CMS «GIRVAS» с языковым переключателем.
Страница создания записи в CMS «GIRVAS» с языковым переключателем.

Для сторонних CMS существует масса различных модулей для перевода контента на разные языки, где-то этим может заниматься даже нейросеть. Некоторые контент-мейкеры просто дублируют записи с переводом на другой язык, что приводит к огромному количеству дублей самих записей. Представьте просто список существующих записей в административной панели, где каждую запись переводят и создают ее как отдельную. А если таких языков несколько? Такое может привести к переполнению и станет просто неудобно работать с таким огромным количеством записей. Я же решил пойти иным путем.

К сожалению, на текущий момент в CMS «GIRVAS» не применяются нейросети, поэтому система не может переводить самостоятельно, однако, каждый редактор (или контент-мейкер) может перевести статью самостоятельно и добавить перевод к записи. Если говорить коротко, то запись будет одна, а переводов несколько. Причем все версии перевода роботы поисковых систем могут спокойно индексировать - уже проверено на тестовой версии CMS. Поэтому если правильно оптимизировать контент для всех переводов, то он может выбиться в лидеры по поисковым запросам у иностранцев.

CMS «GIRVAS» поддерживает неограниченное количество пакетов для перевода самой CMS. Сами пакеты представлены в виде JSON-объектов, из которых CMS уже берет нужные фразы для перевода. По такому же принципу работает и перевод отдельных элементов у сторонних шаблонов. Если, к примеру, для CMS был разработан шаблон, где имеются фразы, которые отсутствуют в базовом пакете перевода, то можно добавить такой перевод в дополнительный пакет, предварительно включив его непосредственно в шаблон. Принцип работы будет описан в документации.

Система мультиязычности будет развиваться и дорабатываться. Чуть ниже представлен демонстрационный ролик, который был выпущен 15 августа 2023 года - там показано создание мультиязычной записи.

Демонстрационное видео от 15 августа 2023 года: «Создание мультиязычной записи»

Поддержка трансляции контента через веб-каналы

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

Подобный вид передачи информации необходим в том случае, если имеются какие-то приложения, которые работают с XML-данными в виде так называемых «фидов». По такому принципу работают многие приложения в виде интернет-читалок, импортирующие новости через RSS-каналы.

Создание веб-канала в административной панели CMS «GIRVAS».
Создание веб-канала в административной панели CMS «GIRVAS».

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

Разметка проще некуда! Markdown в студию!

Помните я писал о том, что являюсь сторонником собственных решений? Пожалуй, в CMS имеется единственное исключение - готовое решение под названием «Parsedown», которое позволяет парсить Markdown-разметку и преобразовывать ее в HTML-сущности.

Встроенный собственный редактор записи «NadvoTE» с поддержкой Markdown-разметки до преобразования содержимого.
Встроенный собственный редактор записи «NadvoTE» с поддержкой Markdown-разметки до преобразования содержимого.
Встроенный собственный редактор записи «NadvoTE» с поддержкой Markdown-разметки после преобразования содержимого.
Встроенный собственный редактор записи «NadvoTE» с поддержкой Markdown-разметки после преобразования содержимого.

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

Базовый синтаксис Markdown:

Минималистичный интерфейс

«Простота и понимание» - вот девиз, которого придерживаюсь при разработке интерфейса административной панели CMS «GIRVAS». Интерфейс прост и минималистичен.

Стартовая страница административной панели CMS «GIRVAS».
Стартовая страница административной панели CMS «GIRVAS».

При разработке интерфейса я уделяю внимание его дружелюбности по отношению к своему пользователю. Стараюсь уместить максимум «Must Have» функционала, при этом оставляя интерфейс интуитивно понятным. Цветовая гамма включает в себя приятные оттенки серого и черного монохромов, а также редкие пастельные цвета синих, зеленых и красных оттенков.

Если кому-то вдруг не понравится дизайн административной панели, то CMS «GIRVAS» позволяет разработать свой собственный и установить его. Понадобится это, скорее всего 0.0001% всех пользователей, но решил все равно это предусмотреть.

Система комментирования

Общение и дача обратной связи по контенту очень важны, поскольку именно при помощи коммуникации со своей аудиторией автор сможет узнать реальное отношение к себе, как к автору. Именно поэтому была разработана полноценная система комментирования с автоматической модерацией.

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

Демонстрационный ролик от 25 октября 2023 года системы комментирования в CMS «GIRVAS».

Система интерактивных элементов

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

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

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

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

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

Турбо-страницы Яндекса и микроразметка

Поскольку в CMS идет ставка на оптимизацию контента и эффективную индексацию со стороны поисковых роботов, то необходимо пользоваться доступными инструментами для «прокачки» страниц в поисковых системах.

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

Бизнес-модель CMS «GIRVAS»

Я считаю, что подобные системы должны быть общедоступными, а поэтому бесплатными. Платно можно предоставлять только дополнительный сервис, например по обслуживанию системы или доступу к премиальным дополнениям.

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

Заключение

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

После того когда я выпущу свою систему, подготовлю по ней документацию, нормально наполню официальный сайт системы управления и зарегистрирую программу в Росреестре - я опубликую ее код в GitHub (он там есть уже, но в приватном репозитории). Меня будет интересовать обратная связь по качеству кода и работы некоторых механизмов. Любая поддержка и помощь будут фиксироваться на официальном сайте и последующих релизах системы на специальной странице с благодарностями.

Я хочу получить действительно достойный и качественный продукт, который должен стать достойной альтернативой на территории не только моей Республики Карелия, но и России в целом.

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

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

Полезные ссылки

88
11 комментариев

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

это как
у вас там в CMS много холодных речек, грибов и комаров?

2
Ответить

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

Ответить

Не раскрыта кибер фича CMS. Для чего её делаете? Какую проблематику она решает по сравнению с теми CMS, что уже есть на рынке? Целились бы уже в какие то тренды разработки чтобы стрельнуло, например генерация сайта нейросетью, или например какая-нибудь CMS с SPA+SSR или что там нынче еще можно, скорость работы например, но надо было взять NodeJS тогда или Go какой-нибудь. В общем не совсем понятно для чего использовать именно вашу систему, а не битрикс/вордпресс/джумлу/друпал например.
Хотя может у вас там симфони под капотом и все по SOLID и покрыто тестами и разработчикам разрабатывать кастомные сайты одно удовольствие для "сурового энтерпрайза"

2
Ответить

Вы отстали от жизни лет на 10

2
Ответить

Какие-то вайбы Попова ощущаются.

2
Ответить

Помню его, он еще свои курсы на DVD продавал))

Ответить