форум vBSupport.ru > vBulletin > Вопрос — Ответ
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
Xvwer
Простоузер
Default Передача переменных между модулями
0

Добрый вечер.
Тут мучаюсь такой загадкой: как выдернуть текст первого (верхнего) поста любой страницы темы (showthread.php) на эту же страницу, но в другое место (где-нибудь вверху страницы, например)

В модуле showthread_postbit_create забрал текст поста
PHP Code:
if (!isset($vbulletin->myvar['firstpost']))
{
$vbulletin->myvar['firstpost'] = $post['pagetext'];


Пробовал в global_start его вызвать:
PHP Code:
if (isset($vbulletin->myvar['firstpost']))
{
$showfirstpost=$vbulletin->myvar['firstpost'];

В $showfirstpost пусто.
Помогите передать переменную в модуль.

Last edited by Xvwer : 07-02-2010 at 11:04 PM.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
Cybermama
Эксперт
 
Cybermama's Avatar
Default
1

Xvwer, во-первых посмотри хаки chief post и first post on all pages -
во-вторых - хук global_start выполняется до хука showthread_postbit_create и переменную ты туда не вытянешь
(Посмотреть нужные хуки на странице и порядок их выполнения можно включив режим debug в конфиге или поставив этот хак http://vbsupport.ru/forum/showthread.php?t=21132) тогда под каждой странице на форуме будет отображена полезная информация об используемых хуках, шаблонах и т.п.
Code:
if (!isset($vbulletin->myvar['firstpost']))
{
$vbulletin->myvar['firstpost'] = $post['pagetext'];
}
откуда этот код - вообще непонятно нет такого объекта $vbulletin->myvar в классе $vbulletin
Есть $vbulletin->options - массив настроек форума, $vbulletin->userinfo - массив инфы о пользователе, и др. Они уже заданы движком. Если ты хочешь использовать свою переменную - то пишешь проcто $myvar

Last edited by Cybermama : 07-03-2010 at 12:05 AM.
 
 
Xvwer
Простоузер
Default
0

Quote:
Originally Posted by Cybermama View Post
во-вторых - хук global_start выполняется до хука showthread_postbit_create
Понял. Спасибо.

myvar - это моя переменная, а $vbulletin->myvar сделал чтобы передавать ее глобально (по крайней мере думал, что это можно сделать так).
 
 
netwind
Гуру
 
netwind's Avatar
Default
1

Quote:
Если ты хочешь использовать свою переменную - то пишешь проcто $myvar
К сожалению, не всегда. Ряд хуков определен внутри функций или классов. Функции формирующие всякие там элементы дизайна вроде showthread_postbit_create, как раз к ним и относятся. Поэтому все переменные заданные в них исчезают при выходе из блока.

Массив $_GLOBALS доступен и един внутри любой функции, а значит и хука.
Но если цель передать переменную в рамках одного и того же объекта, например внутри datamanager-а, то приходится именно так извращаться - $this->info['key']=$data;
Я так делаю и ниче. Может быть есть и более правильный одобренный путь, но я его не нашел.
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 12:20 AM.


Powered by vBulletin® Version Alan Edition
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...