VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Добрый вечер.
Тут мучаюсь такой загадкой: как выдернуть текст первого (верхнего) поста любой страницы темы (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 пусто.
Помогите передать переменную в модуль.
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 01:05 AM.
@Xvwer
Простоузер
Join Date: Oct 2007
Location: *.spb.ru
Posts: 68
Версия vB: 3.8.x
Пол:
Reputation:
Novice 4
Репутация в разделе: 4
0
Quote:
Originally Posted by Cybermama
во-вторых - хук global_start выполняется до хука showthread_postbit_create
Понял. Спасибо.
myvar - это моя переменная, а $vbulletin->myvar сделал чтобы передавать ее глобально (по крайней мере думал, что это можно сделать так).
@netwind
Гуру
Join Date: Aug 2005
Location: Рiдна Олбанея
Posts: 3,844
Версия vB: 3.8.x
Reputation:
Гуру 1227
Репутация в разделе: 901
1
Quote:
Если ты хочешь использовать свою переменную - то пишешь проcто $myvar
К сожалению, не всегда. Ряд хуков определен внутри функций или классов. Функции формирующие всякие там элементы дизайна вроде showthread_postbit_create, как раз к ним и относятся. Поэтому все переменные заданные в них исчезают при выходе из блока.
Массив $_GLOBALS доступен и един внутри любой функции, а значит и хука.
Но если цель передать переменную в рамках одного и того же объекта, например внутри datamanager-а, то приходится именно так извращаться - $this->info['key']=$data;
Я так делаю и ниче. Может быть есть и более правильный одобренный путь, но я его не нашел.