Expand my Community achievements bar.

SOLVED

Prevent rule from being triggered if parameter exists

Avatar

Level 3

Hi there,

I just set up a page load rule. The only condition for this rule is that it is not triggered if a certain parameter exists. Unfortunately AEM only offers me the possibility to trigger the rule if a parameter is pressent. Can you tell me if it is also possible to prevent a rule from being triggered if a parameter exists?

Thank you

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

If you can test for the parameter using javascript then you can accomplish this using a custom condition on the rule.

If a custom condition does not return true, then the condition is not met and the rule will not fire.

As an example, you could use this javascript in a DTM custom condition:

var paramExists = true; //replace this with code to determine existence of the param

if (paramExists) {

  return false;

} else {

  return true;

}

View solution in original post

6 Replies

Avatar

Correct answer by
Community Advisor

If you can test for the parameter using javascript then you can accomplish this using a custom condition on the rule.

If a custom condition does not return true, then the condition is not met and the rule will not fire.

As an example, you could use this javascript in a DTM custom condition:

var paramExists = true; //replace this with code to determine existence of the param

if (paramExists) {

  return false;

} else {

  return true;

}

Avatar

Level 3

Great, thanks stewarts16448458

Unfortunately I am afraid I am not exactly sure what i have to insert for "//replace this with code to determine existence of the param". Could you give me an example. Let's say my url is xyz.com?parameter1=a&parameter2=b and I want do not want the rule to be triggered if parameter2 exists.

Thank you very much.

Florian

Avatar

Community Advisor

I think I'd do it this way -

Create a DTM data element for parameter2 call it qsParam2.

Then the code becomes :

if (_satellite.getVar('qsParam2') != "") {

return false;

} else {

return true;

}

Avatar

Level 10

Stewart,

Wouldn't it be opposite? Florian is wanting to not trigger the rule if parameter2 exists. I believe your code reads

If parameter2 does not equal null (IE if parameters contains a value), return false and thus do not fire the rule

Wouldn't you want to remove the ! from your code so that it read

if parameter 2 equals null, return false and thus do not fire the rule

Thanks,
Jantzen

Avatar

Community Advisor

Jantzen,

  I think we're saying the same thing.

Florian,

  Let us know if you are all set.  I guess, If I got it wrong, swap the return statements in the custom condition.

-Stew

Avatar

Level 3

Hi Stewart, hi Jantzen,

thank you for your feedback and your discussion. Sorry for my late response, it took me a while to put everything in place. Actually the solution Stewart suggested worked perfectly well. I used the above mentioned code to prevent the rule from being fired if a certain parameter existed.

Thanks again guys. This helped a lot.