Modx *id isnot =`` and isnot=`` not working

1k views Asked by At

Hi can someone help me with the correct code for this statement because it is not working for me.

[[*id:isnot=`250` and isnot=`252`:then=`[[$qc-wrap]]`]]
3

There are 3 answers

0
Anton Tarasov On BEST ANSWER

You use wrong syntax, please fix as follows:

[[*id:isnot='250':and:isnot='252':then='[[$qc-wrap]]']]

Don't forget to replace ' with ` within this example

3
LIannotti On

A more performant syntax would be:

[[[[*id:isnot=`250`:or:isnot=`252`:then=`$qc-wrap`:else=``]]]]

Note: updated to reflect comment below. Include a hyphen in the else value, as this:

[[[[ ... :else=`-`]]]]

Also note: an empty else condition can be left off entirely.

I think using or rather than and is appropriate here.

This article is great for understanding MODX conditionals:

https://sepiariver.com/modx/modx-output-filters-if-phx-conditional-statements-tutorial/

And this one for understanding the syntax above and why it's more performant:

https://modx.com/blog/2012/09/14/tags-as-the-result-or-how-conditionals-are-like-mosquitoes/

0
CJHolowatyj On

A simpler solution for this question is to use the :inarray output modifier to return an empty string, and use the :default output modifier to customize output for everything that doesn't match 250 or 252:

[[*id:inarray=`250,252`:then=``:default=`[[$qc-wrap]]`]]