PDA

Просмотр полной версии : интеграция движка с vbulletin


Дикс
13.06.2009, 16:31
кто-нибудь писал скрипты, которые используют классы буллетина?

у меня не работает ни один пример

перехожу в директорию форума, затем

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
А что не ясно?
Ошибки? Там же все написано

Дикс
13.06.2009, 17:15
если положить в папку с форумом 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"&gt;
<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)

Дикс
13.06.2009, 17:53
спасибо за помощь, но несложно заметить что тестовый скрипт в этом примере лежит в корневой папке форума

когда я кладу test.php в корневую папку - он тоже замечательно работает

а когда я кладу его в
www/test.php
и делаю инклуд
www/forum/global.php

некоторые функции движка, типа fetch_template
перестаю видеть

global $vbulletin!

если его распечатать в теле функции - он NULL
а если передать в качестве параметра - то нормальный объект

одну функцию я "пофиксил", сделав $vbulletin необязательным параметром, но fetch_template вызывается в global.php десяток раз и каждый раз через eval.

значит надо искать причину возникновения этой проблемы и решать как-то иначе