Некорректно работает If else

Здравствуйте. Через multiTv вывожу слайдер. Все работает, но для первого слайда нужно задать некий инлайн стиль. Я попробовал тренироваться на имени класса, но че-то не работает.
Если вот такое условие
[![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`
!]
shalom
25 января 2022, 11:37
modx.pro
664
0

Комментарии: 3

Андрей
25 января 2022, 12:10
0
Вынеси rowTpl в чанк, и будет нормально работать условие из документации:
[!if? &is=`[+iteration+]:=:1` &then=`true` &else=`false`!]

Вот такое по логике вообще не должно срабатывать нигде =)
[![if? &is=`[+iteration+]:=:1` &then=`true` &else=`false`]!]
    shalom
    25 января 2022, 12:54
    0
    Вот такое по логике вообще не должно срабатывать нигде =)
    Но именно эта конструкция работает, только добавляет скобки побокам а по другому заставить работать никак не получается. У меня таких конструкций if else предполагается много. Что ж мне, теперь плодить кучу чанков? Я, конечно, только второй день изучаю modx, но мне уже че-то поплохело. Казалось бы — тривиальная задача, а нет.
      Андрей
      25 января 2022, 13:31
      0
      У меня таких конструкций 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.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3