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

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

foreach не в моде? И может быть стоит описать задачу
 
foreach не в моде? И может быть стоит описать задачу
Captain, это Вы гуру, а я только логикой и спасаюсь :)
Писал уже выше, спрашивал, как вывести в категории и всех подкатегориях.

Вот есть категория ID - 1 и у нее много подкатегорий, как сделать чтобы указав этот ID - 1 отображалась информациия не только в ID-1 категории, но и во всех подкатегориях?
 
Где и как?)
 
Captain, в шаблоне xfrm_category_view чтобы работал и в подкатегориях -
Код:
<xf:if is="{{$category.resource_category_id == 1 }}">
текст
</xf:if>

ID-1 но чтобы и во всех подкатегориях от ID-1 отображаться "текст"
 
Captain, правильно я понял? -

Код:
<xf:if is="{{ $categoryExtras.{$id}.resource_count|number == 1 }}">
текст
</xf:if>
 
добавил код в шаблон xfrm_category_view
Тем самым сделав новую дырку в колене, на случай, если будете обновлять шаблон/аддон.

Жаль, что нету переменных для вывода в категории и всех подкатегориях.
Что мешает Вам проверить все родительские категории? У Вас есть getBreadcrumbs(). Его и используйте:
HTML:
<xf:macro name="displayIfCategoryIncluded" arg-category="!" arg-primaryKey="!" arg-requiredCategory="!" arg-displayValue="!">
    <xf:set var="$categories" value="{$category.getBreadcrumbs(true)}" />
    <xf:foreach loop="$categories" value="$subCategory">
        <xf:if is="{$subCategory.{$primaryKey}} == $requiredCategory">
            {{ $displayValue }}
        </xf:if>
    </xf:foreach>
</xf:macro>

<xf:macro name="displayIfCategoryIncluded" arg-category="{$context.category}"
          arg-primaryKey="resource_category_id"
          arg-requiredCategory="5"
          arg-displayValue="Hello, world! I'm included in 5 category!" />
1555058903653.png
 
Подскажите, создал виджет с переменной и хочу вывести в нужно месте его.
Почему так не работает -
Код:
<xf:widgetpos id="_widget_test" />
вставляю в xfrm_category_view
 
тогда я чего-то не понимаю...
Код что дал CrazyHackGUT (за что ему огромнейшее спасибо!) добавляю в виджет (так как просто прописав в xfrm_category_view он не работает, а вставив в виджет все работает).
Далее в xfrm_category_view, в нужном месте вставляю
Код:
<xf:widgetpos id="_widget_test" />

Но виджет все ровно отображается после блока Категорий, а я ставлю его перед.
 
vadims, на странице редактирования виджета, прямо под позициями:
102030

Вы прописываете <xf:widgetpos>, а надо <xf:widget>. Ощущаете разницу?)
 
CrazyHackGUT, спасибо и извиняюсь за мою невнимательность... XF это как корабль и пока разберешься..
 
CrazyHackGUT, подскажите пожалуйста, код что Вы написали работает в виджете, НО, если не указывать позицию виджета, и TMS использовать указав -
Код:
<xf:widget key="test" />
То код не работает.

В виджете указано -
Код:
test1
<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}" />

test1 отображается, а test2 нет.
Если включить позицию, например "Категория ресурсов: боковая навигация" то все работает (test1 и test2 отображаются), но почему не работает используя синтаксис
Код:
<xf:widget key="test" />
 
Последнее редактирование:
Скорее всего, переменная не в контекст садится.
Посмотрите, как именно категория обзывается в переменных, если нет позиции:
HTML:
{{ dump(vars()) }}
 
Скорее всего, переменная не в контекст садится.
Посмотрите, как именно категория обзывается в переменных, если нет позиции:
HTML:
{{ dump(vars()) }}
Chris D написал(а):
The $context stuff only applies to widgets and it only applies if the widget position has context passed in to it.

Если правильно понял, то -
Код:
$category

но меняю $categories на $category и так же не работает
Вы думаете мы понимаем, что на что вы меняете, если не вы не указываете код полностью?

Да и у вас и так в коде category, а не categories, последнее только в цикле. Вы хотя бы головой думайте, когда что-то меняете. Не знаете - задайте КОНКРЕТНЫЙ вопрос с максимумом деталей
 
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}" />

Если на строке объявления макроса, в arg-category указано !, значит так надо, и не надо трогать.
Этот вариант должен выводить двойку, если я Вас правильно понял.
 
vadims, покажите вывод от дампа переменных.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу