Modx revo if параметры: Конструкция условий if else в MODx

Конструкция условий if else в MODx

«

В Modx есть собсвенные средства для проверок, т.к он не поддерживает PHP «в открытом виде»

В самом начале я напишу 2 проверки, которые я использую постоянно

 

Чтобы составить условие на существование в БД параметра modx и при условие, что оно не пустое, то пишем следующий скрипт

 [ [*id:gt=`0`:then=`Книги в наличии!`:else=`Простите, но все продано.`] ]

 

Проверка на значение: Если id равен 5, то выводим значение, иначе выполняем другое дейсвтие

[ [*id:is=`5`:then=`номер 5`:else=`номер не 5`] ]

 

В MODx существуют встроенный синтаксис для использования конструкций if else.

Модификаторы вывода

В таблице представлены некоторые модификаторы и примеры их использования. В примерах модификаторы применяются к плейсхолдерам, но вы должны помнить, что они могут применяться к любым тегам MODX. Убедитесь, что используемый тег выводит хоть что-то, что модификатор будет обрабатывать.

Условные модификаторы вывода

Модификатор Описание Пример использования
if, input if — задает дополнительное условие input — добавляет в тег обратываемые данные

[ [*id:is=`1`:and:if=`[ [*id]]`:ne=`2`:then=`da`:else=`net`]]

or Объединение нескольких модификаторов связью ИЛИ

[ [*id:is=`5`:or:is=`6`:then=`номер 5 или 6`:else=`другой номер`]]

and Объединение нескольких модификаторов связью И

[ [*id:is=`1`:and:if=`[ [*id]]`:ne=`2`:then=`da`:else=`net`]]

isequalto, isequal, equalto, equals, is, eq Сравнивает передаваемое значение с установленным. Если значения совпадают, выводится значение «then», если нет — «else»

[ [*id:is=`5`:then=`номер 5`:else=`номер не 5`]]

notequalto, notequals, isnt, isnot, neq, ne Сравнивает передаваемое значение с установленным. Если значения НЕ совпадают, выводится значение «then», если нет — «else»

[ [*id:isnot=`5`:then=`номер не 5`:else=`видимо номер 5`]]

greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte То же, только условие «Больше или равно»

[ [*id:gte=`5`:then=`номер 5 или больше`:else=`меньше пятого номера`]]

isgreaterthan, greaterthan, isgt, gt То же, только условие «Строго больше»

[ [*id:gt=`5`:then=`номер больше пяти`:else=`номер 5 или меньше`]]

equaltoorlessthan, lessthanorequalto, el, le, islte, lte
То же, только условие «Меньше или равно»

[ [*id:lte=`5`:then=`номер 5 или меньше`:else=`больше, чем номер 5`]]

islowerthan, islessthan, lowerthan, lessthan, islt, lt То же, только условие «Строго меньше»

[ [*id:lte=`5`:then=`номер точно меньше 5`:else=`номер 5 или больше`]]

hide Скрывает элемент, если условие выполняется

[ [*id:lt=`1`:hide]]

show Отображает элемент, если условие выполняется

[ [*id:gt=`0`:show]]

then Используется для составления условий

[ [*id:gt=`0`:then=`Книги в наличии!`]]

else Используется для составления условий (совместно с «then»)

[ [*id:gt=`0`:then=`Книги в наличии!`:else=`Простите, но все продано. `]]

select Установить свое значение, в зависимости от модификатора и вывода тега. Так же можно использовать «else», например если значение [ [+controls]] — не подходит под шаблон select

[ [+controls:select=`0=ВЫКЛ&1=ВКЛ&2=ХЗ`:else=`Ошибка`]]

memberof, ismember, mo Проверяет, является ли пользователь членом указанной группы пользователей

[ [+modx.user.id:memberof=`Administrator`]]

 

 

Также для особых случаев существует модуль — сниппет, называется он IF

 

 

Использование

Сниппет If может быть вызван с использованием тегов:

  [ [If]]  

или, в случае, если объект может быть изменен до того, как кэш ресурса будет очищен, используйте не кэшируемый синтаксис:

 [ [!If]]  

Доступные свойства

Имя

Описание

Значение “по умолчанию“

subject

Параметр, над значением которого выполняются условия.

 

operator

Оператор сравнения с subject

=

operand

Используется при необходимости, значение для сравнения subject и operator.

 

then

Выводится, если состояние принимает значение true

 

else

Выводится, если состояние принимает значение false

 

debug

Если значение true, отображает все проверенные свойства

0

die

Если прошло обработку debug и значение true, после отображения свойств вывести die().

0

Доступные операторы

Оператор

Описание

!=,neq,not,isnot,isnt,unequal,notequal

Принимается если subject не равен operand

==,=,eq,is,equal,equals,equalto

Принимается если subject равен operand

<,lt,less,lessthan

Принимается если subject меньше operand.

>,gt,greater,greaterthan

Принимается если subject больше operand.

<=,lte,lessthanequals,lessthanorequalto

Принимается если subject меньше или равен operand

>=,gte,greaterthanequals,greaterthanequalto

Принимается если subject больше или равен operand.

isempty,empty

Принимается если subject без значения.

!empty,notempty,isnotempty

Принимается если subject имеет значение.

isnull,null

Принимается если subject равен 0

inarray,in_array,ia

Принимается если subject найден в списке операндов (строковый параметр, разделитель — запятая)

 

Примеры

Сравнение чисел:

[ [!If? &subject=`[[+total]]` &operator=`GT` &operand=`3` &then=`You have more than 3 items!`]] 

Сравнение строк:

[ [!If?
   &subject=`[[+name]]`
   &operator=`EQ`
   &operand=`George`
   &then=`Hey George! Long time no see!`
   &else=`You're not George.  Go away.`
]]

Встраиваемый вызов сниппета

[ [!If?
   &subject=`[[+modx.user.id]]`
   &operator=`EQ`
   &operand=`0`
   &then=`[[Login]]`
   &else=`[[Logout]]`
]]

При использовании сниппета IF для проверки поля ресурса или шаблонной переменной (или другого значения, не измененного до очистки кэша), убедитесь, что используете кэшируемый вызов сниппета для проверки состояния. Это нужно, чтобы быть уверенным, что этот процесс не нужен при каждом запросе.

[ [If?
   &subject=`[[*hidemenu]]`
   &operator=`EQ`
   &operand=`1`
   &then=`This resource is not visible in the menu.`
   &else=`This resource shows up in the menu in spot [[*menuindex]].`
]]

Скачиваем и устанавливаем пакет IF

Например, нам нужно что бы слайдер отображлся только на главной странице, с id=1, тогда вставляем в шаблон:

[ [If?   &subject=`117`   &operator=`EQ`   &operand=`1`   &then=`[[$slider]]`]]

 или через модификаторы

[ [*id:is=`1`:then=`[[$slider]]`:else=«]]

Еще например, нам надо что бы выводился ЗАГОЛОВОК, если РАСШИРЕННЫЙ ЗАГОЛОВОК пуст, тогда вписываем:

[ [If?   &subject=«   &operator=`notempty` &then=«&else=`Конструкция условий if else в MODx`   ]]

или

[ [*longtitle:is=«:then=`Конструкция условий if else в MODx`:else=«]]

Параметры IF для MODX REVO:

  • subject — самый важный параметр, его сравниваем
  • operator — каким образом сравниваем, по умолчанию =
  • operand — с чем сравниваем 
  • then — что выводим, если верно
  • else — что выводим, если ложно
  • debug — выводим все обработанные параматры, если true
  • die — если этот и прошлый параметр true, то выполняется die() после вывода всех параметров

Операторы IF:

  • neq — не равно
  • eq — равно
  • lt — меньше
  • gt — больше
  • lte — меньше, либо равен
  • gte — больше, либо равен
  • isempty — выполняется если парамер пустой
  • notempty — если не пустой
  • null — если параметр имеет значение 0
  • inarray — Выполняется если Главный параметр находится в списке, перечисленном через запятую, в Операнде

«

Условия в MODx Revo сниппет IF

Что такое IF?

Условный логический сниппет, обеспечивающий выполнение условных выражений в MODx

История создания

IF написан Джейсоно Ковардом (Jason Coward), известным как opengeek, и Шоном Маккормиком, известным как splittingred и опубликован 29 октября 2009.

Загрузка

Вы можете загрузить ПО с помощью менеджера MODx Revolution, используя Package Management, или из хранилища дополнений MODx.

Использование

Сниппет If может быть вызван с использованием тегов:


	
[[If]]
	

или, в случае, если объект может быть изменен до того, как кэш ресурса будет очищен, используйте не кэшируемый синтаксис:


	
[[!If]]
	

Доступные свойства IF

Имя Описание Значение «по умолчанию»
subject Параметр, над значением которого выполняются условия.
operator Оператор сравнения с subject =
operand Используется при необходимости, значение для сравнения subject и operator.
then Выводится, если состояние принимает значение true
else Выводится, если состояние принимает значение false
debug Если значение true, отображает все проверенные свойства 0
die Если прошло обработку debug и значение true, после отображения свойств вывести die(). 0

Доступные операторы IF

Оператор Описание
!=,neq,not,isnot,isnt,unequal,notequal Принимается если subject не равен operand
==,=,eq,is,equal,equals,equalto Принимается если subject равен operand
<,lt,less,lessthan Принимается если subject меньше operand.
>,gt,greater,greaterthan Принимается если subject больше operand.
<=,lte,lessthanequals,lessthanorequalto Принимается если subject меньше или равен operand
>=,gte,greaterthanequals,greaterthanequalto Принимается если subject больше или равен operand.
isempty,empty Принимается если subject без значения.
!empty,notempty,isnotempty Принимается если subject имеет значение.
isnull,null Принимается если subject равен 0
inarray,in_array,ia Принимается если subject найден в списке операндов (строковый параметр, разделитель — запятая)

Примеры IF


	
[[
	!If? 
	&subject=`[[+total]]` 
	&operator=`GT` 
	&operand=`3` 
	&then=`You have more than 3 items!`
]] 
	

