<![CDATA[ How can I make multiple condition using output filters? - My Forums]]> https://forums.modx.com/thread/?thread=98634 <![CDATA[How can I make multiple condition using output filters?]]> https://forums.modx.com/thread/98634/how-can-i-make-multiple-condition-using-output-filters#dis-post-533362
The problem is that Modx filters only can operate only one special tag (or id, or parent id, or something else), for ex.

 [[*id:is=`331`:then=`<meta name="description" content="[[*description]] — Page [[+page]]" />`:else=`<meta name="description" content="[[*description]]" />`]] 


In this case tag is ID. In my situation I need to add to this condition one more statement, it must work like:

- if [[*id]] is 331 then...
- else if [[*parent]] is 321 then..
- else...

How can I do this without creating templates or chunks?
I tried some variants:

This just doesn't work

[[*id:is=`331`:then=`<meta name="description" content="[[*description]] — Page [[+page]]" />`:else=`[[*parent:is=`321`:then=`<meta name="description" content="[[*description]] - News Page" />`:else=`<meta name="description" content="[[*description]]" />`]]]] 


OR

This on the 331st resource outputs two descriptions

 [[*id:is=`331`:then=`<meta name="description" content="[[*description]] — Page [[+page]]" />`:else=``]] 
    [[*parent:is=`321`:then=`<meta name="description" content="[[*description]] - News Page" />`:else=`<meta name="description" content="[[*description]]" />`]]
]]>
mankutila Oct 19, 2015, 02:53 PM https://forums.modx.com/thread/98634/how-can-i-make-multiple-condition-using-output-filters#dis-post-533362
<![CDATA[Re: How can I make multiple condition using output filters?]]> https://forums.modx.com/thread/98634/how-can-i-make-multiple-condition-using-output-filters#dis-post-533438
$id = $resourceid;


The $resourceid variable isn't set by MODX in Revolution and your code doesn't set it, so the $id variable wasn't set.

I don't think getParent() exists in Revolution (I could be wrong), but even if it did, it's going the long way round since you already have the resource object and only want its 'parent' field, which contains the parent's ID.

Your code might have worked in MODX Evolution.



]]>
BobRay Oct 20, 2015, 11:36 PM https://forums.modx.com/thread/98634/how-can-i-make-multiple-condition-using-output-filters#dis-post-533438
<![CDATA[Re: How can I make multiple condition using output filters?]]> https://forums.modx.com/thread/98634/how-can-i-make-multiple-condition-using-output-filters#dis-post-533415 Quote from: BobRay at Oct 19, 2015, 10:34 PM
Try this:

<!--?php
$docId = $modx--->resource->get('id');
 
$output = '<meta name="description" content="[[*description]]">';
 
 
if($modx->resource->get('parent') == 321){
 
    $output = '<meta name="description" content="[[*description]] — News Page">';
 
} elseif ($docId == 331) {
 
    $output = '<meta name="description" content="[[*description]] — Page [[+page]]">';
}
 
return $output;
 


It works! Thanks) Maybe you could say, why did not my code work?]]>
mankutila Oct 20, 2015, 09:22 AM https://forums.modx.com/thread/98634/how-can-i-make-multiple-condition-using-output-filters#dis-post-533415
<![CDATA[Re: How can I make multiple condition using output filters?]]> https://forums.modx.com/thread/98634/how-can-i-make-multiple-condition-using-output-filters#dis-post-533380
<?php
$docId = $modx->resource->get('id');
 
$output = '<meta name="description" content="[[*description]]" />';
 
 
if($modx->resource->get('parent') == 321){
 
    $output = '<meta name="description" content="[[*description]] — News Page" />';
 
} elseif ($docId == 331) {
 
    $output = '<meta name="description" content="[[*description]] — Page [[+page]]" />';
}
 
return $output;
 

]]>
BobRay Oct 19, 2015, 05:34 PM https://forums.modx.com/thread/98634/how-can-i-make-multiple-condition-using-output-filters#dis-post-533380
<![CDATA[Re: How can I make multiple condition using output filters?]]> https://forums.modx.com/thread/98634/how-can-i-make-multiple-condition-using-output-filters#dis-post-533366
getDescription snippet:
<?php
$id = $resourceid;

$output = '<meta name="description" content="[[*description]]" />';


if($modx->getParent($id,1,'id') == 321){

 $output = '<meta name="description" content="[[*description]] — News Page" />';

} else {

 if ($id == 331) {
      $output = '<meta name="description" content="[[*description]] — Page [[+page]]" />';
 } else {
      $output = '<meta name="description" content="[[*description]]" />';
 }

}

echo $output;

return;


And I call it in my template:
[[!getDescription? &resourceid=`[[*id]]`]]


Please help! I don't understand why it doesn't work((]]>
mankutila Oct 19, 2015, 04:33 PM https://forums.modx.com/thread/98634/how-can-i-make-multiple-condition-using-output-filters#dis-post-533366