Иконка ресурса

Условия переменных в шаблонах XenForo 2

CrazyHackGUT, если правильно понял, то в виджет добавляю
Код:
{{ dump(vars()) }}
и появляется -
JavaScript:
array:5 [▼
  "xf" => array:34 [▶]
  "title" => "rrr"
  "widget" => array:4 [▶]
  "context" => []
  "options" => array:3 [▼
    "advanced_mode" => true
    "template_title" => "_widget_rrrr"
    "context" => []
  ]
]

Matew,
Не знаете - задайте КОНКРЕТНЫЙ вопрос с максимумом деталей
Выше писал уже, вот сейчас такой код в виджете (id его rrrr) -
HTML:
 test1
<xf:macro name="displayIfCategoryIncluded" arg-category="!">
    <xf:set var="$categories" value="{$category.getBreadcrumbs(true)}" />
    <xf:foreach loop="$categories" value="$subCategory">
        <xf:if is="{$subCategory.resource_category_id} == 7">
            test2
        </xf:if>
    </xf:foreach>
</xf:macro>
<xf:macro name="displayIfCategoryIncluded" arg-category="{$category}" />

Если включить позицию, например "Категория ресурсов: боковая навигация" то все работает (test1 и test2 отображаются), но почему не работает, если выключить позицию и использовать синтаксис -
Код:
<xf:widget key="rrrr" />
Выводится тогда только test1, а test2 нет.[/CODE]
 
Последнее редактирование:
vadims, а если раскрыть widget?
И ещё, можно попробовать так, как говорили ранее на этой же странице: $__globals.category
 
Оставьте $categories в покое. Они достаются динамически из самой категории, в которой пребывает пользователь.
Вообще весь макрос трогать не надо. Мой вариант делался с упором на будущее, что если вдруг кому-то понадобится сделать тоже самое и на странице с темами в подфоруме - можно было бы без особых усилий получить нужный эффект.

Вам надо трогать строку вызова макроса, т.е. в Вашем случае - эту:
HTML:
<xf:macro name="displayIfCategoryIncluded" arg-category="{$category}" />

И, если рассматривать опять же пример с глобальными переменными шаблонизатора, то получиться у Вас должно что-то вроде:
HTML:
<xf:macro name="displayIfCategoryIncluded" arg-category="{$__globals.category}" />
 
Вот читаю я три страницы попыток соорудить костыль и вижу, что проще и правильнее было найти исполнителя в данном случае, а не изобретать костыли, так как у автора вопроса весьма специфичное пожелание, а вот реализация это дополнением была бы более логична.
 
CrazyHackGUT, не работает и
Код:
<xf:macro name="displayIfCategoryIncluded" arg-category="{$__globals.category}" />
Ладно, буду пока руками ID всех категорий прописывать, а то что то не везет у меня с этим условием переменных ?

Mirovinger, наверное вы правы, но мне казалось что это можно просто сделать.
Согласен что специфичный запрос. Я делаю в ресурсах библиотеку нот и подкатегории будут Буквы алфавита, а под буквами и категории по композиторам.
Но главных разделов 2, вот тут и беда..
Но нравится то, что ресурсы можно так переделать, что угодно сделать. И рад что на угад решил на этот движок перейти а не на IPS.
Простите за оффтоп.
 
Последнее редактирование:
vadims, потому что стоит полностью описать задачу и что и как должно выглядеть
 
CrazyHackGUT, спасибо Вам большое! Вышел из положения.
Пусть и с костылем, но все же.

Вывод так сделал -
Создал виджет с выводом в "Категория ресурсов: боковая навигация".
HTML:
<xf:macro name="displayIfCategoryIncluded" arg-category="{$context.category}">
    <xf:set var="$categories" value="{$category.getBreadcrumbs(true)}" />
    <xf:foreach loop="$categories" value="$subCategory">
        <xf:if is="{$subCategory.resource_category_id} == 7">
            test2
        </xf:if>
    </xf:foreach>