Сравнение строк:


	
[[!If?
   &subject=`[[+name]]`
   &operator=`EQ`
   &operand=`George`
   &then=`Hey George! Long time no see!`
   &else=`You're not George.  Go away.`
]]
	

Встраиваемый вызов сниппета


	
[[!If?
   &subject=`[[+modx.user.id]]`
   &operator=`EQ`
   &operand=`0`
   &then=`[[Login]]`
   &else=`[[Logout]]`
]]
	

При использовании сниппета IF для проверки поля ресурса или шаблонной переменной (или другого значения, не измененного до очистки кэша), убедитесь, что используете кэшируемый вызов сниппета для проверки состояния. Это нужно, чтобы быть уверенным, что этот процесс не нужен при каждом запросе.


	
[[If?
   &subject=`[[*hidemenu]]`
   &operator=`EQ`
   &operand=`1`
   &then=`This resource is not visible in the menu.`
   &else=`This resource shows up in the menu in spot [[*menuindex]].`
]]
	
  • 2.94
  • 1
  • 2
  • 3
  • 4
  • 5

Голосов: 817 | Просмотров: 6790

modx — Способ, чтобы getResources не отображал неопубликованные идентификаторы, если указан список идентификаторов

спросил

Изменено 6 лет, 3 месяца назад

Просмотрено 249 раз

У меня есть запрос SQL, который выдает группу идентификаторов. Я передаю эти идентификаторы вызову getResources как таковому:

 [[получить ресурсы?
                &родители=`4`
                &ресурсы=`' . $идентификаторы . '`
                &limit=`0`
                &showHidden=`1`
                &tpl=`PropItemTPL`
                &sortby=`menuindex ASC, идентификатор`
                &sortdir=`ASC`
                &includeContent=`1`
                &includeTVs=`1`
                &processTVs=`1`
                &showUnpublished=`0`
           ]]
 

Проблема в том, что здесь отображаются все идентификаторы, даже если они не опубликованы.

Я включил &showUnpublished='0' , но это не имеет значения.

Кто-нибудь знает, есть ли способ заставить это работать с getResources? Или мне нужно переписать PHP и MySQL?

  • modx
  • modx-revolution
  • modx-getresources

Параметр ресурсов отделен от остальной логики выбора. Если вы включите идентификатор ресурса в свойство ресурсов, он будет включен независимо от любых других свойств выбора.

Попробуйте pdoResources, и я не думаю, что у вас возникнет эта проблема. Это также намного быстрее, чем getResources.

Вы можете добавить предложение «где» в качестве одного из параметров, сузив набор результатов до только опубликованных документов:

 [[getResources?
                &родители=`4`
                &ресурсы=`' . $идентификаторы . '`
                &limit=`0`
                &showHidden=`1`
                &tpl=`PropItemTPL`
                &sortby=`menuindex ASC, идентификатор`
                &sortdir=`ASC`
                &includeContent=`1`
                &includeTVs=`1`
                &processTVs=`1`
                &where=`{"опубликовано" : true}`
           ]]
 

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Параметры SimpleSearch (MODx Revolution) · GitHub

[[простойПоиск?
&tpl=`Результат поиска`
//Чанк, который будет использоваться для отображения содержимого каждого результата поиска.
&containerTpl=`Результаты поиска`
//Чанк, который будет использоваться для переноса всех результатов поиска, разбиения на страницы и сообщения.
&useAllWords=`0`
//Если true, будут найдены только результаты со всеми указанными поисковыми словами.
&maxWords=`7`
//Максимальное количество слов для включения в поиск. Применимо, только если useAllWords выключен.
&searchStyle=`partial`
//Для поиска либо с «частичным» поиском LIKE, либо с поиском «совпадения» на основе релевантности.
&perPage=`10`
//Количество результатов поиска для отображения на странице.
&showExtract=`1`
//Показывать или нет выдержку из содержимого каждого результата поиска.
&extractLength=`200`
//Количество символов для извлечения содержимого каждого результата поиска.
&extractEllipsis=`…`
//Строка, используемая для переноса результатов извлечения. По умолчанию многоточие.
&highlightResults=`1`
//Выделять ли поисковый запрос в результатах.
&highlightClass=`sisea-highlight`
//Имя класса CSS для добавления к выделенным терминам в результатах.
&highlightTag=`span`
// HTML-тег для переноса выделенного термина в результаты поиска.
&pageTpl=`Ссылка на страницу`
//Чанк для ссылки на страницы.
&currentPageTpl=«
//Чанк, используемый для текущей ссылки на страницы.
&pagingSeparator=`CurrentPageLink`
//Разделитель между ссылками на страницы. |
&ids=«
//Список идентификаторов, разделенных запятыми, для ограничения поиска.
&idType=`родители`
//Тип ограничения для параметра ids. Если родители, будут добавлены все дочерние идентификаторы в параметре ids для поиска. Если документы, будут использоваться только указанные идентификаторы в поиске.
&depth=`10`
//Если для idtype задано значение parent, глубина дерева ресурсов, в которой будет выполняться поиск с указанными идентификаторами.
&hideMenu=`2`
//Вернуть или нет ресурсы с включенным скрытым меню.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *