Некорректно работает If else
Здравствуйте. Через multiTv вывожу слайдер. Все работает, но для первого слайда нужно задать некий инлайн стиль. Я попробовал тренироваться на имени класса, но че-то не работает.
Если вот такое условие
Просто голову сломал почему так. Да, я знаю что для первого элемента стоит класс first но мне в данном случае нужно именно по условию (в т.ч. и для последствующих целей)
Полный код.
Если вот такое условие
[![if? &is=`[+iteration+]:=:1` &then=`true` &else=`false`]!]
то все работает но появляются лишние скобки<div class="first light-bg theme_banner-slider-inner bg-cover bg-center bg-norepeat dark-overlay [true]" style="background-image: url('assets/images/2.jpg');">
А если делать как в мануале[!if? &is=`[+iteration+]:=:1` &then=`true` &else=`false`!]
то условие не срабатывает и выводит всегда false.Просто голову сломал почему так. Да, я знаю что для первого элемента стоит класс first но мне в данном случае нужно именно по условию (в т.ч. и для последствующих целей)
Полный код.
[!multiTV?
&tvName=`slider`
&docid=`[*id*]`
&tplConfig=``
&outerTpl=`@CODE:((wrapper))`
&rowTpl=`@CODE:<div class="[+row.class+] light-bg theme_banner-slider-inner bg-cover bg-center bg-norepeat dark-overlay [![if? &is=`[+iteration+]:=:1` &then=`true` &else=`false`]!]" style="background-image: url('((image))');">
<div class="theme_banner-text">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-6 text-center">
<div class="h4 text-white">((titletop))</div>
<div class="h1 title text-white">((titlebig))</div>
<p>((titlebottom))</p>
<div class="section-button d-flex align-items-center justify-content-center">
<a href="((button1_url))" class="theme_btn-custom">((button1_title))</a>
<a href="((button2_url))" class="ml-3 theme_btn-custom secondary">((button2_title))</a>
</div>
</div>
</div>
</div>
</div>
</div>
`
&display=`5`
&offset=`0`
&rows=`all`
&randomize=`0`
&reverse=`0`
&orderBy=``
&toJson=`0`
&published=`1`
&emptyOutput=`1`
&noResults=``
&outputSeparator=``
&firstClass=`first`
&lastClass=`last`
&evenClass=``
&oddClass=``
&paginate=`0`
&offsetKey=`page`
!]
Комментарии: 3
Вынеси rowTpl в чанк, и будет нормально работать условие из документации:
Вот такое по логике вообще не должно срабатывать нигде =)
[!if? &is=`[+iteration+]:=:1` &then=`true` &else=`false`!]
Вот такое по логике вообще не должно срабатывать нигде =)
[![if? &is=`[+iteration+]:=:1` &then=`true` &else=`false`]!]
Вот такое по логике вообще не должно срабатывать нигде =)Но именно эта конструкция работает, только добавляет скобки побокам а по другому заставить работать никак не получается. У меня таких конструкций if else предполагается много. Что ж мне, теперь плодить кучу чанков? Я, конечно, только второй день изучаю modx, но мне уже че-то поплохело. Казалось бы — тривиальная задача, а нет.
У меня таких конструкций if else предполагается много. Что ж мне, теперь плодить кучу чанков?В документации об этом сказано:
MODX does not like =,? and & in snippet parameters. If the template code has to use those signs, put the template code in a chunk or change the default templates in the config file.multiTV custom template variable
Можно попробовать использовать prepare. Либо переходить на ветку 3.* и работать с Blade.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.