Как упростить условие на Fenom
У меня есть такое условие:
Как упростить условия — показать родителя и всех его потомков без явного указания дочерних ID?
$id == '15' OR $id == '31' OR $id == '32' OR $id == '33' OR $id == '34'
PS. ID родителя постоянен и от него можно отталкиваться.
{if $id == '15' OR $id == '31' OR $id == '32' OR $id == '33' OR $id == '34'}
выводится код
{/if}
15 это ID родителя, все остальные ID (31,32,33,34) это дочки этого родителя.Как упростить условия — показать родителя и всех его потомков без явного указания дочерних ID?
$id == '15' OR $id == '31' OR $id == '32' OR $id == '33' OR $id == '34'
PS. ID родителя постоянен и от него можно отталкиваться.
Комментарии: 14
а где условие? в чанке или на странице?
если в чанке, то
если на странице, то
если в чанке, то
{if $parent == '15'}
выводится код
{/if}
если на странице, то
{if $_modx->resource.parent == '15'}
выводится код
{/if}
У меня в шаблоне вот такой код:
{set $id = $_modx->resource.id}
{if $id == '15' OR $id == '31' OR $id == '32' OR $id == '33' OR $id == '34'}
код
{/if}
{if $_modx->resource.id== '15' OR $_modx->resource.parent == '15' }
код
{/if}
Вы очень выручили, спасибо вам большое, подошло!
Возможно, вам лучше подойдет модификатор in.
github.com/fenom-template/fenom/blob/master/docs/ru/mods/in.md
github.com/fenom-template/fenom/blob/master/docs/ru/mods/in.md
Только что попробовал с помощью модификатора in найти значение в массиве. И как-то странно он работает.
Пример отсюда:
Пример отсюда:
in - оператор проверки наличия подстроки в строке или значения в массиве
{var $key = '10'}
// строка
{if $key | in : 'У меня 10 яблок'}
Ключ найден
{/if}
// массив + тернарный оператор
{$key | in : [1, 3, 42] ? 'ключ найден' : 'не найден'}
Со строками всё понятно. С массивом на первый взгляд тоже. Но если переменной $key присвоить значение, например, '0', то это значение будет найдено в массиве:{var $key = '0'}
{$key | in : [1, 3, 42] ? 'ключ найден' : 'не найден'}
В массиве же нет такого значения. Модификатор in ищет и по значениям и по ключам?
Понял. Спасибо!!!
Получается, из-за возможности указать как именно искать оператор in гораздо удобнее модификатора in. Странно что модификатор in реализован без этих параметров.
Получается, из-за возможности указать как именно искать оператор in гораздо удобнее модификатора in. Странно что модификатор in реализован без этих параметров.
Модификатор in, скорее всего, работает так из-за того, что он списан с аналогичного модификатора у родного парсера MODX.
Похоже на то. Спасибо, что помогли разобраться)
Спасибо! Вы мне помогли)
Может лучше так
{set $key = ["15","31" ,"32" ,"33" ,"34"]}
{if $_modx->resource.id in list $key}
…{/if}
плох тем, что надо указывать ID всех дочек, а их может быть больше или меньше. Так что пока самый лучший вариант от Евгений Webinmd
{if $count?}
{var $par_rp = $_modx->resource.parent | resource : "parent"}
{set $key = ["242", "243","245" ,"249" ,"288" ,"289" ,"290" ,"291"]}
{if $_modx->resource.template == 24 OR $par_rp in list $key }
{$count} м.
{else}
{$count} шт.
{/if}
{else}
{ignore}
<small>в пути</small>
{/ignore}
{/if}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.