Просмотр полной версии : интеграция движка с vbulletin
кто-нибудь писал скрипты, которые используют классы буллетина?
у меня не работает ни один пример
перехожу в директорию форума, затем
require_once('global.php');
и тут же масса ошибок:
Warning: array_keys() [function.array-keys]: The first argument should be an array in [path]\includes\functions.php on line 4088
Warning: Invalid argument supplied for foreach() in [path]\includes\functions.php on line 4088
Fatal error: Call to a member function query_read_slave() on a non-object in C:\www\**\cms\forum\includes\functions.php on line 3093
с чего начать?
Dark_Scorpicore
13.06.2009, 16:49
А что не ясно?
Ошибки? Там же все написано
если положить в папку с форумом test.php, заинклудить в него global.php и распечатать $vbulletin - то всё нормально
но если заинклудить global.php в скрипте, который лежит во внешней директории (../)
относительно форума - то лезут эти ошибки
ошибки появляются потому что в functions.php
foreach (array_keys($vbulletin->forumcache) AS $forumid)
$vbulletin->forumcache - почему-то не определён!
erihtoney
13.06.2009, 17:26
Ну понятное дело, что у вас ничего работать не будет, про интеграцию скриптом в булке написано здесь (http://alex.devilart.ru/2008/07/01/15)
erihtoney
13.06.2009, 17:33
Сайт в дауне
Пишу здесь
Ну-с, начем. Для этого нам понадобится:
1. Модуль product-letphplive.xml (Он же продукт, который позволяет парсить PHP)
2. Маленькое пособие по созданию страниц в vBulletin (опционально)
Первый шаг - создаем страницу.
Созаем новый файл типа test.php. Открываем test.php и добавьте следущее (Примечание: Замените TEST в соответствии новосозданного шаблона. Т.е. шаблон создали RULEZ, этой же фразой заменяем все места указанные TEST):
< ?php
// ####################### Установка среды PHP ###########################
error_reporting(E_ALL & ~E_NOTICE);
// #################### Определение важных констант #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'test'); // измените это в зависимости от названия файла
// ################### Кеширование шаблонов и данных ######################
// get special phrase groups
$phrasegroups = array(
);
// получение специальных шаблонов с данными с базы
$specialtemplates = array(
);
// кеширование шаблонов, исрользуемых всеми действиями
$globaltemplates = array(
'TEST',
);
// кеширование шаблонов, исрользуемых специфическими действиями
$actiontemplates = array(
);
// ######################### Получение системы ############################
require_once('./global.php');
// ################################################## #####################
// ######################## НАЧАЛО ОСНОВНОГО СКРИПТА ############################
// ################################################## #####################
$navbits = array();
$navbits[$parent] = 'Test Page';
$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('TEST') . '");');
?>
Далее создаем шаблон TEST с “начинкой” такого рода:
$stylevar[htmldoctype] <html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]"> <head> <title>$vboptions[bbtitle]</title> $headinclude
</head> <body> $header $navbar <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0"
width="100%" align="center"> <tr> <td class="tcat">Title</td> </tr> <tr>
<td class="alt1">Test</td>
</tr> </table> $footer </body> </html>
Этим кодом является оформление нашей странцы, что включает в семя как переменный скрипта так и HTML.
Не тяжело догадаться, что будущий наш PHP код мы будем “пихать” вместо фразы “Text“.
Должно получиться что-то типа такого:
$stylevar[htmldoctype] $headinclude
$header $navbar
<table class="tborder" border="0" cellspacing="$stylevar[cellspacing]" cellpadding="$stylevar[cellpadding]">width="100%" align="center">
<tbody>
<tr>
<td class="tcat">Title</td>
</tr>
<tr>
<td class="alt1">
< ?php
if($flag){
echo "Hello world!";
}
?>
</td>
</tr>
</tbody></table>
$footer
В конечном итоге - устанавливаем и активируем Модуль product-letphplive.xml
Модуль можешь скачать отсюда (http://www.vbsupport.org/forum/showthread.php?p=165777)
(С)devilart.ru (http://devilart.ru)
спасибо за помощь, но несложно заметить что тестовый скрипт в этом примере лежит в корневой папке форума
когда я кладу test.php в корневую папку - он тоже замечательно работает
а когда я кладу его в
www/test.php
и делаю инклуд
www/forum/global.php
некоторые функции движка, типа fetch_template
перестаю видеть
global $vbulletin!
если его распечатать в теле функции - он NULL
а если передать в качестве параметра - то нормальный объект
одну функцию я "пофиксил", сделав $vbulletin необязательным параметром, но fetch_template вызывается в global.php десяток раз и каждый раз через eval.
значит надо искать причину возникновения этой проблемы и решать как-то иначе
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot