Движок blog²

Это удивительно, но я всё же написал новый движок для своего блога. Работы ещё много, но с сегодняшнего дня эта лента функционирует на CMS, получившей нескромное название blog².

Для создания нового движка был использован фреймворк Lite, разработанный несколько лет назад для других проектов и клиентских сайтов. Прежде чем приступать к работе над blog², я практически полностью переписал фреймворк — пересмотрел архитектуру, вынес часть функций ядра в подключаемые плагины, ввёл полноценную реализацию MVC.

И вот, спустя несколько месяцев работы, блог наконец-то переезжает на новую систему.

О разработке

При создании движка я ориентировался в некоторых аспектах на CMS «Эгея» (ранее — E2) Ильи Бирмана — до этого блог работал именно на ней. Однако то ли наши с Бирманом взгляды на функции такого ПО существенно расходятся, то ли он и правда перебрал с минимализмом, однако его «Эгея» в конце концов стала совсем уж ограниченной и малофункциональной.

Всего лишь несколько примеров. Во-первых, сейчас она даже не поддерживает такую простую вещь, как cut (это когда в списке постов содержимое отображается не целиком, а даётся лишь первый абзац со ссылкой «Читать далее»). Во-вторых, разметку текста движок Ильи Бирмана предлагает делать вручную, на языке, подобном Markdown. Такое положение дел меня не устроило.

Итак, резюмируя: дизайн blog² разрабатывался без копипаста, но под впечатлением от оформления «Эгеи» и унаследовал от неё некоторые черты. Что же касается функциональности, то здесь дело обстоит иначе: всё было разработано по собственному разумению, и возможностей, как и перспектив их расширения — намного больше. Ниже я перечислю несколько особенностей нового движка.

WYSIWYG-редактор на базе QuillJS

Предусмотрен базовый набор возможностей — заголовки, полужирное и наклонное начертания, списки, ссылки, кнопка вставки cut и форматирование текста, как программного кода (с помощью Highlight. js). Вот как выглядит страница редактирования этого поста:

Загрузка файлов. Фотогалереи в пару кликов

В blog² реализован полноценный загрузчик файлов, которые затем можно вставлять в пост, просто нажав на них (в ToDo-списке значится ещё и возможность вставлять их перетаскиванием).

Файл в редакторе:

Файл при просмотре поста:

Д. Горчев - Бывшая сказка.txt 18.50 Кб

В «Эгее» есть очень полезная возможность — если подряд написать в тексте поста несколько имён файлов приложенных картинок, то они автоматически выстроятся в галерею на базе «Фоторамы». Такая же функция предусмотрена и у моего движка — вставленные в один ряд блоки картинок преобразуются в галерею. В дальнейшем это коснётся и 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² доступны сразу, «из коробки». Пользователю они представлены в максимально дружелюбном и быстром интерфейсе, не отягощённом проблемами обратной совместимости или излишней унификации. В этом и заключается концепция проекта.

Загрузка...