Just wondering if there is a keyword modifier to use as conditional OR
e.g. something like %begin_asset_metadata_fieldname_key^eq:valueA||valueB||valueC%
cheers
Just wondering if there is a keyword modifier to use as conditional OR
e.g. something like %begin_asset_metadata_fieldname_key^eq:valueA||valueB||valueC%
cheers
Nop.
To get the effect of “equal to A, B or C” I’d proabbly use ^preg_match
(https://matrix.squiz.net/manuals/keyword-replacements/chapters/keyword-modifiers#preg_match) and put the conditions in the regular expression, but there’s no general purpose operators like that.
If a regexp doesn’t scratch your itch, you’re probably best served by reaching for SSJS (assuming you’re on 5.4+).
As an alternative to preg_match
, you could use some trickery using in_array
modifier with some dummy keyword. Something like below:
%begin_globals_dummy^append:valueA,valueB,valueC^explode:,^in_array:{asset_metadata_fieldname_key}%
Here globals_dummy
will return nothing however it will kick start the Matrix keyword replacement process chain. So globals_dummy^append:valueA,valueB,valueC^explode:,
will return an array [valueA, valueB, valueC]
, which is fed to in_array
modifier to check the nested keyword {asset_metadata_fieldname_key}
.
Alternatively you could also use nested keyword in the eq
modifier’s 3rd argument, however it will only work for check up to two values as you cannot nest a keyword within a nested keyword:
%begin_kw^eq:v1:1:{kw^eq:v2}%
// kw is either "v1" or "v2"
%end_%