vBulletin 4.0 пользовательских страниц - PullRequest
2 голосов
/ 07 марта 2011

Я пытаюсь создать пользовательские страницы, используя новый 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 : Я открыл BOUNTY стоимостью 100 баллов для этого вопроса.Если вам нужна дополнительная информация по моему вопросу, пожалуйста, оставьте комментарий.

РЕДАКТИРОВАТЬ 2 : Первоначально я использовал eval('$mytemplate = "' . fetch_template('mytemplate') . '";'); с использованием vB3.Это сломало страницы в vB4.Если я буду следить за постом ARandomOWI, буду ли я следовать лучшему подходу?

Ответы [ 2 ]

3 голосов
/ 13 марта 2011

Вы можете использовать один и тот же шаблон для всех своих пользовательских страниц, если вы хотите изменить только часть содержимого между ними.

В своем PHP-файле вы можете передавать переменные в свой шаблон, используя:

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

Это должно быть включено перед строкой "print_output".Затем в свой шаблон вы можете добавить:

{vb:var var_name_used_in_template}

Для отображения содержимого переменной «$ your_php_var», существовавшей в PHP.

Таким образом, вы можете использовать «$ your_php_var» для хранения HTML, который будет отображаться в вашем шаблоне.Вы можете разделить содержимое между несколькими файлами PHP или использовать один файл для всего содержимого и использовать условные выражения PHP для изменения «$ your_php_var».

Примечание: переменные, переданные с помощью «vb: var», сначала пропускаются черезфункция "htmlspecialchars_uni ()".Если это вызывает проблемы, вы можете использовать вместо этого «vb: raw», который передает переменную raw.Хотя, убедитесь, что переменная уже очищена в файле PHP.

Надеюсь, это достаточно ясно.

2 голосов
/ 16 марта 2011

@ Jon: Если вы уже настроили все шаблоны и файлы PHP из версии VB3, вы можете заменить

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». Как вы поступите, зависит от того, с чем вы работаете. (Пытаетесь ли вы заставить существующий код работать или начинаете с нуля.)

...