pdoResources и фильтрация по tv полю типа чекбокс

Предположим, возникла задача выводить на страницу документы, у которых в дополнительном параметре типа чекбокс стоит галочка. Простая вроде задача, но есть проблема - pdoResources с фильтрацией по tv работает не совсем так, как хотелось бы, а именно, поиск идёт по значениям, которые физически находятся в БД, то есть, сюда не подставляются значения по умолчанию из настроек ТВ. То есть, если вы завели tv hide типа чекбокс, по умолчанию поставили ему значение 1, вы не сможете фильтровать вывод подобным образом:
&tvFilters=`hide==1`
Потому что значение по умолчанию в базу не прописывается. Вот такая особенность MODX.
На помощь в таком случае придет указание следующих параметров при вызове pdoResources:


&leftJoin=`{
	"tvval": {
	    "class":"modTemplateVarResource"
	    ,"alias":"tvval"
		,"on": "modResource.id = tvval.contentid AND tvval.tmplvarid = 999"
	}
}`
&where=`["(`tvval`.`value` IS NULL OR `tvval`.`value` != '1')"]`
Тут 999 - id tv, по которой нужно фильтровать

Теги: Revolution, костыли, шпаргалки, pdoResources, where, tv

Сообщение отправлено

Закрыть