</xf:macro>
<xf:macro name="displayIfCategoryIncluded" arg-category="{$context.category}" />
Главная проблема, что вывести нужно над Категориями.
Сделал проще, 2 раза "Редактировать модификацию шаблона: xfrm_category_view"
Найти:
Код:
<xf:widgetpos id="xfrm_category_sidenav" position="sidenav" context-category="{$category}" />
Заменить:
Код:
пустое значение
Порядок выполнения: 1
и
Найти:
Код:
<xf:page option="sideNavTitle">{{ phrase('categories') }}</xf:page>
Заменить:
Код:
$0
<xf:widgetpos id="xfrm_category_sidenav" position="sidenav" context-category="{$category}" />
Порядок выполнения: 2

Теперь виджеты над категориями отображаются и все отлично работает! :)
Жаль что в ресурсах не хочет работать этот код в виджете <xf:widget key="rrrr" /> но и так пока хорошо будет.
 
Последнее редактирование:
Подскажите пожалуйста с выводом доп. полей в Ресурсах -
Есть доп. поле video
У него 2 значения - on и off

Как правильно сделать условие переменных чтобы текст выводился?
HTML:
<xf:if is="{$resource.custom_fields.video} == 'on'">
    Этот текст выводится если ON
   <xf:elseif is="{$resource.custom_fields.video} == 'off' " />
     Этот текст выводится если OFF
    <xf:else />
</xf:if>
 
Последнее редактирование:
Доброго времени суток. Хочу прописать условие в "Дополнительных полях профиля". В зависимости от того, это тема (thread) или все остальное, т.е. профиль и т.д (например, https://xenforo.info/members/test.1/ ), выводить разную информацию.
Подскажите, как прописать такое условие?
 
А есть стопроцентный способ узнать полный путь переменной дополнительного поля у определенного плагина? В частности у Article Management System для XF 2.1. Методом тыка пробовал варианты xa_ams.custom_fields.ams_custom_cover, ams.custom_fields.ams_custom_cover, добавлять в их начало xf., но все это не сработало
 
HAIM, $article.custom_fields
А вообще, в подобных ситуациях можно делать
HTML:
<xf:if is="$xf.visitor.is_admin">
    {{ dump(vars()) }}
</xf:if>
и смотреть список доступных переменных.
 
Можете, пожалуйста, подсказать условие для вывода сообщения в шаблоне thread_view на всех страницах кроме первой?

Такой код
Код:
<xf:if is="{$page} != 1">
    Этот текст отображается только на первой странице в разделе.
</xf:if>
не подходит, потому что он работает только в шаблоне forum_view, насколько я понял

Способ с делением {$post.position} на {$xf.options.messagesPerPage} мне не совсем подходит, ведь мне нужны определенные страницы (ну или может я не смог им правильно воспользоваться)

Через {{ dump(vars()) }} нашел "pageNumber" => "2", но текст отображается на всех страницах темы
Код:
<xf:if is="$template == 'thread_view' AND $xf.pageNumber != 1">
    Этот текст должен отображаться на всех страницах кроме первой.
</xf:if>

Что я делаю не так? (вместо != я пробовал использовать > 1, это не помогло)

Шок, там $pageNumber, а не $xf.pageNumber ?‍♂️ Ну и при использовании ">" все работает

Сам спросил — сам ответил
 
Последнее редактирование модератором:
HAIM, в LESS варианте он выглядит лучше ...
 
HAIM, в LESS варианте он выглядит лучше ...
Я смотрел исходники страницы, не нашел там класса, отвечающего за номер страницы

Ну и мне нужно вывести сообщение, это значит уже надо делать модификацию
 
А есть ли условия для объявлений XF? В частности меня интересует конструкция из разряда "Если у пользователя не закрыто объявление с ID == X, то..."
UPD: вроде-как нашёл нужное через дамп, но условие $notices.block.notice_id == 2 не срабатывает
 
Последнее редактирование:
Через {{dump}} получил такой список переменных в шаблонах, но посмотреть переменные внутри массива _values нельзя — для этого нет кликабельной стрелочки. Что делать в этом случае?
103636
 
Указать конкретную переменную
 
Может было не нашел. Нужно вывести дополнительный банер пользователей. Как вывести банер (любой текст) если пользователь находиться в определенной группе?
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу