К сожалению, достаточно много тем совершенно не совместимых с плагином bbPress. Мы очень любим тему нашего сайта и совершенно не имеем желания ее менять (как было в моем случае), но нам нужен форум на сайте. Что делать? – взять и состыковать bbPress с нашей темой. Это совсем не так страшно и сложно, как кажется. Далее приведена подробная инструкция, как состыковать bbPress с темой.
Третья часть статьи “Форум для сайта на WordPress”. В первой части “Форум для сайта на WordPress” дана пошаговая инструкция создания веб-форума на сайте на CMS “WordPress”, во второй части “Шорткоды bbpress” описаны шорткоды и даны рекомендации по их применению.
Итак, тема на сайте установлена в соответствии с инструкцией в статье “Как установить тему WordPress“, создана и активирована ее дочерняя тема (“Дочерняя тема WordPress“).
Для стыковки плагина bbPress с темой необходимо сделать следующее:
- Подключить к теме файл стилей bbPress.
- Обеспечить вывод информации для страничек форума при помощи шаблона статической страницы.
- Убрать всю лишнюю информацию при выводе страничек форума.
- Решить вопрос с “хлебными крошками”.
Как это сделать, я покажу ниже на примере темы Canvas от WooThemes, которая совершенно не совместима с плагином bbPress.
1. Создаем безопасное соединение с сервером. Как это сделать см. “Что такое ssh/sftp и для чего он нужен?” для OS Linux (OSX) или “SSH клиент для Windows PuTTY” и “Клиент SSH для Windows Bitvise Tunnelier” для Windows.
2. Становимся суперпользователем (См. «Команды Linux. Краткое описание.«)
su
3. Переходим в папку дочерней темы нашего сайта. имятемы – название папки, содерщащей нашу тему. Для сети виртуальных сайтов на WordPress:
cd /chroot/httpd/var/www/wordpress/wp-content/themes/имятемы-child/
или для отдельного сайта:
cd /chroot/httpd/var/www/wp-content/themes/имятемы-child/
4. Создаем папку css, делаем ее владельцем пользователя, под которым работает наш web-сервер и переходим в нее.
mkdir css
chown www.www css
cd css
5. Помещаем в эту папку файл со стилями bbPress. Это файл стилей поставки bbPress с небольшими изменениями. Возможны два пути:
a) загружаемотсюда файл bbpress.css и переносим его на сервер в домашнюю папку администратора (например, admin) при помощи программы передачи файлов через безопасное соединение sftp (как настроить и использовать sftp см. «Клиент sftp. Краткое описание» для Linux и «PSFTP – SFTP клиент PuTTY для Windows» или «Клиент SSH для Windows Bitvise Tunnelier»)
mv /home/admin/bbpress.css .
chown www.www bbpress.css
b) или загружаем с моего сайта напрямую на сервер в папку css дочерней темы
wget http://www.stseprounof.org/wp-content/uploads/2014/06/bbpress.css
chown www.www bbpress.css

Рис. 1. Установка стилей bbPress
6. Возвращаемся в корневую папку дочерней темы
cd ../
7. Добавляем следующий код php при помощи редактора vi (подробнее см. “Редактор vi. Краткая инструкция“) в файл functions.php дочерней темы
if (!is_admin()) if(!session_id()) session_start(); /* BBPRESS */ function bbp_enable_visual_editor( $args = array() ) { $args['tinymce'] = true; return $args; } add_filter( 'bbp_after_get_the_content_parse_args', 'bbp_enable_visual_editor');

Рис. 2. Добавление кода в functions.php
Этот код объясниет bbPress, что теперь наша тема с ним совместима и подключает встроенный визуальный редактор TinyMCE к полю ввода на страничках bbPress.
8. Копируем из основной темы файлы page.php и, если есть, то content-page.php
cp -p ../имятемы/page.php ../имятемы/content-page.php .
Пояснение. Плагин bbPress по умолчанию использует для создания страничек форума шаблон страницы с определенными названиями, в том числе page.php, который используется для отображения статических страниц. В моей теме (сейчас canvas от WooThemes), а так же во многих других темах, шаблон page.php используется только для вывода служебной информации, заголовков и подвала, а для вывода непосредственно содержимого – content-page.php. В некоторых других темах шаблон page.php более сложный и предназначен для вывода всей информации на странице.
8. Вставим при помощи редактора vi в начало кода page.php сразу после зоны определения шаблона (большой комментарий в начале) слелующий код:
if (! function_exists('is_bbPress')) { function is_bbPress() { return false; } }

Рис 3
Этот код проверяет существование функции is_bbPress(), которая определяет, является ли текущая страничка страничкой форума, и, если она не существует, то создает ее замену, которая всегда дает отрицательный ответ. Это нужно, чтобы в случае деактивации плагина bbPress не вызывалась ошибка при обращении к несуществующей функции.
9. При выводе странички, после содержимого, может выводиться много различной информации, например сведения об авторе, форма добавления комментариев, и т. д. В то же время, bbPress выводит на своих страничках всю необходимую для форума информацию. Поэтому, чтобы наш веб-форум не смотрелся странно, надо для страничек форума подавить вывод лишней информации.
В файле content-page.php темы canvas такая информация выводится вызовами функций post_inside_after() и post_after(). Следовательно, мы не должны их вызывать, если выводим страничку нашего веб-форума. При помощи редактора vi вносим следующие изменения в текст файла:
if(! is_bbpress() ) { ?> </section><!-- /.entry --> <div class="fix"></div> <?php woo_post_inside_after(); }
И вторая часть:
if(! is_bbpress() ) { woo_post_after(); $comm = get_option( 'woo_comments' ); if ( ( $comm == 'page' || $comm == 'both' ) && is_page() ) { comments_template(); } }

Рис. 4
10. Установить вывод всех страничек форума через функцию WordPress the_content(). В файле content-page.php найти этот кусок и добавить в выделенную строку && (! is_bbPress()
if ( ! is_singular() && (! is_bbPress()) ) { the_excerpt(); } else { the_content(__('Continue Reading →', 'woothemes') ); }
11. “Хлебные крошки” (такая строка вверху странички, сразу под заголовком сайта, которая показывает путь от главной странички до текущей) есть в большинстве современных тем. Они же есть и в bbPress. Свои собственные. Только, они выводятся сразу под названием форума, темы … То есть, получаются сразу две строки “хлебных крошек”. Выглядит странно.
Первое решение, которое приходит в голову – запретить “хлебные крошки” bbPress. Однако, функция генерации строки “хлебных крошек” в большинстве тем некорректно выводит путь, как только мы переходим от отображения списка форумов к чему-нибудь еще. Например, если на страничке отображается форум со списком тем, то строка будет Главная->Форумы->Название форума. Как только мы открываем какую-нибудь тему этого форума, получаем Главная->Темы->Название темы, хотя должно быть Главная->Форумы->Название форума>Название темы и т. д. В то же время генератор строки “хлебных крошек” плагина bbPress работает правильно.
Значит, надо на всех страничках нашего веб-форума заменить заменить строку “хлебных крошек”, генерируемую темой на строку, генерируемую плагином bbPress. Код ниже именно это и делает. Его надо вставить в page.php вместо loop_before().
if(! is_bbpress() ) { woo_loop_before(); } else { ?> <div class="truebreadcrumbs"><?php bbp_breadcrumb(array('sep' => '>')); ?></div><br /> <br /> <?php }
Код ниже я уже вставил в файл стилей bbpress.css в раздел /* =Breadcrumb and Tags, который мы установили ранее (п. 5).
div.bbp-breadcrumb { display: none; /*this will hide all breadcrumbs*/ } .truebreadcrumbs div.bbp-breadcrumb { display: block; /*this will display breadcrumbs you've created*/ }
Показано, как состыковать bbPress с темой, которая не совместима с ним.
No comments yet.