vBulletin 4.0 自定义页面

发布于 2024-10-20 11:30:18 字数 1427 浏览 1 评论 0原文

我正在尝试使用新的 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:我已针对此问题设立了价值 100 分的赏金。如果您需要有关我的问题的更多详细信息,请发表评论。

编辑2:最初,我使用的是 eval('$mytemplate = "' . fetch_template('mytemplate') . '";'); 使用 vB3.这已经破坏了 vB4 中的页面。如果我关注 ARandomOWI 的帖子,我会遵循最佳方法吗?

I'm trying to make custom pages using the new vBulletin 4.

My PHP file uses the code below:

$templater = vB_Template::create('TEST');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());

My template looks like this:

{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>

My question relates to the use of one single template for around 50 pages, which used HTML and PHP together and were working in vBulletin 3.

Will I need to use a separate template for each custom page that I make from the existing pages?

EDIT 1: I've opened a BOUNTY worth 100 points for this question. If you need any more details on my question, please leave a comment.

EDIT 2: Originally, I was using eval('$mytemplate = "' . fetch_template('mytemplate') . '";'); using vB3. This has broken the pages in vB4. If I follow ARandomOWI's post, will I be following the best approach?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神仙妹妹 2024-10-27 11:30:18

如果您只想更改自定义页面之间的部分内容,则可以对所有自定义页面使用相同的模板。

在 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 文件中的变量已被清理。

希望这已经足够清楚了。

You can use the same template for all your custom pages if you only want to change some of the content between them.

In your PHP file you can pass variables to your template using:

$templater->register('var_name_used_in_template', $your_php_var);

This needs to be included before the "print_output" line. Then in your template you can add:

{vb:var var_name_used_in_template}

To display the contents of the variable "$your_php_var" that existed in the PHP.

This way you can use "$your_php_var" to store some HTML to be displayed within your template. You can split the content between multiple PHP files or use a single file for all the content and use PHP conditionals to alter "$your_php_var".

Note: variables passed with "vb:var" are first put through the function "htmlspecialchars_uni()". If this causes problems, you can use "vb:raw" instead which passes the raw variable. Although, be sure that the variable has already been sanitized within the PHP file.

Hope that's clear enough.

要走就滚别墨迹 2024-10-27 11:30:18

@Jon:如果您已经拥有 VB3 版本的所有模板和 PHP 文件设置,您可以将 替换

eval('$mytemplate = "' . fetch_template('mytemplate') . '";');

$templater = vB_Template::create('mytemplate');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());

如果我理解正确的话。您可能希望更改“pagetitle”和“navbar”变量。你如何去做取决于你正在处理什么。 (无论您是尝试使现有代码正常工作,还是从头开始。)

@Jon: If you already have all the templates and PHP files setup from the VB3 version, you can replace the

eval('$mytemplate = "' . fetch_template('mytemplate') . '";');

with

$templater = vB_Template::create('mytemplate');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());

If I understand correctly. You may wish to alter the "pagetitle" and "navbar" variables. How you go about it depends on what you are working with. (Whether you are trying to make existing code work, or start from scratch.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文