1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Синтаксис шаблонов XenForo

Тема в разделе "Советы, руководства и видео-уроки", создана пользователем CyberAP, 04.08.2011.

Загрузка
  1. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Основные

    <xen:comment>{1}</xen:comment> - {1} внутри тэга ничего выводиться не будет
    Пример:
    Код:
    <xen:comment><xen:sidebar></xen:sidebar></xen:comment>
    - этот код отключит сайдбар, если конструкция <xen:sidebar></xen:sidebar> встречается только один раз в шаблоне.


    <xen:include template="{1}" /> - вставляет шаблон {1}
    Пример:
    Код:
    <xen:include template="navigation" />
    - вставит в ваш шаблон всё содержимое шаблона navigation


    <xen:require css="{1}" /> - подключает css {1}
    Пример:
    Код:
    <xen:require css="node_list.css" />
    - подключит к выводу css шаблон node_list.css. Сам шаблон останется неизменным, т.е. ничего в сам шаблон не добавится.


    <xen:require js="{1}" /> - подключает файл js {1}
    Пример:
    Код:
    <xen:require js="js/tinymce/tiny_mce.js" />
    - подключит к выводу js файл js/tinymce/tiny_mce.js . Сам шаблон останется неизменным, т.е. ничего в сам шаблон не добавится.


    {xen:link '{1}/{2}/...'} - генерирует ссылку, автоматически добавляя в начало путь к форуму
    Пример:
    Код:
    {xen:link '/test/'}
    - будет создана ссылка вида http://путь_до_вашего_форума/test/


    <xen:sidebar>{1}</xen:sidebar> - добавляет боковую колонку, если таковой нет. Внутри так же можно использовать <xen:include /> и <xen:require />


    <xen:if is="{1}">{2}<xen:else />{3}</xen:if> - выполняет код {2}, если условие {1} выполняется, если нет то выполняется код {3}. Конструкция <xen:else />{3} не обязательна.
    Пример:
    Код:
    <xen:if is="{$visitor.is_admin}">Вы - администратор.</xen:if>
    - выведет текст " Вы - администратор. ", если пользователь является администратором.


    Дополнительные

    {xen:calc "{1}"} - калькулятор в XenForo, позволяет так же использовать внутри переменные (начинаются в '@')
    Пример:
    Код:
    {xen:calc "@pageWidth.margin-left + 10"}
    - калькулятор прибавит 10 к значению margin-left у группы параметров pageWidth и выведет финальное значение.


    {xen:helper rgba, {1}, {2}} - Конвертирует цвет в формат rgba. {1} - переменная цвета (например: @pageBackground), {2} - альфа-канал (от 0 до 1).
    Пример:
    Код:
    {xen:helper rgba, @pageBackground, 0.5}
    - конструкция сконвертирует цвет @pageBackground в rgb значение и добавит 0.5 прозрачности, затем будет выведено финальное значение в виде: rgba(240,240,240,0.5).


    Важное замечание

    Если вы хотите вставить какую-то из конструкций внутрь html-тэга, то вам нужно использовать запись вида: {xen:...}, иначе вёрстка будет не валидной.
    Т.е. <xen:if is="{1}">{2}<xen:else />{3}</xen:if> должен выглядеть как {xen:if "{1}", '{2}', '{3}'}

    Мануал будет дополнятся по мере запросов к расшифровке.
     
    Zlata Jesen, adder, grizone и 8 другим нравится это.
  2. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Комментарий - <xen:comment
    Пример
    HTML:
    <xen:comment>Это закомментированный текст<xen:comment>
    Установка переменной - <xen:set var=
    Пример для $myvar='Cool'
    HTML:
    <xen:set var="$myvar">Cool</xen:set>
    Несколько важных элементов для шаблона-контейнера (обычно это PAGE_CONTAINER). Т.е. надо понимать что обычно отображаемая страница состоит из внутреннего содержимого (контента) и контейнера в котором находится это содержимое. Так вот для управления переменными контейнера из шаблонов контента есть несколько конструкций. Т.е. они используются в шаблонах контента, а не в шаблонах контейнера.
    <xen:container - устанавливает значение для конкретной переменной контейнера, аналогично конструкции
    Пример для переменной контейнера $head['myvar']='Cool'
    HTML:
    <xen:container var="$head.myvar">Cool</xen:container>
    <xen:title - устанавливает заголовок страницы
    <xen:h1 - устанавливает H1 страницы
    <xen:description - устанавливает description страницы
     
    syn, no name, slowpoke и ещё 1-му нравится это.
  3. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    CyberAP, отредактируй сообщение с использованием BB-кода и по возможности с примерами.
     
    CyberAP нравится это.
  4. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    И уберите начальные "<xen:" - лишний бессмысленный текст. Любой ксеновский оператор (или как будет правильно?) должен выглядеть как:
    Код:
    <xen:оператор...></xen:оператор>
    Тогда можно будет сразу описывать операторы как:
    if
    comment
    var
    и т.д.
     
  5. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Не все тут разбираются хорошо, поэтому оставлю полную конструкцию.
     
    Egorpom и kygpuu нравится это.
  6. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    А если в шапке оставить полный синтаксис, но в дальнейшем оговорить сокращение?
     
  7. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Зачем всё так усложнять?
     
  8. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Убирать не стоит, т.к. есть синтаксис {xen:оператор и <xen:тег
    Хотя если разбить на 2 группы, тогда может и не надо
     
  9. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Подскажите, что в шаблоне editor_js_setup значит:
    Код:
    xenforo_smilies: {xen:helper json, $smilies},
     
  10. Skrimm

    Skrimm Активный пользователь

    Регистрация:
    23.06.12
    Сообщения:
    151
    Симпатии:
    38
    Версия XF:
    1.1.4
    Скажите пожалуйста можно ли при помощи выше описанных переменных вывести название темы над каждым сообщением в теме ?
     
  11. valexv12

    valexv12 Новичок

    Регистрация:
    08.02.13
    Сообщения:
    12
    Симпатии:
    0
    Версия XF:
    1.1.3
    Помогите! Мне нужен какой-то "скрипт", который нужно вставить в шаблон, чтобы при заходе на эту страницу, сразу кидалось на другую, заданную. Что-то вроде "переадресации".
     
  12. RouR

    RouR Местный

    Регистрация:
    21.03.12
    Сообщения:
    64
    Симпатии:
    9
    Версия XF:
    1.2.0
    Здесь не полный перечень шаблонов. Надо бы выложить полный по версии 1.2.

    И как посмотреть список доступных переменных внутри шаблона? Ну, например, шаблон thread_view, есть $inlineModOptions, массив $posts, и т.п. - надо посмотреть их полный перечень, а лучше ещё и значения переменных.
     
  13. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Каких шаблонов? Это тема про синтаксис.
     
  14. RouR

    RouR Местный

    Регистрация:
    21.03.12
    Сообщения:
    64
    Симпатии:
    9
    Версия XF:
    1.2.0
    Я про <xen:hook <xen:username и т.п. которых нет первом посте. И попутно интересуюсь, есть ли <xen:посмотреть_список_доступных_переменных
     
  15. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    По-моему нет такой. Есть возможность посмотреть дамп конкретной переменной, но вот сразу всех - нет. В принципе, можно просто написать свой обработчик хука и уже в нем для нужного шаблона/хука выводить список всех переменных, ибо в обработчике доступен весь массив.
     
  16. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Есть :)
    Пример такого отображение шаблон DEFAULT - специально для этого и сделан
     
    infis и RouR нравится это.
  17. RouR

    RouR Местный

    Регистрация:
    21.03.12
    Сообщения:
    64
    Симпатии:
    9
    Версия XF:
    1.2.0
    <xen:map объясните смысл
    Код:
    <xen:include template="message_user_info">
            <xen:map from="$message" to="$user" />
        </xen:include>
    
     
  18. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Что-то за все время ни разу в него не заглядывал :)
    Кстати, он откуда-нибудь вызывается?
     
  19. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Он специально сделан для разработчиков ;)
     
  20. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Понятно. Значит просто его либо инклудить в нужный, либо напрямую вызывать из своего вьювера. А я все по старинке через отладчик смотрел... :)
     

Поделиться этой страницей