Raniyx
Проверенные
- Сообщения
- 25
- Реакции
- 31
- Баллы
- 315
Приветствую всех пользователей форума! Хочу поделиться своим опытом работы с XenForo, историей одного долгостроя и парой готовых решений. К некоторым вещам я шел несколько лет, хотя, оглядываясь назад, понимаю, что всё могло быть намного быстрее. Но для начала — классика:
Предисловие
Уже больше трех лет я в фоновом режиме пилю личный пет-проект, который пережил тысячу рефакторингов и, кажется, наконец-то выходит на финишную прямую. В целом с движком XF я плотно работаю около 5 лет: администрирую живые форумы, но главное — всегда держу под рукой домашний stage-сервер для жестких экспериментов. Через мои руки прошли десятки дампов, стилей и модификаций. Изучая чужой код и подходы, я постепенно пришел к тому, что пора писать собственные решения под XF. Тем более выход новой версии 2.3 преподнес на блюдечке то, от чего я так долго бегал.
Немного контекста: я Java-разработчик, уже больше 10 лет пишу под Minecraft. И в какой-то момент меня категорически перестало устраивать, как выглядят майнкрафт-форумы на базе XenForo. Какую тему ни натяни — отовсюду торчит узнаваемая «морда» движка, интерфейс которого откровенно не подходит для обсуждения кубов. Я долго искал альтернативы, тестировал наработки коллег, копался в ресурсах с leak-форумов. Отметая костыли и неверные решения, пришел к собственному видению.
Основная часть
Например, дефолтный Resource Manager для майнкрафт-площадки — это сплошная боль. Сейчас на рынке полно сторонних менеджеров ресурсов, которые на голову выше коробки XF. Весь прошлый 2025 год я ломал голову: писать платформу с нуля или искать опенсорс? В итоге понял, что лучший путь — написать кастомное решение, расширяя API XF и используя его как бэкенд. Работы там еще непочатый край, поэтому показывать пока нечего. Сейчас закладываю архитектуру базы, чтобы потом быстро набросать фронт
Чтобы не перегореть от бэкенд-рутины, я периодически переключаюсь на визуал и UX. Главная цель — сделать не просто форум, а удобную современную площадку. И первым делом под нож пошла система званий.
Стандартная лестница трофеев линейна: набрал очки — получил новое звание. Но что, если пользователю нравилось предыдущее? Откатиться без изменения очков нельзя, а давать право писать кастомные статусы — значит добавить модераторам работы по вычистке мусора. Так родилось дополнение [AquaCore] Overhaul User Titles. Оно позволяет пользователям свободно выбирать любое из уже разблокированных званий. Обкатывал его на своих проектах около года, причесал код и решил выложить в паблик — вдруг найдутся такие же перфекционисты, которых раздражает стандартная логика XF.
Демонстрация решений
Главная
Дальше — больше. Захотелось упростить кастомизацию профиля до минимума, но чтобы функционала хватало всем. Сразу сделаю пару оговорок. Для проекта я взял за основу старый, заброшенный альфа-стиль (автор его уже даже скрыл из доступа — кто в теме, тот поймет, о чем речь). Чтобы довести его до ума, я на месяц ушел в «запой верстальщика»: переписывал JS, сетки, шаблоны, макеты и перестраивал хэши. Вычистил около 80% багов исходника.
Блочная структура знатно выела мне мозги, но зато теперь она отлично отрабатывает и на десктопе, и на мобилках. Интерфейс всё еще выдает «Ксеню», но выглядит в разы свежее. Вот как сейчас выглядит главная (название замазал, мы тут не ради рекламы):
Профили пользователей
После полугодового перерыва в разработке меня снова посетила муза. Я понял, почему всё еще не вывел проект в прод: стандартные профили XF отвратительны по своей сути. Они слишком строгие и сухие для молодой аудитории геймеров. Одно время спасало отличное дополнение [TC] VK Profile, но со временем и его стало мало.
Я засел за анализ конкурентов. У одного известного автора подсмотрел шикарное оформление — оно шло отдельным аддоном в комплекте с премиум-темой под XF 2.3. Покупать стиль ради одного аддона, который к тому же вряд ли заведется на моей 2.2, не было смысла.
Вооружившись DevTools(чего не умеют 80% залетных пользователей судя по темам), я расковырял их веб-демо и через модификации шаблонов перенес верстку на 2.2. Пришлось с нуля переписывать стили и сетки, но я справился. Под капотом пока лютый хардкод и требуется рефакторинг, но визуально цель достигнута. Вот чем вдохновлялся и что получилось в итоге:
Здесь конечно есть, что дорабатывать, поскольку я еще не до конца понял как распределить красиво информацию под баннером пользователя, но этого мне вполне достаточно. Кстати помимо профиля пользователя, я изменил и бургер меню пользователя на панели навигации, стандартного окна Ксени там больше нет:
Кастомизация
Но зачем такой красивый вид профиля, если кастомизации изначально и нет как таковой, кроме загрузки аватарки пользователем, а баннер вообще включать надо отдельно и не все его используют. Ходя с таким вопросом некоторое время, мне как судьба подсобила, и подкинула дополнение [OzzModz] Avatar Gallery. Поискав более подробную информацию, я накатил его на stage и принялся изучать, и каково было моё удивление, что оно позволяет указывать критерии для аватаров. И тут то мой мозг родил гениальную идею, а ведь на этом можно сделать контент и новые возможности буквально из простого функционала. Выбить новый опыт из казалось бы простой функции, это то зачем я в целом и начинаю все свои пет проекты!) На радостях я побежал заказывать рендеры для званий, которые потом пошли еще и в галерею аватарок:
Но одних аватарок мне было не достаточно. Надо было сразу наверное написать, что хронологический порядок слегка нарушен, чтобы по порядку все описать. Аватарки были реализованы, когда еще использовался аддон VK Profile. Как только я реализовал новый вид отображения профиля пользователя, встал вопрос, а что делать с баннерами? Ведь подобного функционала для баннеров нет, а единственное, что я смог найти это [OzzModz] User Profile Banner Default. Оно вроде бы и хорошо, не будет пустого фона в баннере, но все еще не решает главную проблему - надо реализовать такой же функционал как и у аватарок.
Написание собственного решения
В сети я рыскал половину суток, ничего не найдя, я решил, что к черту, сделаем своё решение по примеру, который уже стоит и работает. А поскольку я очень много ковырял таблицы БД, логически я понимал, что баннера и аватарки это схожий функционал за некоторыми исключениями. как оказалось я был прав лишь на половину, в коде не совсем все просто, но в целом, да основная суть, это все привязывается к пользователю но иначе. И с самого утра я принялся переписывать это дело и под конец я уже закончил первую альфу, которая имела некоторые баги, но в целом для демонстрации этого хватало:
По сути да, это дополнение изначально копирует оригинальную идею ThemeHouse, которое потом продолжил OzzModz в решении Avatar Gallery. Внутри аддона я по максимум старался сохранить структуру кода, чтобы не плодить свой плохой код и вроде бы даже получилось, за исключением смены сущности, где надо было писать логику конкретно под баннера.
Огромным плюсом является то, что аватары и баннера применяются налету и не требуют загрузки на форум изображения. А так же унификация всей этой косметики, благодаря чему, можно заставлять пользователей оставаться на форуме и открывать новые аватарки, звания, баннера. Отличный материал предоставил Len: Реакции, трофеи и предупреждения — как построить идеальную систему мотивации в XenForo
Итог
На всю эту реализацию с кастомизацией нового вида профиля я потратил неделю жизни. Но в целом, ни о чем не жалею, я смог добиться чего-то нового и того, что меня наконец-то устраивает.
Жду вопросов, готов ответить на все интересующие вас вопросы и поддержать разговор) Ну и возможно выслушать советы.
Штирлиц выбил ногой дверь и на цыпочках подкрался к читающему газету Мюллеру.
- «Не уйдёт», — подумал Мюллер и перекрыл все выходы.
- «Идиот», — подумал Штирлиц и ушёл через вход.
Я особо так и не смог определить, куда стоило бы запостить подобное, потому выбрал категорию свободного общения. В случае неверной выбранной категории, пожалуйста, укажите на это и переместите в нужный раздел. Спасибо!
Предисловие
Уже больше трех лет я в фоновом режиме пилю личный пет-проект, который пережил тысячу рефакторингов и, кажется, наконец-то выходит на финишную прямую. В целом с движком XF я плотно работаю около 5 лет: администрирую живые форумы, но главное — всегда держу под рукой домашний stage-сервер для жестких экспериментов. Через мои руки прошли десятки дампов, стилей и модификаций. Изучая чужой код и подходы, я постепенно пришел к тому, что пора писать собственные решения под XF. Тем более выход новой версии 2.3 преподнес на блюдечке то, от чего я так долго бегал.
Немного контекста: я Java-разработчик, уже больше 10 лет пишу под Minecraft. И в какой-то момент меня категорически перестало устраивать, как выглядят майнкрафт-форумы на базе XenForo. Какую тему ни натяни — отовсюду торчит узнаваемая «морда» движка, интерфейс которого откровенно не подходит для обсуждения кубов. Я долго искал альтернативы, тестировал наработки коллег, копался в ресурсах с leak-форумов. Отметая костыли и неверные решения, пришел к собственному видению.
Основная часть
Например, дефолтный Resource Manager для майнкрафт-площадки — это сплошная боль. Сейчас на рынке полно сторонних менеджеров ресурсов, которые на голову выше коробки XF. Весь прошлый 2025 год я ломал голову: писать платформу с нуля или искать опенсорс? В итоге понял, что лучший путь — написать кастомное решение, расширяя API XF и используя его как бэкенд. Работы там еще непочатый край, поэтому показывать пока нечего. Сейчас закладываю архитектуру базы, чтобы потом быстро набросать фронт
Чтобы не перегореть от бэкенд-рутины, я периодически переключаюсь на визуал и UX. Главная цель — сделать не просто форум, а удобную современную площадку. И первым делом под нож пошла система званий.
Стандартная лестница трофеев линейна: набрал очки — получил новое звание. Но что, если пользователю нравилось предыдущее? Откатиться без изменения очков нельзя, а давать право писать кастомные статусы — значит добавить модераторам работы по вычистке мусора. Так родилось дополнение [AquaCore] Overhaul User Titles. Оно позволяет пользователям свободно выбирать любое из уже разблокированных званий. Обкатывал его на своих проектах около года, причесал код и решил выложить в паблик — вдруг найдутся такие же перфекционисты, которых раздражает стандартная логика XF.
Демонстрация решений
Главная
Дальше — больше. Захотелось упростить кастомизацию профиля до минимума, но чтобы функционала хватало всем. Сразу сделаю пару оговорок. Для проекта я взял за основу старый, заброшенный альфа-стиль (автор его уже даже скрыл из доступа — кто в теме, тот поймет, о чем речь). Чтобы довести его до ума, я на месяц ушел в «запой верстальщика»: переписывал JS, сетки, шаблоны, макеты и перестраивал хэши. Вычистил около 80% багов исходника.
Блочная структура знатно выела мне мозги, но зато теперь она отлично отрабатывает и на десктопе, и на мобилках. Интерфейс всё еще выдает «Ксеню», но выглядит в разы свежее. Вот как сейчас выглядит главная (название замазал, мы тут не ради рекламы):
Профили пользователей
После полугодового перерыва в разработке меня снова посетила муза. Я понял, почему всё еще не вывел проект в прод: стандартные профили XF отвратительны по своей сути. Они слишком строгие и сухие для молодой аудитории геймеров. Одно время спасало отличное дополнение [TC] VK Profile, но со временем и его стало мало.
Я засел за анализ конкурентов. У одного известного автора подсмотрел шикарное оформление — оно шло отдельным аддоном в комплекте с премиум-темой под XF 2.3. Покупать стиль ради одного аддона, который к тому же вряд ли заведется на моей 2.2, не было смысла.
Вооружившись DevTools
Здесь конечно есть, что дорабатывать, поскольку я еще не до конца понял как распределить красиво информацию под баннером пользователя, но этого мне вполне достаточно. Кстати помимо профиля пользователя, я изменил и бургер меню пользователя на панели навигации, стандартного окна Ксени там больше нет:
Кастомизация
Но зачем такой красивый вид профиля, если кастомизации изначально и нет как таковой, кроме загрузки аватарки пользователем, а баннер вообще включать надо отдельно и не все его используют. Ходя с таким вопросом некоторое время, мне как судьба подсобила, и подкинула дополнение [OzzModz] Avatar Gallery. Поискав более подробную информацию, я накатил его на stage и принялся изучать, и каково было моё удивление, что оно позволяет указывать критерии для аватаров. И тут то мой мозг родил гениальную идею, а ведь на этом можно сделать контент и новые возможности буквально из простого функционала. Выбить новый опыт из казалось бы простой функции, это то зачем я в целом и начинаю все свои пет проекты!) На радостях я побежал заказывать рендеры для званий, которые потом пошли еще и в галерею аватарок:
Но одних аватарок мне было не достаточно. Надо было сразу наверное написать, что хронологический порядок слегка нарушен, чтобы по порядку все описать. Аватарки были реализованы, когда еще использовался аддон VK Profile. Как только я реализовал новый вид отображения профиля пользователя, встал вопрос, а что делать с баннерами? Ведь подобного функционала для баннеров нет, а единственное, что я смог найти это [OzzModz] User Profile Banner Default. Оно вроде бы и хорошо, не будет пустого фона в баннере, но все еще не решает главную проблему - надо реализовать такой же функционал как и у аватарок.
Написание собственного решения
В сети я рыскал половину суток, ничего не найдя, я решил, что к черту, сделаем своё решение по примеру, который уже стоит и работает. А поскольку я очень много ковырял таблицы БД, логически я понимал, что баннера и аватарки это схожий функционал за некоторыми исключениями. как оказалось я был прав лишь на половину, в коде не совсем все просто, но в целом, да основная суть, это все привязывается к пользователю но иначе. И с самого утра я принялся переписывать это дело и под конец я уже закончил первую альфу, которая имела некоторые баги, но в целом для демонстрации этого хватало:
По сути да, это дополнение изначально копирует оригинальную идею ThemeHouse, которое потом продолжил OzzModz в решении Avatar Gallery. Внутри аддона я по максимум старался сохранить структуру кода, чтобы не плодить свой плохой код и вроде бы даже получилось, за исключением смены сущности, где надо было писать логику конкретно под баннера.
P.S. Я бы опубликовал данный аддон, но очень сильно переживаю, что решение кривое, ведь повторюсь в php я как новичок, другой синтаксис, другие решения, в целом другой ЯП. Если кому-то действительно нужно, пишите обговорим, может и поделюсь, но это работает только для пользователей с ролью "Проверенные" и которые имеют хоть какую-то репутацию на форуме.
Огромным плюсом является то, что аватары и баннера применяются налету и не требуют загрузки на форум изображения. А так же унификация всей этой косметики, благодаря чему, можно заставлять пользователей оставаться на форуме и открывать новые аватарки, звания, баннера. Отличный материал предоставил Len: Реакции, трофеи и предупреждения — как построить идеальную систему мотивации в XenForo
Итог
На всю эту реализацию с кастомизацией нового вида профиля я потратил неделю жизни. Но в целом, ни о чем не жалею, я смог добиться чего-то нового и того, что меня наконец-то устраивает.
Жду вопросов, готов ответить на все интересующие вас вопросы и поддержать разговор) Ну и возможно выслушать советы.
Последнее редактирование:
