Движок blog²
Это удивительно, но я всё же написал новый движок для своего блога. Работы ещё много, но с сегодняшнего дня эта лента функционирует на CMS, получившей нескромное название blog².
Для создания нового движка был использован фреймворк Lite, разработанный несколько лет назад для других проектов и клиентских сайтов. Прежде чем приступать к работе над blog², я практически полностью переписал фреймворк — пересмотрел архитектуру, вынес часть функций ядра в подключаемые плагины, ввёл полноценную реализацию MVC.
И вот, спустя несколько месяцев работы, блог наконец-то переезжает на новую систему.
О разработке
При создании движка я ориентировался в некоторых аспектах на CMS «Эгея» (ранее — E2) Ильи Бирмана — до этого блог работал именно на ней. Однако то ли наши с Бирманом взгляды на функции такого ПО существенно расходятся, то ли он и правда перебрал с минимализмом, однако его «Эгея» в конце концов стала совсем уж ограниченной и малофункциональной.
Всего лишь несколько примеров. Во-первых, сейчас она даже не поддерживает такую простую вещь, как cut (это когда в списке постов содержимое отображается не целиком, а даётся лишь первый абзац со ссылкой «Читать далее»). Во-вторых, разметку текста движок Ильи Бирмана предлагает делать вручную, на языке, подобном Markdown. Такое положение дел меня не устроило.
Итак, резюмируя: дизайн blog² разрабатывался без копипаста, но под впечатлением от оформления «Эгеи» и унаследовал от неё некоторые черты. Что же касается функциональности, то здесь дело обстоит иначе: всё было разработано по собственному разумению, и возможностей, как и перспектив их расширения — намного больше. Ниже я перечислю несколько особенностей нового движка.
WYSIWYG-редактор на базе QuillJS
Предусмотрен базовый набор возможностей — заголовки, полужирное и наклонное начертания, списки, ссылки, кнопка вставки cut и форматирование текста, как программного кода (с помощью Highlight. js). Вот как выглядит страница редактирования этого поста:
Загрузка файлов. Фотогалереи в пару кликов
В blog² реализован полноценный загрузчик файлов, которые затем можно вставлять в пост, просто нажав на них (в ToDo-списке значится ещё и возможность вставлять их перетаскиванием).
Файл в редакторе:
Файл при просмотре поста:
В «Эгее» есть очень полезная возможность — если подряд написать в тексте поста несколько имён файлов приложенных картинок, то они автоматически выстроятся в галерею на базе «Фоторамы». Такая же функция предусмотрена и у моего движка — вставленные в один ряд блоки картинок преобразуются в галерею. В дальнейшем это коснётся и MP3-файлов, которые движок будет автоматически составлять в плей-лист.
В редакторе:
На странице поста:




Автоматическая отправка постов в социальные сети
Да, blog² дружит с соцсетями. Пока что реализована поддержка только ВК и Twitter, однако благодаря модульной реализации движка не составит ни малейшей трудности добавить поддержку Facebook, Google Plus — словом, любой соцсети, у которой есть API. Кроме «Одноклассников», конечно, это принципиальный момент.
Пост можно отправить в свои ленты прямо со страницы редактирования, включив нужные направления.
Поскольку у всех соцсетей есть собственные правила отображения постов и вложений, blog² для каждой предложит оптимальные шаблоны. Но вообще — перед отправкой можно скорректировать текст и указать, какие файлы из поста следует включить в публикацию, поэтому здесь для пользователя нет никаких ограничений.
Типограф
В blog² работает типограф, который автоматически сделает кавычки правильными, добавит неразрывные пробелы, отформатирует суммы, номера телефонов и даже расставит забытые запятые. Используется типограф Евгения Муравьёва, который в сумме реализует 78 правил.
Видео
Ещё одна подсмотренная у «Эгеи» фишка — если один из абзацев состоит только из ссылки на YouTube-видео, то вместо него автоматически будет вставлен плеер с этим видео. Вот, как смотрится это в редакторе:
А вот, что появляется в посте:
Эта возможность воплощена более детально, чем в «Эгее». К примеру, обратите внимание на тот факт, что параметр ?t=17 в ссылке тоже был учтён — видео при проигрывании начинается с 17-й секунды. Также с помощью плагинов можно будет легко реализовать аналогичную конвертацию ссылок в embed-коды и для других сервисов — Twitter, Instagram, Facebook.
Быстрая загрузка
blog² умеет подгружать содержимое динамически, без полной перезагрузки страницы. Это значительно ускоряет переходы между разделами сайта, да и вообще смотрится по-человечески. Аналогичный принцип используется во «ВКонтакте», но все уже слишком привыкли к этой функции, чтобы её замечать :)
Чего не хватает?
Хоть движок уже обрёл свои основные черты и в целом пригоден к использованию, многое в нём требуется доработать. Чем я буду заниматься в ближайшее время:
- Поиск. Здесь без особых комментариев, поиск нужен;
- Комментарии. Об этом я тоже умолчу, поскольку реализую не совсем обыкновенную систему комментариев. Ей будет посвящён отдельный пост.
- Поддержка расширений. Ещё на этапе переписывания фреймворка Lite первым делом я ввёл полноценную реализацию MVC, а затем начал делать его более дружелюбным к ленивым программистам — бóльшую часть «грязной работы» он берёт на себя, код получается коротким и лаконичным. Поэтому одним из первых нововведений станет поддержка расширений, а вместе с ней придёт и комплект документации.
- Раздел настроек. На самом деле его каркас уже полностью реализован, однако самих настроек пока мало. Несмотря на то, что курс взят на минимализм и удобство, было бы кретинизмом мешать пользователю тонко конфигурировать систему (привет, Opera и прочие Chrome-образные браузеры; привет, Windows 10). Поэтому настраиваться будет многое — этот раздел я сделаю детально и с особенной любовью. Образцом в этом плане может служить мой любимый браузер Vivaldi, которым я уже давно всем уши прожужжал, и не собираюсь останавливаться.
- Адаптация под мобильные устройства. Движок разрабатывается по принципу «desktop first» — в первую очередь вёрстка адаптируется для полноценных ПК. Однако это не значит, что мобильные устройства следует игнорировать.
Хотите предложить ещё что-то? Напишите о своих идеях, я буду рад (контакты здесь). Но не забывайте, что blog² - это не WordPress. Он не должен быть мультифункциональным комбайном, который заказывает владельцу блога пиццу и показывает ему кино. Движок будет выполнять только функции, непосредственно относящиеся к ведению блога.
В отличие от популярных CMS в этом сегменте, большинство необходимых функций и подключаемых плагинов в blog² доступны сразу, «из коробки». Пользователю они представлены в максимально дружелюбном и быстром интерфейсе, не отягощённом проблемами обратной совместимости или излишней унификации. В этом и заключается концепция проекта.
Вы действительно хотите удалить этот пост?