我正在尝试使用新的 vBulletin 4 制作自定义页面。
我的 PHP 文件使用以下代码:
$templater = vB_Template::create('TEST');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());
我的模板如下所示:
{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
<head>
<title>{vb:raw vboptions.bbtitle} - {vb:raw pagetitle}</title>
{vb:raw headinclude}
{vb:raw headinclude_bottom}
</head>
<body>
{vb:raw header}
{vb:raw navbar}
<div id="pagetitle">
<h1>{vb:raw pagetitle}</h1>
</div>
<h2 class="blockhead">Title</h2>
<div class="blockbody">
<div class="blockrow">
Text
</div>
</div>
{vb:raw footer}
</body>
</html>
我的问题涉及大约 50 个页面的单个模板的使用,该模板同时使用 HTML 和 PHP,并在 vBulletin 3 中运行。
我需要为从现有页面创建的每个自定义页面使用单独的模板吗?
编辑 1:我已针对此问题设置了值(value) 100 分的赏金。如果您需要有关我的问题的更多详细信息,请发表评论。
编辑2:最初,我使用的是 eval('$mytemplate = "' . fetch_template('mytemplate') . '";');
使用 vB3。这已经破坏了 vB4 中的页面。如果我关注 ARandomOWI 的帖子,我会遵循最佳方法吗?
最佳答案
如果您只想更改自定义页面之间的部分内容,则可以对所有自定义页面使用相同的模板。
在 PHP 文件中,您可以使用以下方法将变量传递到模板:
$templater->register('var_name_used_in_template', $your_php_var);
这需要包含在“print_output”行之前。然后在您的模板中您可以添加:
{vb:var var_name_used_in_template}
显示 PHP 中存在的变量“$your_php_var”的内容。
这样您就可以使用“$your_php_var”来存储一些要在模板中显示的 HTML。您可以将内容拆分为多个 PHP 文件,或者使用单个文件来存储所有内容,并使用 PHP 条件来更改“$your_php_var”。
注意:通过“vb:var”传递的变量首先通过函数“htmlspecialchars_uni()”。如果这会导致问题,您可以使用“vb:raw”来代替它传递原始变量。不过,请确保 PHP 文件中的变量已被清理。
希望这足够清楚。
关于php - vBulletin 4.0 自定义页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5223019/