BMF - фрэймворк для приятного блогерства

May 21, 2013 21:29


Давно, почти 2.5 года назад я как-то писал, что недоволен всеми имеющимися на данный момент блоговыми платформами - http://mpak666.livejournal.com/569457.html

Вот даже в ЖЖ пишу, а я все равно недоволен. Для меня ПОСТ в блоге это не просто огромная ТЕКСТОВАЯ запись внутрь, которой вложен весь сопутствующий хлам: фото, видео, мп3 файлы, исходники например кода и т.п.

Я расписал это по пунктам и начал думать как реализовать, то что я хочу. Понятно, что постоянная нехватка времени, что-то делалось, что-то с перерывами, но со скрипом писалось. Часть вещей кстати помог камрад 404_denied написать, спасибо и ему за вклад в open source https://github.com/mpakus/bmf

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

И знаете, ничего не изменилось! Я ничего подобного не нашел. Wordpress опять же все предлагает все пихать в текстовое поле, смешивая например текст и исходный код с картинками. Octopress или подобные git блоги хороши, но нет динамики, не работает из браузера и нужно иметь доступ к репозитарию. Пробовал кучу PHP, Rails самописок, но все словно идут по одной дороге и делают одно и тоже. Не плохая http://anchorcms.com но слишком примитивный редактор, нет тэгов, да и редактор опять тоже в одно текстовое поле.

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

Я запустил: http://gemsfromhell.com - сайт который будет интересен в общем-то Ruby on Rails разработчикам, где хочется публиковать обзоры встречающихся в работе gem'ов, автор я один, но если желаете присоединиться, проблем нет, блог, то много пользовательский.

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

В кратце пробегусь по пунктам, что я хотел и что уже есть, а потом покажу на примере как это работает.

Вот, что я хотел от платформы, повторюсь:
1. Внутри желательно бы иметь какой-нибудь фреймворк, любой PHP: CodeIgniter, YII, Symfony например, для Perl было бы идеально Mojolicious, ну и Rails разумеется под Ruby и еще бы версия 3.
2. Простота создания поста. Зашел под своим ником, нажал кнопку создать пост, он создался сразу в черновиках, заголовок, категория, тэги, может быть 1-2 (настраиваемо) картинки с авторесайзом и сразу текстовое поле например для краткого описания и полного текста.
3. Модульность. Что позволяет например после написания краткого текста, вставить еще один "блок" например с ajax фотоальбомом, который создает например 12 превьюшек, а после него вставить в пост блога еще один "блок" в котором можно продолжить писать текст, а потом еще "блок" например с картой Google чтобы отметить своё местоположение и т.д. То есть на один пост в блоге может быть куча блоков в контентном поле самых разных назначений и сочетаний.
4. Какая-нибудь гибкая система авторизации для комментариев, например через loginza и т.п. сервисы, чтобы имея аккаунт в томе же Facebook не надо было бы регаться на этом сайте чтобы оставить комментарий.
Разумеется данные бы входа лихо запоминались, ну и была бы своя регистрация, тоже нужно дело.
Комментарии древовидные, хотя бы до 5-7 уровней.
5. Многоавторство. То есть есть админ, как царь и босх, но он может внести людей, которые писали например "черновики", которых никто не видит, кроме них сами в группу АВТОРЫ и тогда люди получившие статус доверия могли бы уже вместе с создателем размещать материал на сайте.
6. Типизация начального поста. Это значит, что например есть ТИП ПОСТА: КИНООБЗОР, то главными полями у неё должны быть например Название, Год, Страна, Актёры, Обложка (самомасштабируемая) и уже самое описание, так же уже потом расширяемое модульными блоками. Разумеется у других типов постов в блоге есть другие поля, например ССЫЛКА НА ТОРРЕНТ это просто название, год, обложка и ссылка на трекер - всё.
7. Система рейтингов, как оценка постов пользователя и комментариев. Так же с возможностью видеть оцененные посты по ТИПУ, например киношки отсортированные по оценке отдельно, а ссылки на музыку отдельно.

1. Внутри CodeIgniter на PHP. Почему CI? Потому, что начинал я это писать 2 года назад, потому, что я знаю его идеально и у меня нет вопросов как и что сделать, я могу сделать все, так как CodeIgniter простой, отлаженный и очень гибкий. Почему PHP? Ну это все же самый распространенный веб-язык программирования + большая поддержка хостеров, а что еще надо для бложика?
2. Это сделал, покажу ниже с картинками.
3. Да, по идеи это тот же 2-ой пункт.
4. Пока нет и будет не известно, есть своя регистрация, напомнить пароль, профайл и т.п.
5. Да, много авторство и многоблоговость уже есть, а-ля Хабр и Лайвстрит все затожено. Нет пока ACL гибкого на это дело.
6. Типы заложены, но пока используется только 1 тип, но будет.
7. Рейтинг заложен на будущее, но пока не реализован функционал тоже как и 6.
Ну и еще добавлю 8-ым пунктом, система комментариев, она так же реализована, комментарии древовидные с возможностью отвечать на определенный комментарий. Но пока в моем блоге я отказался от этого и поставил просто disqus.

