Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

интеграция Wordpress 4.4.x и phpBB 3.1.x

Вопросы без привязки к версии. Установлена авточистка (2 года).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
hodufozu
phpBB 1.2.0
Сообщения: 11
Стаж: 8 лет

интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение hodufozu »

Доброго всем времени суток.
Есть ли решения для интеграции Wordpress 4.4.x и phpBB 3.1.x ?
hodufozu
phpBB 1.2.0
Сообщения: 11
Стаж: 8 лет

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение hodufozu »

нашел вот такой WP w3all phpBB но я не силен в english
может есть тут кто понимает иностранный язык и мог бы помочь?
вот так выглядит страница с настройками
Аватара пользователя
SashaMinsky
phpBB 1.4.4
Сообщения: 114
Стаж: 11 лет 1 месяц
Благодарил (а): 8 раз
Поблагодарили: 14 раз

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение SashaMinsky »

hodufozu писал(а): нашел вот такой WP w3all phpBB но я не силен в english
Только появилась, скорее всего еще будет не раз обновляться из-за мелких багов. Заранее не угадаешь, насколько качественно автор собирается развивать и поддерживать и не забросит ли вскоре.

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

Если наконец сделают качественную интеграцию, я с удовольствием буду использовать, но пока верится с трудом, что она появится. Посмотрим, как сложится судьба у этого бриджа.
Аватара пользователя
LONER
phpBB 3.0.0 RC1
Сообщения: 1486
Стаж: 8 лет 2 месяца
Благодарил (а): 164 раза
Поблагодарили: 247 раз

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение LONER »

Кто в курсе, может кто-то уже ставил ? Вот этот плагин https://wordpress.org/plugins/wp-w3all- ... tegration/ работает с phpBB 3.1.x ?
Правильно заданный вопрос и описание проблемы - 70% их решения...
Erenbur
phpBB 1.4.4
Сообщения: 140
Стаж: 7 лет 11 месяцев
Благодарил (а): 24 раза
Поблагодарили: 20 раз

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение Erenbur »

LONER, я не ставил, но много читал про него и вообще про интеграцию с Вордпресс. Все косячное. Вордпресс можно использовать как часть сайта, предназначенная для конкретной задачи с независимыми авторизациями, но не встречал сайтов, которые смогли бы полноценно реализовать интеграцию Вордпресс в phpbb.
На истину в последней инстанции не претендую, хотел бы, чтобы меня поправили и сказали, что такое существует :)
Аватара пользователя
Neuro75
phpBB 1.0.0
Сообщения: 5
Стаж: 7 лет 5 месяцев
Поблагодарили: 9 раз

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение Neuro75 »

Только что поставил сабж, про который впервые и узнал как раз из этой темы.
WP - 4.6.1, phpBB - 3.1.10, phpBB в директории /forum основного сайта, WP w3all phpBB установил прям из админки WP, версия - 1.5.2.
На странице настроек ввел абсолютный путь к директории phpBB и url форума.
Полет полчаса, взаимные авторизации и выходы работают абсолютно корректно. Как вход, так и выход в любой из частей (WP или phpBB) приводит к входу или выходу в другой.
Главное правильно абсолютный путь ввести, я для этого использовал файл скрипта из трех строк, который не помню где накопал:

Код: Выделить всё

