Как состыковать bbPress с несовместимой темой. Форум для сайта на WordPress. Часть 3

К сожалению, достаточно много тем совершенно не совместимых с плагином 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

состыковать bbpress. Рис. 1. Установка стилей bbPress

Рис. 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');
состыковать bbpress. Рис. 2. Добавление кода в functions.php

Рис. 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;
    }
}
состыковать bbpress. Рис 3

Рис 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(); }
}
состыковать bbpress. Рис. 4

Рис. 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' => '&gt;')); ?></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.

Leave a Reply