2013-07-22 2 views
3

Я хочу использовать {vb: raw human_verify} на другой странице внутри vbulletin?Как использовать переменные vbulletin во всем мире?

Когда я использую эту переменную в другом шаблоне, она не работает.

Он отлично работает на некоторых шаблонах (регистр, поиск, ..), но никогда не работать в другом шаблоне ..

Я попытался добавить новый плагин, который сделает вары глобальный:

vB_Template::preRegister('activity_home',array('includedphp ' => $includedphp)); 

НО это работает только на новом (обычном) vbulletin vb: raw variables.

Как преодолеть это?

Заранее спасибо

ответ

2

Я предполагаю, что ваш используя VB4 и переменная устанавливается в includedphp. Тогда вам нужно изменить:

activity_home

С именем шаблона, где вам необходимо использовать переменную (сделать это несколько раз, если вы хотите добавить его в несколько шаблонов). Поэтому в основном: используйте «FORUMHOME», чтобы поместить его в свой форум домой или «заголовок», чтобы поместить его в заголовок ...

This link может быть полезно (см. «Сохранить в массив и предварительный сертификат для использования в существующем/фондовый шаблон "). Надеюсь, что помогает.

EDIT:

$templater = vB_Template::create('mytemplate'); // Define a template 
$templater->register('my_var', $my_var); // define some variables 
$templater->register('my_array', $my_array); 
$templatevalues['my_insertvar'] = $templater->render(); // Save the template into a variable, "note that the data needs to be saved into an array a simple variable will throw an error" 
vB_Template::preRegister('FORUMHOME', $templatevalues); // "insert" your variable into the FORUMHOME template 

Затем вы можете добавить новый шаблон в шаблоне FORUMHOME с этой строки:

{vb:raw my_insertvar} 
+0

Я знаю эту статью, но не заметил, что он включает в себя существующие шаблоны. Но я не могу просматривать блоки кода. Не могли бы вы скопировать его здесь, пожалуйста? –

+0

@DrZIZO: Смотрите мое редактирование – loudev

+0

Не повезло. Не работает. –

1

Я просто боролся с этим слишком долго ... этот пример является просто ужасно. Нет вины Ниака. Я чувствую, что автор оригинала не совсем ясно, как записывать простые переменные в существующие шаблоны.

Я буквально копировал/вставлял приведенный выше пример в плагин, задавал $ my_var для «test» и {vb:raw my_insertvar} в шаблоне FORUMHOME просто не работал. Вот код, который я сначала попробовал:

$my_var = "test"; 

$templater = vB_Template::create('mytemplate'); // Define a template 
$templater->register('my_var', $my_var); // define some variables 
$templatevalues['my_insertvar'] = $templater->render(); 
vB_Template::preRegister('FORUMHOME', $templatevalues); 

Пожалуйста, если кто-нибудь знает, что я делаю неправильно в не в состоянии получить доступ к значению my_var в исходном примере, дайте мне знать! Я не могу заставить это работать на всю жизнь. Он просто выплевывает <!-- BEGIN TEMPLATE: mytemplate --><!-- END TEMPLATE: mytemplate -->.

============================== РАБОЧИЙ ПРИМЕР ============== ==================

Затем я нашел лучший пример. Оказывается, вам нужно всего лишь две строки для этой работы:

  1. Перейти к Plugins & Products>Plugin Manager.
  2. Прокрутите вниз и нажмите [Add New Plugin]
  3. Крюк Я выбрал это global_bootstrap_init_start
  4. Включить следующие две строки (navbar шаблон, который я регистрации testVar_output в):

    $testVar = "This is a test."; 
    
    vB_Template::preRegister('navbar',array('testVar_output' => $testVar)); 
    
  5. Эта треска е в navbar:

    {VB: сырье testVar_output}

  6. Обратите внимание, что имя переменной vb:raw это значение на ЛЕВЫЙ в array().
  7. Кажется, нет необходимости использовать функцию $templater->render() для перерегистрации переменных, несмотря на все примеры, которые я видел, которые говорят, что вам это нужно. Просто зарегистрируйте переменную и используйте переменную! Это так просто!
  8. Я понимаю, что это не позволяет кэширование шаблонов, поэтому я так обеспокоен тем, что я не могу получить оригинальный пример рабочего ... (помощь !?)
+0

@Niak - мысли? – SeanKendle

+0

Я могу только предположить, что 'navbar' является встроенным шаблоном, который кэшируется, и эта переменная будет кэшироваться вместе с ним, поэтому нет необходимости создавать мой собственный шаблон, а затем кэшировать его ... это ошибочное предположение ? – SeanKendle