<?php
echo 'Document root: '.$_SERVER['DOCUMENT_ROOT'].'<br>';
echo 'Полный путь к скрипту и его имя: '.$_SERVER['SCRIPT_FILENAME'].'<br>';
echo 'Имя скрипта: '.$_SERVER['SCRIPT_NAME'];
?>
Обзывается как угодно с расширением *.php, например path.php, бросается в папку с phpBB и запускается через браузер: http://mysyte.com/forum/path.php.
Во второй строчке вывода показывает абсолютный путь к папке в которой лежит.
Теперь буду интегрировать phpBB в дизайн сайта, что уже не так тривиально (насколько я понял, пробежав настройки по диагонали, после ряда колдунств WP w3all phpBB должен создать шаблон страницы WP, которая будет фреймом и в которой и будет выводиться phpBB. Потом эта страница подключается в любом месте сайта на WP как и любая другая страница, например вызывается из меню и наступает всеобщее щасте.
Пошел ковырять.
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2208
Стаж: 16 лет 3 месяца
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 338 раз
Контактная информация:

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение nissin »

Не делайте фреймом, лучше подгоните дизайн форума под дизайн основного сайта.
Всё повторяется. nurlan.info
Аватара пользователя
Neuro75
phpBB 1.0.0
Сообщения: 5
Стаж: 7 лет 5 месяцев
Поблагодарили: 9 раз

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение Neuro75 »

Хм, пожалуй послушаю умного совета. Т.к. к пути настройки связки WP+phpBB пришел окончательно и бесповоротно сломав в течении крайней недели ранее стоявшую Joomlu пытаясь впилить в нее phpBB. Вот там как раз с взаимной авторизацией беда была. А впилка в дизайн потребовала таких изменений кода, что просто не смог все их вспомнить и откатить. Пришлось прибить, чтоб не мучилась.
Аватара пользователя
Mr. Anderson
phpBB Guru
phpBB Guru
Сообщения: 7522
Стаж: 20 лет
Откуда: СССР
Благодарил (а): 6 раз
Поблагодарили: 154 раза
Контактная информация:

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение Mr. Anderson »

Neuro75, ажно любопытно как у вас вышло? У меня на подшефнике - ни в какую не заработал. Ни общей куки, ни общей базы юзеров, ни даже фреймовой интеграции.
Аватара пользователя
LONER
phpBB 3.0.0 RC1
Сообщения: 1486
Стаж: 8 лет 2 месяца
Благодарил (а): 164 раза
Поблагодарили: 247 раз

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение LONER »

Mr. Anderson,
Neuro75 писал(а): На странице настроек ввел абсолютный путь к директории phpBB и url форума.
Neuro75 писал(а): Главное правильно абсолютный путь ввести, я для этого использовал файл скрипта из трех строк, который не помню где накопал:
Правильно заданный вопрос и описание проблемы - 70% их решения...
Аватара пользователя
Mr. Anderson
phpBB Guru
phpBB Guru
Сообщения: 7522
Стаж: 20 лет
Откуда: СССР
Благодарил (а): 6 раз
Поблагодарили: 154 раза
Контактная информация:

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение Mr. Anderson »

LONER, пройденный этап. Конфиг он видит, доволен этим фактом, экспортит юзеров из WP в phpBB. И... все.
Аватара пользователя
LONER
phpBB 3.0.0 RC1
Сообщения: 1486
Стаж: 8 лет 2 месяца
Благодарил (а): 164 раза
Поблагодарили: 247 раз

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение LONER »

Mr. Anderson, У меня все руки чешутся, но не доходят, у себя на локалке испытать. Может еще какие-то нюансы всплывут почему происходит так, а не иначе.
Правильно заданный вопрос и описание проблемы - 70% их решения...
Аватара пользователя
Mr. Anderson
phpBB Guru
phpBB Guru
Сообщения: 7522
Стаж: 20 лет
Откуда: СССР
Благодарил (а): 6 раз
Поблагодарили: 154 раза
Контактная информация:

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение Mr. Anderson »

LONER, ну объяснение почему не работает фрейм-интеграция какое-никакое есть - шкурка, вероятно, несовместимая. Правда это не объясняет почему не создается page с заданным именем в WP.
А вот почему куки общей нет и юзеры из phpBB в WP ниалё (обратный процесс работает ОК) - вот это я вообще не понимаю.
Аватара пользователя
Neuro75
phpBB 1.0.0
Сообщения: 5
Стаж: 7 лет 5 месяцев
Поблагодарили: 9 раз

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение Neuro75 »

Mr. Anderson писал(а): Neuro75, ажно любопытно как у вас вышло?
Извиняюсь, что не появлялся долго, как раз все свободное время с этой интеграцией возился, да с автором плагина переписывался.
Буду отчитываться на конкретном примере, не сочтите за рекламу, это я просто так для клуба где моя собака числится сайт ваяю из любви к искусству. Да и занимаюсь я сайтами постольку-поскольку, поэтому терминологией не владею, мне проще пальцем ткнуть.
Итак, увидеть как это у меня выглядит на сегодняшний момент можно по адресу: http://clubkavkaz.ru
WP 4.6.1 - в корне, phpBB 3.1.10 в /forum
Сначала вкратце пошагово как ставил и коротенько по пунктам, потом остановлюсь подробнее на тех граблях, с которыми борюсь. Заранее извиняюсь за возможное упоминание элементарных и интуитивно понятных вещей, но вдруг кому-нибудь понадобится при установке и настройке плагина.
1. Сначала установил плагин из репозитория (не знаю как это правильно в WP называется). Там сейчас 1.5.0 версия. Потом, когда уже лазил на сайте автора, скачал с него 1.5.2 и установил вручную. Разницы в работе не заметил, но как пишет автор, пофиксены кое-какие баги.
2. На странице настроек (Настройки - WP w3all):
а) Раздел конфигурации - WP_w3all Path and Url configuration
Как пишет автор - самый важный раздел.
Имеются два поля для ввода
- абсолютный путь к phpBB'шному файлу config.php, который будет использовать плагин;
- URL phpBB.
Поля не должны оканчиваться слешем (/).
Со вторым полем все просто (http://clubkavkaz.ru/forum в моем случае).
Остановлюсь на первом поле. Как явствует из описаний автора по приведенным им ссылкам, можно натравить плагин на родной config.php phpBB, прописав абсолютный путь к корню phpBB (у меня хостинг от reg.ru, в моем случае этот абсолютный путь, полученный приведенным мной выше скриптом path.php выглядит /var/www/uХХХХХХХХ/data/www/clubkavkaz.ru/forum).
Автор не рекомендует использовать родной config.php и советует:
- скопировать папку wp-content/plugins/wp-w3all-phpbb-integration/addons/wp-w3all-config (содержит файлы config.php и .htaccess) как есть в wp-content/plugins/ (!!! Именно папку, а не файлы из нее !!!).
- отредактировать в скопированной папке config.php, заменив в нем значения полей, отмеченных как 'required value here' на аналогичные значения из родного файла config.php phpBB, а также раскомментировав последнюю строку (убрав // из строки // @define('PHPBB_INSTALLED', true);)
- натравить плагин на этот файл, прописав путь к его папке в первом поле (на моем примере - /var/www/uХХХХХХХХ/data/www/clubkavkaz.ru/wp-content/plugins/wp-w3all-config)
У меня работали оба варианта. Сейчас стоит второй. Т.к. различные ошибки и недочеты в работе были и есть, в процессе попыток их устранения я менял много чего, в т.ч. и эти варианты. Сказать, что первый вариант приводит к каким-то специфическим недочетам не могу, также как и не могу сказать обратное. Остановился на втором просто потому что автор так советует.
После прописывания путей жмем на кнопку "Save WP_w3all configuration"

Раздел настроек WP_w3all Preferences
б) Пункт Exclude phpBB forums from listing on Last Topics Posts
Тут все понятно из названия. Исключает из вывода виджета w3all Last Topics Posts темы, размещенные в определенных форумах конференции. В поле вписываются id форумов через запятую без пробелов.
Упомянутый виджет работает, форумы указанные в этом пункте действительно исключаются, но так как (лично у меня) виджет последние темы выводил аршинными буквами и некрасиво, я его просто убрал. Думаю, в css все настраивается и можно ему сделать нормальный вывод, просто некогда было.

в) Пункт Deactivate phpBB user account until WP confirmation
Не очень понял логику работы этого пункта и его смысл. Автор пишет, что если параметр установлен в "Yes", регистрирующиеся в phpBB новые пользователи будут неактивны, и активируются только после того, как совершат первый логин в WP.
В примечании он указывает, что это работает только с дефолтной системой регистрации WP, высылающей первый пароль пользователю на мыло. А если вы, говорит, установите какой-нибудь регистрационный плагин, позволяющий пользователю выбрать пароль, то работать это не будет. Можно это поправить, но правки кода различаются в зависимости от регистрационного плагина который вы установили. Поэтому, мол, если вы будете использовать какой-нибудь метод регистрации позволяющий выбрать пароль, ставьте здесь "no" и все будет работать как надо.
Я 'no' поставил.

г) Пункт Activate WordPress to phpBB users transfer
Разово активируется для переноса существующих пользователей. После выбора 'yes' и нажатия "Save WPw3all Preferenses" в WP-меню "Настройки" появляется пункт 'WP w3all transfer'. Там все понятно, нужно в него зайти, кнопки понажимать, особенно самую большую первую, имеющиеся пользователи перенесутся. Потом вернуться в WP w3all, поставить в этом пункте 'no' и опять нажать "Сохранить". Пункт исчезнет. Очевидно, чтобы ручки шаловливые больше в трансферы не тыкали.

Раздел WP_w3all Avatars Options (1.0)
Тут вообще останавливаться не буду. Четыре пункта: 1) использовать аватар phpBB вместо аватара WP; 2) показывать аватар в виджете Last Forum Topics Widget; 3) размер аватара в этом самом виджете; 4) не понял и не стремился понять что это. Также что-то про аватары в этом виджете.
Пункт 1 у меня не работает (см.следующий пост с багами). 2 и 3 работают, проверял. Четвертый не знаю - не проверял.

И наконец, самый интересный раздел:
Раздел WP_w3all phpBB embedded on WordPress Template
Интеграция phpBB во фрейм WP. Если phpBB не будет встраиваться в шаблон WP, то ничего из нижеописанного делать не надо. Плагин будет работать только на трансфер пользователей WP-phpBB, phpBB-WP.
Вкратце, чего делает этот раздел: после совершения подготовительных действий, тыц на "Create\Rebuild WP_w3all phpBB Page Template", и создает страницу с заданным именем, в которой и выводится наш форум на сайте WP.
Подготовительные действия:
I) в файле overall_footer.html используемого стиля phpBB (лежит в директории phpBB d папке /styles/ваш_стиль/templates, настоятельно рекомендую соблюсти указанные в теме http://www.phpbbguru.net/community/view ... 61&t=44124 требования и создать свой наследованный стиль, который и мучить), непосредственно после строки

Код: Выделить всё

<!-- EVENT overall_footer_after -->
вставляем код

Код: Выделить всё

<script type="text/javascript">

$(document).on('mouseup', '.postimage', function(){
      var w3allappend = "getw3all_lightbox";
if ('parentIFrame' in window) window.parentIFrame.sendMessage(w3allappend);
});

  $(document).on("click", "a", function() {
   var href = $(this).attr("href");
   var w3allappend = href;

 if ('parentIFrame' in window) window.parentIFrame.sendMessage(w3allappend);

});
</script>
<script type="text/javascript" src="iframeResizer.contentWindow.min.js" defer></script>
А если, автор говорит, этой строки в overall_footer.html нет, вставьте ее и сразу после нее этот код непосредственно перед закрывающим тегом </body>.
Тут я привел код, валидный для текущей версии плагина (1.5.2), т.к. в дальнейшем автор может его менять, то целесообразно взять его из первоисточника, т.е. со страницы, на которую ведет первая ссылка в рассматриваемом разделе страницы настроек WP w3all.

II) Скопировать файл iframeResizer.contentWindow.min.js из папки ROOT_WP/wp-content/plugins/wp-w3all-phpbb-integration/addons/resizer в корень phpBB.
Этот файл непосредственно отвечает за растягивание WP-шной страницы с форумом на всю длину форума. И если страница не растягивается (высота фрейма будет 2-3 сантиметра и реагировать на содержимое он не будет) то либо ошибка в его имени в том куске кода, который мы вставили в overall_footer (это автор так говорит, я не знаю как можно ошибиться в имени при копировании), либо в абсолютных путях, которые ввели в первом разделе.
Нюанс: я не знаю как получилось такое колдунство, но при очередной установке этого плагина с нуля, мне было лень копировать данный файл на компьютер и заливать его в корень WP, поэтому я просто скопировал его из папки в папку средствами админки reg.ru. В результате фрейм не растягивался, пока я не слил файл на машину и не залил в папку. Понимаю, что такого не может быть, однако факт. Может звезды так стали, может админка reg.ru при внутреннем копировании что-то с правами доступа мудрит. Просто обращаю внимание.

