Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   интеграция движка с vbulletin (https://forum.antichat.xyz/showthread.php?t=125058)

Дикс 13.06.2009 16:31

интеграция движка с vbulletin
 
кто-нибудь писал скрипты, которые используют классы буллетина?

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

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

PHP код:

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
PHP код:

    foreach (array_keys($vbulletin->forumcache) AS $forumid

$vbulletin->forumcache - почему-то не определён!

erihtoney 13.06.2009 17:26

Ну понятное дело, что у вас ничего работать не будет, про интеграцию скриптом в булке написано здесь

erihtoney 13.06.2009 17:33

Интеграция PHP в скрипт vBulletin
 
Сайт в дауне
Пишу здесь
Цитата:

Ну-с, начем. Для этого нам понадобится:
1. Модуль product-letphplive.xml (Он же продукт, который позволяет парсить PHP)
2. Маленькое пособие по созданию страниц в vBulletin (опционально)

Первый шаг - создаем страницу.
Созаем новый файл типа test.php. Открываем test.php и добавьте следущее (Примечание: Замените TEST в соответствии новосозданного шаблона. Т.е. шаблон создали RULEZ, этой же фразой заменяем все места указанные TEST):


PHP код:

< ?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 с “начинкой” такого рода:
PHP код:

$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“.
Должно получиться что-то типа такого:

PHP код:

$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
Модуль можешь скачать отсюда
(С)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.

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


Время: 12:40