ddIf

Snippet
  • Версия: 1.4
  • Выпущено:
  • Метки: General
  • Использует:
    • PHP >= 5.4
    • MODXEvo >= 1.1
    • MODXEvo.library.ddTools >= 0.18
Скачать213 скачиваний

Описание

Сравнивает значения и выводит необходимый чанк или строку.

Список изменений

  • В параметр placeholders добавлена поддержка форматов JSON и Query. Старый формат по прежнему поддерживается, но считается устаревшим.
  • Добавлена поддержка указания шаблонов trueChunk и falseChunk через префикс @CODE:.
  • Параметры trueString и falseString больше не используются (вместо них используйте префикс @CODE:). Обратная совместимость сохранена с уведомлением в лог событий MODX.
  • Небольшая оптимизация и прочие изменения.
  • Внимание! Требуется PHP ≥ 5.4.
  • Внимание! Требуется MODXEvo ≥ 1.1.
  • Внимание! Требуется MODXEvo.library.ddTools ≥ 0.18.

Документация

Описание параметров

Название Описание Допустимые значения Значение по умолчанию
operand1* Первый операнд для сравнения. {string}
operand2 Второй операнд для сравнения. {string} ''
operator Оператор сравнения. {'=='|'!='|'>'|'<'|'<='|'>='|'bool'|'inarray'|'isnumeric'} '=='
trueChunk Значение, возвращаемое при истинном условии. Передавать код напрямую без чанка можно начиная значение с @CODE:. {string_chunkName|string}
falseChunk Значение, возвращаемое при ложном условии. Передавать код напрямую без чанка можно начиная значение с @CODE:. {string_chunkName|string}
placeholders Дополнительные данные, которые необходимо передать в вывод. Строка в формате JSON или Query, например: {"width": 800, "height": 600} или width=800&height=600. {stirng_json|string_queryFormated}

Примеры

Сравнение двух строк

[[ddIf?
	&operand1=`Тестовая строка 1`
	&operand2=`Тестовая строка 2`
	&operator=`==`
	&trueChunk=`@CODE:Строки равны.`
	&falseChunk=`@CODE:Строки не равны.`
]]

Вернёт:

Строки не равны.

Присутствует ли значение в массиве

[[ddIf?
	&operand1=`Яблоки`
	&operand2=`Груши,Бананы,Яблоки,Апельсины`
	&operator=`inarray`
	&trueChunk=`@CODE:Присутствует.`
	&falseChunk=`@CODE:Отсутствует.`
]]

Вернёт:

Присутствует.

Является ли «operand1» числом

[[ddIf?
	&operand1=`123`
	&operator=`isnumeric`
	&trueChunk=`@CODE:Число.`
	&falseChunk=`@CODE:Не число.`
]]

Вернёт:

Число.

Сравнение двух чисел и передача дополнительных данных в чанки

[[ddIf?
	&operand1=`[*general_price*]`
	&operator=`<`
	&operand2=`500`
	&trueChunk=`general_goodInexpensive`
	&falseChunk=`general_good`
	&placeholders=`price=[*general_price*]&title=[*pagetitle*]&image=[*general_image*]`
]]

Код чанка «general_good»:

<div>
	<h2>[+title+], $[+price+]</h2>
	<img src="[+image+]" alt="[+title+]" />
</div>

Код чанка «general_goodInexpensive»:

<div class="inexpensive">
	<h2>[+title+], <strong>$[+price+]</strong></h2>
	<img src="[+image+]" alt="[+title+]" />
</div>

Пусть [*general_price*] равно 120, тогда сниппет вернёт:

<div class="inexpensive">
	<h2>Один из недорогих товаров, <strong>$120</strong></h2>
	<img src="assets/images/goods/some1.jpg" alt="Один из недорогих товаров" />
</div>

Передача дополнительных данных в чанки в формате JSON

[[ddIf?
	&operand1=`[*general_hasLove*]`
	&operator=`!=`
	&operand2=`1`
	&trueChunk=`general_loveIsNeeded`
	&falseChunk=``
	&placeholders=`{
		"title": "Любовь — всё, что вам нужно!",
		"price": "∞",
		"image": "[*general_image*]"
	}`
]]