III) Перекомпилировать старые стили phpBB.
В админке phphBB: Server Configuration -> Load settings -> Recompile stale style components (Конфигурация сервера - Нагрузка на сервер - Перекомпилировать старые шаблоны) Установить "YES", "Сохранить", потом установить "No", "Сохранить".
Этот пункт в алгоритме автор указывает вообще в недрах своих объяснений и, думаю, он там приведен скорее для перестраховки. Во всяком случае при первых переустановках я его не делал, т.к. в главном описании настроек он не упомянут, и все работало.

IV) Теперь в единственное имеющееся поле в данном разделе настроек плагина надо ввести имя страницы в которой будет отображаться форум. Корректные имена для ввода: board, boards, community, forum, forums. Если введено любое другое, то будет использовано имя по умолчанию - forum и создастся файл с именем page-forum.html.
Если форум установлен в поддомене относительно WP (как в моем примере, например) нельзя вводить значение, совпадающее с именем поддомена (т.е. я не могу ввести forum, поэтому ввел board).

V) Жмем "Create\Rebuild WP_w3all phpBB Page Template"
Автор предупреждает, что каждое повторное нажатие этой кнопки приводит к перезаписи файла шаблона и все внесенные в него изменения будут потеряны.

VI) Идем в WP, создаем ПУСТУЮ страницу с именем, совпадающим с тем, что мы ввели в поле в этом разделе. Т.е. в моем примере я создал страницу board. Сохраняем ее (ну т.е. жмем "Опубликовать"). Привязываем ее к пункту меню (который уже можно назвать как угодно, что бы на сайте выводился Форум, например, а не board) или выводим на сайт каким-либо иным образом.
Тоже вот, не очевидное решение использовано. Плагин создает не шаблон страницы, как можно было бы подумать из описания в настройках (ну, т.е. создаем страницу с любым названием и применяем к ней созданный плагином шаблон), а требует назвать страницу определенным именем и потом она сама подхватывает этот шаблон нужным образом. При этом в админке WP никаких намеков нет. Пойди, догадайся.

Фу, елки. Закончил с описанием установки. Два часа писал. Сейчас передохну и приступлю к описанию выявившихся проблем, часть из которых решил, часть нет.
Последний раз редактировалось Neuro75 23.10.2016 15:47, всего редактировалось 2 раза.
Аватара пользователя
Neuro75
phpBB 1.0.0
Сообщения: 5
Стаж: 7 лет 5 месяцев
Поблагодарили: 9 раз

Re: интеграция Wordpress 4.4.x и phpBB 3.1.x

Сообщение Neuro75 »

Продолжаю.
Т.к. сейчас активно пытаюсь довести до ума эту интеграцию на своем сайте, буду периодически редактировать этот пост внося в него выявленные баги и найденные (или не найденные) пути их решения. Прошу более знающих чем я людей помочь по возможности советом, если знаете пути решения обозначенных проблем.
Итак.
Основной файл плагина - page-board.php (или page-forum.php, или page-как_вы_его_назвали_в_настройках.php), лежащий в папке WP-root/wp-content/themes/ваша_тема/
Мой page-board.php, который скомпилировал плагин, думаю он у всех одинаковый будет, а может будет отличаться разметкой страницы:
Мой page-board.php: 
<?php
/**
* The default basic template to display content for WP_w3all embedded phpBB
* @package WordPress
* @subpackage wp_w3all
*/
// - axew3.com - //

// START DO NOT MODIFY

$w3forum_id = isset($_GET["forum_id"]) ? $_GET["forum_id"] : '';
$w3topic_id = isset($_GET["topic_id"]) ? $_GET["topic_id"] : '';
$w3post_id = isset($_GET["post_id"]) ? $_GET["post_id"] : '';
$w3mode = isset($_GET["mode"]) ? $_GET["mode"] : '';
$w3phpbbsid = isset($_GET["sid"]) ? $_GET["sid"] : '';
$w3phpbb_viewforum = isset($_GET["viewforum"]) ? $_GET["viewforum"] : '';
$w3phpbb_viewtopic = isset($_GET["viewtopic"]) ? $_GET["viewtopic"] : '';
$w3phpbb_start = isset($_GET["start"]) ? $_GET["start"] : '';
$w3allhomeurl = get_home_url();

