我只是为此挣扎了太久......那个例子太糟糕了。不是尼亚克的错。我觉得原作者对如何将简单变量注册到现有模板不是很清楚。
我从字面上将上面的示例复制/粘贴到插件中,将 $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 -->
。
================================ 工作示例================= ===============
然后,我找到了一个更好的例子。事实证明,你只需要两行就可以了:
- 转到
Plugins & Products
> Plugin Manager
。
- 滚动到底部,然后单击
[Add New Plugin]
- 我选择的钩子是
global_bootstrap_init_start
插入以下两行(navbar
是我要注册的模板testVar_output
):
$testVar = "This is a test.";
vB_Template::preRegister('navbar',array('testVar_output' => $testVar));
将此代码放在navbar
:
{vb:raw testVar_output}
- 请注意,
vb:raw
变量名称是.LEFT中左侧的值array()
。
- 似乎没有必要使用该
$templater->render()
函数来预注册变量,尽管我看到的所有示例都表明您需要它。只需注册变量,然后使用变量!就是这么简单!
- 我意识到这不允许模板缓存,这就是为什么我如此担心我无法让原始示例工作......(帮助!?)