CMS

индекс
77,19

Легкий и понятный форум на базе vanilla

image

На хабре уже была статья на тему форумного движка нового поколения Vanilla. В то время эта статья меня очень впечатлила. Я всегда думал о том, чтобы создать свой собственный форум, который будет лишен недостатков. Со временем во мне укреплялась мысль каким должен быть этот форум:



  • Легким и понятным
  • Визуально приятным, с отстутствием различных нагромождений
  • Быстрым
  • С возможностью локального сохранения картинок и создания превьюшек — кому хочется лишний раз хранить картинки на хостинге, который завален рекламой и может запросто закрыться, все-таки мы уже в 21 веке.
  • В духе веб 2.0 — время идет, технологии меняются. Не хотелось чтобы каждый для редактирования поста перезагружалась страница целиком.
  • Обязательно с лентой последних сообщений на главной странице
  • Обязательно с возможностью легкого входа через популярные сайты (facebook, google, twitter и т.д.)

Вроде бы список не такой уж и большой, но все форумные движки обладали какой-то не той функциональностью, которую я себе представлял. Vanilla был ближе всего к моему идеалу, т.к. в нем была реализована большая часть из вышеперечисленного. За исключением легкого и понятного (с моей субъективной точки зрения (!)) дизайна и возможности загрузок картинок. Я решил исправить этот недочет и… залип над движком на месяц. Я фикил баги разработчиков движка, помогал людям на официальном форуме, дополнял русский перевод, фиксил разные плагины, javascript'ы, php код для отображения русских символов. В это время вышла обновленная версия движка, я сделал merge и еще немного пофиксил :)

Тем, что у меня получилось я хочу поделиться с общественностью.

Изначально я хотел сделать движок только для себя. Но многие люди на официальном форуме просили поделиться движком и зарелизить тему. К сожалению, зарелизить тему отдельно у меня не получится, т.к. пришлось править core functions самого vanilla. Я все думал сделать отдельный проект, посвященный русскоязычной локализации этого восхитительного движка. Ведь русскоязычные версии существуют, но не отличаются (ИМХО) особой красотой. Сам чёрт на таких форумах ногу сломит (надеюсь, что никого не обидил).

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

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

image

С одной стороны стандартный функционал, но с другой в стандартной комплектации форума в этом коде были проблемы (которые, например, проявлялись на Денвере). С помощью моих ответов на официальном форуме многим пользователям удалось разобраться со странным поведением и этот функционал будет включен в новую версию.

Во-вторых, картинки. Это особенная тема. Существует стандартный плагин для загрузки картинок — FileUpload. Но он был ужасен. Ужас начинался с того, что превьюшками для картинок служили оригинальные картинки, но с установленным height и width в теге img. Далее описывать не буду, я частично переписал этот плагин и сделал в нем две вещи:

  • Нормальное создание превьюшек — таких, чтобы было видно, что изображено, не больших и не маленьких
  • Чтобы картинки сразу распределялись по ширине экрана. Часто на многих форумах картинки идут в столбик, или заданы фиксированные размеры, например, 2 столбика. На широких мониторах полоска смотрится узко, а а узких мониторах появляется полоса прокрутки. Теперь нужное количество столбцов появляется в зависимости от ширины экрана. Демо-версию можно посмотреть тут, попробуйте уменьшить и раздвинуть окно.


image

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

image

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

image

Конечно, пришлось поработать и с самими категориями. Хотелось сделать их как можно понятнее. В итоге все более или менее встало на свои места.

image

Из бонусов, которых нет в стандартной версии и которые не видны с первого раза:

  • Возможность загрузки картинок при создании/редактировании поста
  • Возможность загрузки картинок при создании/редактировании комментария
  • русские даты (до merge работало все нормально, сейчас может быть что-то нужно подправить)
  • Дизайн разных страниц: профиль, личные сообщения
  • Иконки bbcode, добавление javascript-функционала для обработки кнопок
  • Функционал quote (цитирование)
  • Улучшенная загрузка и обработка аватаров (размер + image quality), по сравнению со стандартным движком
  • Улучшенный paging
  • Улучшенное форматирование текстов в постах и комментариях, удаление ненужных переносов строк


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

Баги:

Баги есть, куда же без них? К сожалению, vanilla forums был написан без единого юнит-теста, поэтому что-то будет всплывать переодически, но нужно отдать должное, с использованием MVC подхода, который осложняет sql-injection. В общем и целом команда поработала неплохо, но у меня, как у истинного гика, возникло желание все переписать. Возможно, когда-нибудь я сделаю свой форум на .NET'е, тестируемый, хороший и легкий, почти как этот. А если образуется своя коммьюнити с несколькими contributor'ами вокруг уже существующего варианта (с репозиторием, issue tracker'ом и, конечно, форумом), то я буду готов поддерживать по мере сил и этот вариант.

Обновленный движок (zip-архив):

Ссылка на скачивание

(см. файл !recomendations.txt, во всех местах, где необходимо вставить свои значения я поставил строку FIXME).

Официальная версия:

http://vanillaforums.org
+77
1 апреля 2011, 15:38
143

комментарии (47)

+5
ZakharS #
Внешне выглядит очень приятно. Что-то из разряда минимализма. Спасибо за рассказ. Для быстрого старта отлично. Особенно с учетом всего, что вы поправили.
+2
RUQ #
Спасибо. Работают ли плагины от Vanilla?
+3
Gangsta #
конечно
0
al_indigo #
Вы молодец.

Два вопроса:
1) Насколько гарантированы обновления? То есть нет ли планов работать с создателем мастер-ветки сообща?
2) Как обстоят дела с импортом из других уже существующих форумов? Он есть в каком-либо виде?
0
Gangsta #
1. я как-то писал туда (нашел небольшой security issue), ни ответа, ни привета. Времени заниматься им нет, поэтому надежда только на то, что моя работа кого-нибудь вдохновит на поддержку и постоянные обновления.

2. Импорт есть, это стандартный функционал ваниллы.
0
TiGR #
Код ещё не смотрел, но навскиду несколько вопросов:

Пробовали изменения в core комиттить в основную ветку?
Насколько независимо сделаны изменения? То есть, можно ли ваши изменения разделить на тему, плагины и core и накатить на сущевтующий форум по отдельности? Например, только картинки, или только пол.

Насчёт локализации activities, они пошли изначально по неверному пути. По нему же, кстати, пошёл и фейсбук. В итоге, мы имеем сообщения вида «User написал на ваша стена». В принципе, в vanilla заложены средства для сложной морфологии activites (см. коммент к методу ActivityHeadline в library/core/class.format.php). Пробовали их использовать? У меня что-то не заработало.

А так, сугубо внешне, выглядит очень вкусно.

Кстати, структура каталогов и разное отображение главной страницы уже есть в vanilla, см ветку unstable, там уже огромное количество разных плюшек есть.
0
Gangsta #
Я не коммитил, т.к. не делал code review. Возможно кто-нибудь сделает code review и необходимый рефакторинг и закоммитит. PHP не мой native language, поэтому у меня занимают немного больше времени эти вещи. Из-за нехватки времени я этого не делал. Сборка идет «as is» :)

Разделить изменения, конечно, можно при желании и наличии свободного времени.

Спасибо за лестный отзыв. Я, кстати, вам писал в личку на хабре, когда работал над этой сборкой. Какие-то вопросы были, вы мне не ответили тогда ;)