if( preg_match('/[^0-9]/',$w3phpbb_start) OR preg_match('/[^0-9]/',$w3topic_id) OR preg_match('/[^0-9]/',$w3phpbb_viewtopic) OR preg_match('/[^0-9]/',$w3phpbb_viewforum) OR preg_match('/[^0-9]/',$w3forum_id) OR preg_match('/[^0-9]/',$w3post_id) OR preg_match('/[^0-9A-Za-z]/',$w3mode) OR preg_match('/[^0-9A-Za-z]/',$w3phpbbsid) ){

die("Something goes wrong with your URL request, <a href=\"$w3allhomeurl\">please leave this page</a>.");
}

$w3logout = $w3mode;

$w3urlscheme = parse_url($w3all_url_to_cms);
$w3urlscheme = $w3urlscheme['scheme'];

$w3all_target_server = preg_replace('/^[^\.]*\.([^\.]*)\.(.*)$/', '\1.\2',$w3all_url_to_cms); // REVIEW this

// build correct links x iframe

if (!empty($w3forum_id) && empty($w3phpbb_viewforum)){
$uiframe = "/viewtopic.php?f=".$w3forum_id."&p=".$w3post_id."#p".$w3post_id."";
$w3all_url_to_cms .= $uiframe;
} elseif (!empty($w3phpbb_viewforum) && !empty($w3post_id) ) {
$w3all_url_to_cms = $w3all_url_to_cms . "/viewtopic.php?f=". $w3phpbb_viewforum ."&p=".$w3post_id."#p".$w3post_id."";//exit;

}
elseif (!empty($w3forum_id) && !empty($w3topic_id)) {
$w3all_url_to_cms . "/viewtopic.php?f=". $w3phpbb_viewforum ."&t=".$w3topic_id."";
} elseif (!empty($w3phpbb_viewforum) && empty($w3phpbb_viewtopic)) {
$w3all_url_to_cms = $w3all_url_to_cms . "/viewforum.php?f=". $w3phpbb_viewforum ."";
} elseif (!empty($w3phpbb_viewtopic) && empty($w3phpbb_start)) {
$w3all_url_to_cms = $w3all_url_to_cms . "/viewtopic.php?f=". $w3phpbb_viewforum ."&t=".$w3phpbb_viewtopic."";
} elseif (!empty($w3phpbb_viewtopic) && !empty($w3phpbb_start)) {
$w3all_url_to_cms = $w3all_url_to_cms . "/viewtopic.php?f=". $w3phpbb_viewforum ."&t=".$w3phpbb_viewtopic."&start=".$w3phpbb_start."";
} elseif (stristr($w3mode, "register")) {
$w3all_url_to_cms = $w3all_url_to_cms . "/ucp.php?mode=register";
} elseif (stristr($w3mode, "sendpassword")) {
$w3all_url_to_cms = $w3all_url_to_cms . "/ucp.php?mode=sendpassword";
} elseif (stristr($w3mode, "login")) {
$w3all_url_to_cms = $w3all_url_to_cms . "/ucp.php?mode=login";
} elseif (stristr($w3mode, "logout")) {
$w3all_url_to_cms = $w3all_url_to_cms . "/ucp.php?mode=logout&sid=". $w3phpbbsid ."";
}
else {
$w3all_url_to_cms = $w3all_url_to_cms;
}

// the modal screen // css

function wp_w3all_css_modal_login() {

$w3all_cssmodal = "<style type=\"text/css\">
.w3allmodalDialog {
position: fixed;
font-family: Arial, Helvetica, sans-serif;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,0.8);
z-index: 99999;
opacity:0;
-webkit-transition: opacity 400ms ease-in;
-moz-transition: opacity 400ms ease-in;
transition: opacity 400ms ease-in;
pointer-events: none;
}
.w3allmodalDialog:target {
opacity:1;
pointer-events: auto;
}

