Сказ о том как я личный форум под вордпресс поднимал

12.11.2012 8 Автор Phantom

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

Все свистелки и перделки прикручивались исходя из парадигмы «всё в рамках вордпресса, но без грязных хаков движка». Это конечно не панацея от дальнейшего геморроя, но существенно снижает трудозатраты при обновлении.

Установка форума

Муки выбора были недолгими. К вордпрессу можно прикрутить phpbb3 (методом противоестественного скрещивания, впрочем сей форум со всеми движками так себя ведёт), можно взять simplepress (штука хорошая, но обновляется как-то ни шатко ни валко, а баги имеет), а можно до упора простой bbpress, который начиная с ветки 2 нормально и полностью интегрируется в движок. Последний и взял.

Установка, настройка — всё для детей. Кто ниасилил, тот лох. Кривую русификацию ищите в яндексе, она там есть. Единственный нюанс — НЕ включайте akismet, он подло отправляет посты в /dev/ass и отслеживается это с самого форума, т.е. можно пропустить.

Допиливание внешнего вида

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

Не всё так просто. Если joomla и drupal умеют использовать разные шаблоны для разных кусков «искаропки», т.е. это реализовано в базовом функционале, то wordpress на такое неспособен. Решения как всегда следует искать в плагинах и они там есть, но подойдут не все. Например, некоторые позволяют привязывать оформление к страницам или же постам, но bbpress ни тем ни тем не является, т.е. требуется выбирать на основе адреса…

Решение звучит как jonradio Multiple Themes — плагин меняет тему основываясь на url. АХТУНГ! Версия 3.3.1 не пашет, юзайте версию 3.2. К сожалению этот плагин не умеет раскладывать виджеты по разному для разных тем, автор пишет что собирается ввести этот функционал, а на данный момент предлагает весьма черезжопное решение на основе стороннего плагина. Оно работает, но понятно как, поэтому идём дальше…

Widget Context — плагин настраивающий видимость виджетов относительно адреса. Позволяет показывать на нужных, не показывать на не нужных, а также регулировать на основе всей остальной таксономии. Как говорится «то что доктор прописал»! Рекомендую безотносительно форумов и тем.

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

Для начала я выкинул всю навигацию на основе таксономии, т.е. облако тегов, список категорий, архив по месяцам и календурь. Вместо этого воткнул плагин Collapsing Archives, который умеет раскрывающиеся списки. АХТУНГ! Есть небольшой баг с выводом картинок, автор немного прогнал и ссылки ведут не туда. Создаём папку collapsArch и в неё копируем img из collapsing-archives. Можно залезть в код, но чёрт его знает пофиксят ли это в следующей версии.

Для категорий есть примерно такой же плагин под названием Collapsing Categories. Настройка аналогична предыдущему, кто ниасилил — …

В настройках обоих двух рекомендую врубить режим аккордеона.

Разумеется на этом ничего не заканчивается, поскольку полного контроля за дополнительным шаблоном у нас нет, то менюшки придётся делать ручками, в этом месте я применял костыли вида: is_page(), is_category(), $_SERVER[‘REQUEST_URI’], strstr, strpos и прочие некошерные хаки темы. Конкретных рецептов не существует, всё зависит от вашей реализации…

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

Допиливание форума

Первое что надо сделать это скрестить общий поиск с форумом, для этого служит плагин Search bbPress. Почему это не работает по дефолту для меня загадка великая есть.

Количество просмотров темы реализуется через bbP Topic Views. Ставьте без раздумий.

Дальше идут вложения. Реализуется через GD bbPress Attachments, настройки просты, единственный минус — нет пропорциональных миниатюр, зато умеет лайтбокс (админы пхпбб в очередной раз злобно матюкнулись).

Кое-что я решить так и не смог…

Форматирование текста реализуется через разрешение пользователю некоторых хтмл тегов или/и через bbcode. С тегами всё понятно, удобно отрисовывать их можно через подключение обычного tinymce, но… засада-подстава, чувак. У меня стоит TinyMCE Advanced, который очень удобен для админа, но может непоправимо покорёжить мозг юзверю. К тому же выводить километры нерабочих кнопок — попахивает садизмом не в сексуальном, а в ментальном смысле. С кодами проще, есть плагин GD bbPress Tools, который реализует всё форматирование, но… пользователь должен вводить ручками, никаких вам удобных кнопок. Пока остановился на таком варианте, буду думать. Если чо — синтаксис интуитивно понятный.

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

bbPress Topics for Posts — ещё одна полезная приблуда, позволяет цеплять темы с форума к постам в блоге. По непонятным причинам отказывается работать, прозреваю конфликт плагинов, но что с чем так и не понял.

Желающие помочь приветствуются всеми конечностями, а также финансовыми бонусами.

Обсудить на форуме.

Поделиться в: