3

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

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

它在某些模板(注册,搜索,..)上完美运行,但在另一个模板中永远无法运行..

我试图添加使 vars global 的新插件:

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

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

如何克服这一点?

提前致谢

4

2 回答 2

2

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

活动主页

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

此链接可能会有所帮助(请参阅“保存到数组并预注册以在现有/库存模板中使用”部分)。希望有帮助。

编辑 :

$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}
于 2013-07-22T08:14:50.807 回答
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:raw testVar_output}

  6. 请注意,vb:raw变量名称是.LEFT中左侧的值array()
  7. 似乎没有必要使用该$templater->render()函数来预注册变量,尽管我看到的所有示例都表明您需要它。只需注册变量,然后使用变量!就是这么简单!
  8. 我意识到这不允许模板缓存,这就是为什么我如此担心我无法让原始示例工作......(帮助!?)
于 2014-05-28T17:19:13.670 回答