.w3allmodalDialog > div {
width: 400px;
position: relative;
margin: 10% auto;
padding: 5px 20px 13px 20px;
border-radius: 10px;
background: #fff;
background: -moz-linear-gradient(#fff, #999);
background: -webkit-linear-gradient(#fff, #999);
background: -o-linear-gradient(#fff, #999);
}
.w3allclose {
background: #606061;
color: #FFFFFF;
line-height: 25px;
position: absolute;
right: -12px;
text-align: center;
top: -10px;
width: 24px;
text-decoration: none;
font-weight: bold;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
-moz-box-shadow: 1px 1px 3px #000;
-webkit-box-shadow: 1px 1px 3px #000;
box-shadow: 1px 1px 3px #000;
}

.w3allclose:hover { background: #333; }
</style>
";

echo $w3all_cssmodal;

}

add_action('wp_head','wp_w3all_css_modal_login');

function wp_w3all_hook_jresizer() {

$s = "<script type=\"text/javascript\" src=\"".plugins_url()."/wp-w3all-phpbb-integration/addons/resizer/iframeResizer.min.js\"></script>
<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jq ... "></script>
";

echo $s;

}

add_action('wp_head','wp_w3all_hook_jresizer');

// END DO NOT MODIFY

// Start a default WordPress page

get_header();

?>
<!-- START w3all_cssmodal_login div -->
<div id="w3allopenModal" class="w3allmodalDialog">
<div>
<a href="#w3allclose" title="Close" class="w3allclose">X</a>
<form method="post" action="<?php echo $w3all_url_to_cms; ?>/ucp.php?mode=login" class="">
<h3><a href="<?php echo $wp_w3all_forum_folder_wp; ?>/?mode=register">Register</a></h3>
<label for="username"><span>Username:</span> <input type="text" tabindex="1" name="username" id="username" size="10" class="" title="Username"></label>
<label for="password"><span>Password:</span> <input type="password" tabindex="2" name="password" id="password" size="10" class="" title="Password" autocomplete="off"></label>
<br /><br /><a href="<?php echo $wp_w3all_forum_folder_wp; ?>/?mode=sendpassword">I forgot my password</a>
<span class="">|</span> <label for="autologin">Remember me <input type="checkbox" tabindex="4" name="autologin" id="autologin"></label>
<input type="submit" tabindex="5" name="login" value="Login" class="">
<input type="hidden" name="redirect" value="<?php echo $w3urlscheme . "://" . $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>">
</form>
</div>
</div><!-- END w3all_cssmodal_login div -->
<!-- START iframe div -->

<div class="">
<noscript><h3>Your browser seem to have Javascript disabled, you can't load correctly the forum page at this Url. Please enable Javascript on your browser or <a href="<?php echo $w3all_url_to_cms;?>">visit the full forum page here</a>.<br /><br /></h3></noscript>
<iframe style="width:100%;border:0 !important;" src="<?php echo $w3all_url_to_cms; ?>"></iframe>

<?php

echo "<script type=\"text/javascript\">

iFrameResize({

log : false,
inPageLinks : true,
targetOrigin: '".$w3urlscheme."://".$w3all_target_server."',
// heightCalculationMethod:'bodyScroll', // if iframe not resize on phpBB template bottom, uncomment this

messageCallback : function(messageData){ // Callback fn when message is received
$('p#callback').html(
'<b>Frame ID:</b> ' + messageData.iframe.id +
' <b>Message:</b> ' + messageData.message
);

// w3all simple js check and redirects

var w3all_passed_url = messageData.message.toString();



var w3all_ck = \"".$_SERVER['SERVER_NAME']."\";

var w3all_pass_ext = (w3all_passed_url.indexOf(w3all_ck) > -1);

if (w3all_pass_ext == true) {
window.location.replace(w3all_passed_url);
}

if (/^(f|ht)tps?:\/\//i.test(w3all_passed_url)) {
window.location.replace(w3all_passed_url);
}

var w3all_ck2 = 'ucp.php?mode=login';
var w3all_pass_login = (w3all_passed_url.indexOf(w3all_ck2) > -1);

if (w3all_pass_login == true) {

var w3_login_modallink = '".$w3allhomeurl."/index.php/".$wp_w3all_forum_folder_wp."/?#w3allopenModal';
window.location.replace(w3_login_modallink);
}

var w3all_ck3 = 'ucp.php?mode=logout';
var w3all_pass_login_out = (w3all_passed_url.indexOf(w3all_ck3) > -1);

if (w3all_pass_login_out == true) {
window.location.replace('".$w3allhomeurl."/index.php/".$wp_w3all_forum_folder_wp."/');
}
//
var w3all_ck4 = 'quickmod';
var w3all_phpBBquickmod = (w3all_passed_url.indexOf(w3all_ck4) > -1);

if (w3all_phpBBquickmod == true) {
window.scrollTo(0, 200);
}

var w3all_ck_reply = 'mode=reply';
var w3all_1_ck_reply = (w3all_passed_url.indexOf(w3all_ck_reply) > -1);

if (w3all_1_ck_reply == true) {
window.scrollTo(0, 200);
}

// if phpBB lightbox

var w3all_ck5 = 'getw3all_lightbox';
var w3all_phpBB_lightbox = (w3all_passed_url.indexOf(w3all_ck5) > -1);

if (w3all_phpBB_lightbox == true) {
window.scrollTo(0, 150);
}


// push passed url to the browser history if on index.php
var w3all_ck8 = 'index.php';
var w3all_viewmainindex_push = (w3all_passed_url.indexOf(w3all_ck8) > -1);
if (w3all_viewmainindex_push == true) {
var w3matches = /index\.php$/ig.exec(w3all_passed_url);
if (w3matches) {
w3all_passed_url_push = '".$w3allhomeurl."/index.php/".$wp_w3all_forum_folder_wp."';
history.replaceState('', 'Index', w3all_passed_url_push);
}
}

// push passed url to the browser history if on viewforum.php
var w3all_ck7 = 'viewforum.php';
var w3all_viewforum_push = (w3all_passed_url.indexOf(w3all_ck7) > -1);
if (w3all_viewforum_push == true) {

var w3matches = /viewforum\.php\?f=([0-9]+)/ig.exec(w3all_passed_url);

w3all_passed_url_push = '".$w3allhomeurl."/index.php/".$wp_w3all_forum_folder_wp."/?viewforum=' + w3matches[1];
history.replaceState('', 'Forum', w3all_passed_url_push);
}



// push passed url to the browser history if on viewtopic.php

var w3all_ck6 = 'viewtopic.php';
var w3all_viewtopic_push = (w3all_passed_url.indexOf(w3all_ck6) > -1);

if (w3all_viewtopic_push == true) {

var w3matches = /viewtopic\.php\?.*([0-9]+).*&(p|t)=([0-9]+)(&start=|#p)?([0-9]+)?/ig.exec(w3all_passed_url);

if(!w3matches[4]){
w3all_passed_url_push = '".$w3allhomeurl."/index.php/".$wp_w3all_forum_folder_wp."/?viewforum=' + w3matches[1] + '&viewtopic=' + w3matches[3];
history.replaceState('', 'Topic', w3all_passed_url_push);
} else if (w3matches[4] == '#p'){
w3all_passed_url_push = '".$w3allhomeurl."/index.php/".$wp_w3all_forum_folder_wp."/?viewforum=' + w3matches[1] + '&post_id=' + w3matches[5];
history.replaceState('', 'Topic', w3all_passed_url_push);
} else {
w3all_passed_url_push = '".$w3allhomeurl."/index.php/".$wp_w3all_forum_folder_wp."/?viewforum=' + w3matches[1] + '&viewtopic=' + w3matches[3] + w3matches[4] + w3matches[5];
history.replaceState('', 'Topic', w3all_passed_url_push);

} }


}
});


var w3allogout = '".$w3logout."';
if (w3allogout == 'logout') {
window.location.replace('".$w3allhomeurl."' + '/wp-login.php?action=logout');

}



</script>";
?>

</div>
<!-- END iframe div -->
<?php get_footer(); ?>
Форум разработчика по поддержке плагина: https://wordpress.org/support/plugin/wp ... ntegration).

Выявленные баги:
1. После установки плагина указанной в предыдущем посте последовательностью действий (как он, собственно, и должен устанавливаться и настраиваться), ошибка 404 при логине\логауте в phpBB
Ошибка 404. Описание бага 
После установки, я, будучи залогиненным в WP в качестве admin'a прикрутил страницу board к пункту меню, запустил ее, конференция корректно появилась во фрейме. Все ее внутренние ссылки отрабатывали корректно, т.е. при переходе по ссылкам она продолжала правильно отображаться в теме WP.
Далее я буду использовать обозначения URL чтобы показать куда ведет ссылка и redirect, чтобы показать что отображается в строке браузера, т.е. куда происходит редирект.
Итак:
1. Я залогинен в WP admin'ом, перехожу на конференцию через меню WP
URL: mysite.com/?page_id=63 (кнопка Форум, вызывающая страницу с конференцией);
redirect: mysite.com/?page_id=63 (корректно появляется конференция во фрейме);

2. Хожу по ссылкам форумов:
URL: mysite.com/forum/viewforum.php?f=ХХ (где ХХ - id соответствующего форума);
redirect: mysite.com/index.php/board/?viewforum=ХХ

3. Находясь внутри любого форума, жму на любую кнопку или ссылку, не являющуюся ссылкой на форум, например, "Новая тема":
URL: mysite.com/forum/posting.php?mode=post&f=ХХ (где ХХ - id форума где я нахожусь);
redirect: mysite.com/index.php/board/?viewforum=ХХ (отстается неизменной)
Т.е. ссылка отрабатывает во фрейме, появляется окно для ввода новой темы, но в адресной строке браузера по прежнему старый URL, указывающий на форум.
Пока все работает нормально, перещелкал все ссылки какие смог, все корректно. Кроме одной (см.ниже).

4. Жму на выход из текущего пользователя в phpBB:
URL: mysite.com/forum/ucp.php?mode=logout&sid=74_очевидно_кука_a1dc
redirect: mysite.com
Во фрейме на долю мгновения проскакивает главная страница конференции (успеваю заметить страницу с "Регистрация" и "Вход" сверху), после чего все переходит на главную страницу WP.
Из WP пользователь тоже разлогинился.

5. Опять захожу на страницу конференции через меню WP. Во фрейме корректно отображается главная страница конференции без залогиненного пользователя.
redirect: mysite.com/?page_id=63

6. Жму на "Вход" в phpBB:
URL: mysite.com/forum/ucp.php?mode=login&sid=9d4_уже_другая_кука_5693c
redirect: mysite.com/board/ (получаю ошибку 404, не во фрейме, а во весь экран)

7. Повторяю по кругу:
- захожу на сайт, я там разлогинен;
- логинюсь через логин WP;
- перехожу на конференцию, я там уже залогинен;
- жму выход в phpBB, иногда выбрасывает на главную страницу (redirect: mysite.com), а иногда в ошибку 404 (redirect: mysite.com/board/). Без какой-либо системы в том, куда перейду.
- если получается разлогиниться в главную страницу WP, при попытке логина в phpBB всегда получаю ошибку 404, но и тут есть варианты: либо при этом redirect: mysite.com/board/, либо redirect: mysite.com/board/#w3allopenModal . Системы опять-таки не уловил.
Костыль. Возможно - решение 
Списался с разработчиком: https://wordpress.org/support/topic/err ... nto-phpbb/.
Он сказал, что за редирект при логине через phpBB отвечает следующий блок page-board.php:

Код: Выделить всё

 if (w3all_pass_login_out == true) {
    window.location.replace('".$w3allhomeurl."/index.php/".$wp_w3all_forum_folder_wp."/'); 
   }
и сказал попробовать так изменить его:

Код: Выделить всё

if (w3all_pass_login_out == true) {
    window.location.replace('".$w3allhomeurl."/index.php/'); 
   }
Попробовал. Ничего, собственно, не изменилось.
Не являясь специалистом в php я подумал, что раз для всех событий отдельных блоков подобных тому на который мне автор указал в page-board.php нет и они работают, а для логина и логаута есть и они не работают (в моем листинге page-board.php выше выделены синим цветом), то логично их закомментировать, что и сделал.
Т.е. сейчас у меня на сайте этот кусок файла выглядит следующим образом:

Код: Выделить всё

// var w3all_ck2 = 'ucp.php?mode=login';
// var w3all_pass_login = (w3all_passed_url.indexOf(w3all_ck2) > -1);
//
//
// if (w3all_pass_login == true) {
//
// var w3_login_modallink = '".$w3allhomeurl."/index.php/".$wp_w3all_forum_folder_wp."/?#w3allopenModal';
// window.location.replace(w3_login_modallink);
// }
//
// var w3all_ck3 = 'ucp.php?mode=logout';
// var w3all_pass_login_out = (w3all_passed_url.indexOf(w3all_ck3) > -1);
// 
// 
// if (w3all_pass_login_out == true) {
// window.location.replace('".$w3allhomeurl."/index.php/".$wp_w3all_forum_folder_wp."/');
// }
Теперь фреймовая часть работает полностью корректно. Нажимал на все кнопки и ссылки какие смог нажать - ошибок не выявлено.
Имеющиеся баги не связанные с отображением (см. далее) от комментирования данных строк не зависят, что так есть, что так (проверяется на параллельном тестовом стенде).
Сам автор на вопрос о корректности удаления этих строк из файла философски замечает :lol: :

Код: Выделить всё

Well, if it work, it should be correct of course!
Однако, меня терзают смутные сомнения. Зачем-то же автор эти строки туда вписал?
Буду признателен, если кто-нибудь прокомментирует.
2. При логине\разлогине пользователей в любой части (phpBB или WP) происходит корректный логин\разлогин в другой. Т.е. в этом плагин работает нормально. Единственное, т.к. phpBB находится во фрейме, то отображение залогиненного пользователя в WP (именнно отображение, а не сам факт логина\разлогина) отстает на одно обновление страницы WP. Собственно, так и должно быть. При первом же обновлении страницы WP в результате какого-либо действия все начинает отображаться правильно. Можно подумать о принудительном обновлении страницы, но есть ли смысл?.

3. Если новый пользователь зарегистрирован через phpBB, WP разово выдает ошибку Error: username or email already exist
Error: username or email already exist. Описание бага 
Если новый пользователь регистрируется через phpBB, и его первый вход осуществляется также через phpBB, WP выбрасывает сайт в экран ошибки:

Код: Выделить всё

Error: username or email already exist
The username or/and email address provided already exist, or result associated, to another existent user account on our forum database.
Please return back
Причем делает это не сразу, а только при обращении к главной странице.
Поясню несколько корявую мысль: в phpBB во фрейме вошли. Он отобразил вместо "Регистрация\Вход" уже профиль пользователя. Можно по ссылкам во фрейме походить. Главная страница, не обновившись, еще тупит и факт входа пользователя не отображает. При первом же действии, которое требует от главной страницы обновиться - сайт вылетает в экран ошибки.
Вместе с тем, вход в WP фактически произошел. Если нажать на Please return back на странице ошибки, или, например, вручную вбить адрес сайта в строке браузера, то мы вернемся на сайт, где будем наблюдать залогиненного пользователя и в WP и в phpBB. Дальше все работает нормально.
Если же первый вход после регистрации производится через WP, то такого не происходит.
Баг проявляется независимо от положения переключателя в пункте Deactivate phpBB user account until WP confirmation настроек плагина.
Наблюдается только при первом входе, потом все нормально работает.
Пофикшено в 1.5.3 
Ух ты, утром писал, старался, а вечером смотрю - обновление плагина и написано, что эта ошибка пофикшена. Бум проверять.
Проверил. Действительно все нормально теперь.
4. Присвоенный пользователю в phpBB аватар в WP не переносится.
Независимо от положения галки в пункте Use phpBB avatar to replace WordPress user's avatar настроек плагина.
Решения пока нет 
5. При регистрации пользователя в любой из частей, он корректно создается и в другой. (+)
При удалении пользователя в WP, в phpBB он не удаляется, а помечается как неактивный. (-)
При удалении пользователя в phpBB, в WP он не удаляется. (-)
Решения пока нет 
Последний раз редактировалось Neuro75 24.10.2016 16:09, всего редактировалось 4 раза.
Перенесено из форума Поддержка phpBB 3.1.x в форум phpBB-пространство 18.02.2019 1:22 модератором Sheer

Ответить

Вернуться в «phpBB-пространство»