А вообще респект за участие в разработке и поддержке форума, я видел там ваши посты и коммиты.
+1
glorybox #
Так как код на гитхабе, вы можете зарегистрироваться, сделать свой форк — коммитить в него, а потом отправить автору запрос на pull. И он уже посмотрит и решил включать ваши изменения в ветку или нет.
0
Gangsta #
спасибо за hint
+1
Makor #
А вот как ее установить? Что-то у меня только ошибка что нет такой таблицы… В доках ванилы написано что должен появиться мастер установки:)
+1
Makor #
Хотя разобрался. надо удалить cache и файл config.php :)
0
TiGR #
Конфиг удалять не обязательно, нужно удалять кэши путей (файлы вида /cache/*.ini).

При обновлении ещё бывает нужно сделать из браузера /utility/structure
0
FractalizeR #
с использованием MVC подхода, который осложняет sql-injection

Каким образом MVC подход относится к выполнению SQL инъекций?
0
Gugic #
Да оно с MVC как-то само получается. Данные же в большинстве случаев проходят сначала в контроллер, потом в модель и только оттуда в базу. Больше вероятность отловить что-нибудь лишнее (пусть даже и случайно)
0
Gugic #
А уж если ловить целенаправленно…
0
Neutron #
Так хотел поставить, а оно мне: «Bonk. Something funky happened. Please bear with us while we iron out the kinks.».
Печаль.
0
Neutron #
Я все понял, ответ тут.

Русификации нет?
0
gene4000 #
Конкретно это страница лежит отдельно в виде html и не переводится с помощью встроенной системы локализации.
0
Neutron #
Гм. Скачал русификацию, применил, админка так и осталась на англ.
Да и после установки невозможно попасть на главную форума: «Page Not Found. The page you were looking for could not be found.»
Мб я что-то делаю не так?
0
gene4000 #
Там ошибки действительно вылазят. Неизвестно почему и как. Много разных случаев и общего рецепта нет. Запомнилось, что после обновления это может произойти.
0
Neutron #
Спасибо. Поковыряю еще.
Форум завелся после пенделя, но все-равно даже пользовательская часть не русифицирована.
А Вы случаем не вкурсе, что за шкура на скринах у автора? И есть ли она в паблике.
0
gene4000 #
Скин вроде бы его собственный (да он и сам скажет). Но вытащить скорее всего проблем нет. Когда я делал скин, то фактически только добавил один CSS файл и несколько картинок. Никакие шаблоны трогать не пришлось.
0
Gangsta #
скин идет в комплекте с моей сборкой.
0
Astramak #
Что за пендель, если не секрет?
0
serjio #
столкнулся с такой же проблемой (вроде в config.php прописал данные для бд)
подскажите как решить.
0
Neutron #
Как уже писали выше, удалите полностью файл config.php и очистите папку cache (оставьте только вложенные в нее папки, но внутри них тоже произведите чистку).
Должен завестись.
0
gene4000 #
Вы занимались вопросом заголовков страниц? В частности хотелось бы, чтобы загловок содержал номер страницы, а то получается, что очень много одинаково названных страниц.
+1
serjio #
глубочайший респект автору,
ванилла отличный форум, правда с огрехами от производителей (убогость плагинов, сомнительно свёрстанные темы, практически нет хороших тем и тд).

пс: уже давно пользую ваниллу, но сильно напрягал сомнительный результат русской локализации ваниллы2 силами сообщества, которое с горем попалам координироволо свои усилия.
+1
Gangsta #
спасибо, полностью согласен. Считаю, что русскоязычному ванилла-сообществу нужно объединиться, сделать отдельный репозиторий, issue tracker, форум и делать свою сборку. Можно, конечно, коммитить в core, но это лишняя зависимость может иногда огорчать (были случаи, когда даже незначительные коммиты в официальную версию рассматривались по полгода). Собственно ради этого я и выложил свои наработки, чтобы дать команду на старт всем остальным. Верю, что совместными усилиями можно сделать очередного НЕ франкенштейна, а хороший и завершенный во всех планах движок :)
0
striimii #
Дизайн и цвета очень похожи на 1C 8.2 :)
0
Svyatov #
Все здорово, но зачем открывать полную версию фотографии в отдельном окне? Логичнее было бы сделать отображение галереей, типа highslide — вот красота была бы.
0
Gangsta #
Не сомневаюсь, что каждый будет рад этой функциональности. Anonymous'у все карты в руки! Я в данный момент не обладаю достаточным количеством времени, чтобы сделать все, но с удовольствием помогу кому-нибудь развивать эту сборку.
0
nllm #
В ванилле можно создавать темы не для всех? (для определенных пользователей или групп)
Ну и сам форум можно делать закрытым?
0
TiGR #
Можно сделать разделы не для всех. Сам форум сделать приватным возможно, эта опция есть в конфиге из коробки. private community, кажется, называется.
0
ksevelyar #
Только русификацию по быстрому никак не выдрать?
0
Gangsta #
Вообще вся русификация в locale-ru-RU.php

Полной и качественной русификации (см. коммент почему на данный момент этого не было сделано) будем ждать от фанатов-энтузиастов, которые смогут объединиться и улучшить движок.
+1
nerd #
Не плохо было бы добавить туда еще «вход через вконтакте» и др. русскоязычные соц. сети.
0
FeraS #
Пообщаться по поводу движка можете еще на vanillasupport.ru
Не сочтите за рекламу, но других актуальных, рускоязычных форумов поддержки не нашел.
0
047 #
Отлично. Всегда нравилась Vanilla, впервые с ней познакомился на форуме Kohana Framework'а.

PS
Кстати, аватарка на скрине — из игрушки Robin Good: The Legend of Sherwood же? Помню, раньше в нее очень любил поигрывать, да и недавно ностальгировал.
0
nitro80 #
Что-то ваш форум уж очень минималистично выглядит…
+3
Enrey #
Посмотрел немного код т.к. сам использую Vanilla.
Извините конечно, но вот этому — <td style='vertical-align: top; width: 250px'> — место в css файле, а не быть жестко прописанным в master.php
0
datsky #
Это очень симпатично выглядит. Я бы предложил для различения пола собеседника использовать не «М» и «Ж» а соответствующие значки (венера и марс)
0
kljaver #
Отлично. Очень нравится Vanilla.
0
jkeks #
Продавайте же поддержку, если комьюнити нет толком.
По себе знаю что даже стандартная ванилла — мнебольше была по душе чем какой-нибудь punbb
–1
Moony #
Установите себе miniBB и будьте счастливы.
0
DimSun #
Так чего в итоге с форумом? Были свежие обновления с апреля месяца?

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