И так, понимаю, что может быть не понятно, почему мне например не нравятся Wordpress и его собратья. Попробую в картинках донести мою мысль "о том, что пост в блоге состоит из блоков".

Разберем вот этот свежий пост http://gemsfromhell.com/blog/show/2-ymniy-otlov-oshibok-s-better_errors-i-railspanel.html заходим и видим, что это казалось бы обычный, большой и длинный текст, в который вставлены куски кода с подсветкой и картиночки.
Но на деле это не так, весь пост это блоки разного типа, пока есть все такие:
текст - простое текстовое поле в виде MarkitUP редактора где есть горячие клавиши и можно писать html
подкат - это тот самый контрол, выше которого вся часть поста будет видна на главной странице или в ленте, а все что ниже полностью с верхом будет показано уже при раскрытии сообщения.
код - это раскрашенный исходник кода под язык, раскрашивается на клиенте через JavaScript
изображение - это откорректированная и вставленная в текст полноразмерное изображение.
В планах сделать еще ряд модулей:
видео - вставка видеоплэйера с популярных сервисов, а позднее даже с загрузкой на сайт
фотоальбом - загрузка множество фотографий пакетом и создание сразу вставленной в текст галереи из превьюшек с красивым раскрытие
музыка - вставка музыкального плэйера из соц. сетей и/или загрузка музыки на свой сервер

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

А теперь от слов к делу, как например я создал этот пост http://gemsfromhell.com/blog/show/2-ymniy-otlov-oshibok-s-better_errors-i-railspanel.html

1. Разумеется я авторизовался
2. Нажал на "Создать пост", появился черновик (draft) сообщения в блоге, оно еще не опубликовано и вижу только я его. Здесь все просто: заголовок, описание и тэги. Внутри еще заложены категории, но пока я это не реализовывал. Сохранил это дело, после чего появляется возможность поработать уже с контентом сообщения. Выглядит это так.


3. Я первым делом создал блок ТЕКСТ, вдоволь его назаполнял анонсом, его я хочу показать на главной и в ленте постов.


4. Потом я добавил блок ПОДКАТ, то бишь выше будет на главной а все это вместе только после раскрытия полного сообщения.

5. Захотелось потом показать исходный код. Добавил блок КОД, скопировал туда мой исходник, выбрал язык программирования на котором этот код написан, в нашем случае это Ruby и сохранил блок.


6. Потом например добавил ИЗОБРАЖЕНИЕ, подписал его красиво и тоже сохранил.


И так например множество количество раз. Если ошибся вернулся, всегда можно отредактировать именно блок, а можно его еще и удалить. Порядок пока жесткий задан, но сортировать блоки между собой drag-n-drop'ом конечно же можно будет, мы ведь в 21-ом веке.

В общем написал я текст, куча картинок, куча кода и закончил, под конец нажимаю просто ПУБЛИКОВАТЬ и пост на сайте. Все просто, все четко, лаконично и не надо думать как вставить картинку, где покрасить исходник, как текст оформить. Все блоки имеют свои стили. Все блоки окружены своим функционалом. Так что писать такие блоки позднее будет просто радость и загляденье.

А вот и опубликованный например результат http://gemsfromhell.com/blog/show/2-ymniy-otlov-oshibok-s-better_errors-i-railspanel.html - это уже "бесшовная" страница с которой приятно читать и можно при ярком желании понастраивать стили и прочее.

Нет желания сделать из этого какого-то монстра как Wordpress, а есть желание сделать солянку из версий:
1. Это уже собранный блог и заточенный под универсальный, первональный блог, текстики, картиночки, перепостики видео и приколов. В блоге легко подгружать новые темки, заходить и писать для себя любимого.
2. Фрэймворк, экспериментальная штука из которой можно сделать, что угодно. Накрутить немного функционала и получить аналог Livestreet сообщества или же урезать часть и получить обычный блог например семьи путешественников.
3. Это сервис на базе этого фрэмворка, большой такой, достойный, с кучей возможностей, которые я вижу в голове, но главная фишка помимо вышеперечисленных, тонкая и прозрачная миграция с других блогов и сервисов. В идеи это Livejournal, liveinternet, blogpost и Wordpress ну и может еще по потребности будут допиливаться новые импорты, это уж как нужда заставит.

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

Вот так вотЪ.

php, проект, идея, программирование

Previous post Next post
Up