Как интегрировать vBulletin в сложный сайт PHP? - PullRequest
0 голосов
/ 15 ноября 2018

Я управляю сайтом, построенным на PHP, который использует многоуровневую систему шаблонов Smarty с основным шаблоном, включающим под-шаблоны и т. Д. Сам сайт имеет свои собственные динамические функции, включая профиль пользователя, отображаемый в заголовке., нижний колонтитул сайта и выпадающие меню зависят от уровня доступа пользователя и т. д.

Теперь мне нужно поместить форум vBulletin в середину всего этого.

Один из моих вариантов, конечно же,сделать vBulletin «похожим» на сайт с плагином для верхнего и нижнего колонтитула - но об этом почти не может быть и речи, так как некоторые функции сайта должны полностью перекрывать доступ к форуму (периоды обслуживания, ограничения доступа пользователей, случайные «всплески»страница «перенаправления», у нас есть JavaScripts и заголовочные биты, а затем есть часть о шаблонах для всего сайта, которую я упомянул.Большие биты кода страницы нужно было бы дублировать, и я бы предпочел этого избегать.

Поэтому я пошел другим путем и начал включать файлы форума через PHP-скрипт «обертки», надеясь захватить его.выводить целиком в выходной буфер и помещать его в свой шаблон.Я даже смоделировал REQUEST_URI и другие поля $ _SERVER, чтобы форум думал, что он работает автономно.Он отчаянно боролся со мной, вырываясь из ob_start () и die () вместо возвращения в определенные моменты, настолько, что я вернулся к чертежной доске.

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

Какие еще варианты у меня есть?Все сайты, использующие vBulletin, придерживаются простых верхних и нижних колонтитулов, или я что-то упускаю из виду?

Обновление: что полностью решило бы мою проблему, если бы vB поддерживал плагин "template wrapper", называемыйсо всем сгенерированным HTML форума, буферизованным в качестве параметра;«Вот выход, иди и делай с ним что угодно, черт возьми».Но есть ли поддержка для этого?Или это возможно взломать?

1 Ответ

0 голосов
/ 20 ноября 2018

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

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

...