如何在全球范围内使用vbulletin变量?

时间:2013-07-22 03:32:11

标签: php variables vbulletin

我想在vbulletin中的另一个页面上使用{vb:raw human_verify}?

当我在另一个模板中使用此变量时,它不起作用。

它完美地适用于某些模板(注册,搜索,...),但从不在另一个模板中工作..

我试图添加新的插件,使vars全局:

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

但这仅适用于新的(自定义)vbulletin vb:raw变量。

如何克服这个问题?

提前致谢

2 个答案:

答案 0 :(得分:2)

我假设您使用vb4并且您的变量在includephp中设置。 然后你需要改变:

  

activity_home

使用您需要使用变量的模板名称(如果要将其添加到多个模板中,请多次执行此操作)。所以基本上:使用“FORUMHOME”将它放入您的论坛主页或“标题”以将其放在标题上...

This link可能会有所帮助(请参阅“保存到阵列并预先注册以在现有/库存模板中使用”部分)。 希望有所帮助。

编辑:

$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}

答案 1 :(得分:1)

我刚刚用这个问题摔跤......这个例子太可怕了。没有Niak的错。我觉得原作者对于如何将简单变量注册到现有模板并不是很清楚。

我将上面的示例复制/粘贴到插件中,将$ 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&gt; 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:raw testVar_output}

  6. 请注意,vb:raw变量名称是array() LEFT 的值。
  7. 似乎没有必要使用$templater->render()函数来预先注册变量,尽管我已经看过所有的例子,说你需要它。只需注册变量,然后使用变量!就这么简单!
  8. 我意识到这不允许模板缓存,这就是为什么我如此担心我无法使原始示例正常工作...(帮助!?)