Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Template Questions

Multiple ||


Go to End
Reply

14 Posts   1612 Views

Avatar
mschiefmaker

24 October 2009 at 9:37pm Community Member, 187 Posts

On a template I want to display some text if anyone of four conditions are meet ie

<% if Referrals || Supervision || Consultation || Review %>

but I can do this as I can only have 2 conditions. I can't see a way t o nest the conditions so how do I test for this?

Know this has got to be an easy answer but I am stumped.

Thanks

Catherine

Avatar
Willr

25 October 2009 at 1:16am Forum Moderator, 5511 Posts

No the template language does not support that. In order to get that to work you could write a small PHP function which does the or comparison. Like

// in say page.php but could be your own page type
function IfSomething() {
return ($this->Referrals || $this->Supervision || $this->Consultation || $this->Review) ? true : false;
}

<% if IfSomething %>....

Avatar
mschiefmaker

25 October 2009 at 11:22am Community Member, 187 Posts

Hi Will

Thanks for this, realised I shouldn't have been looking for that kind of function in a tempalte this morning

Cheers

Catherine

Avatar
mschiefmaker

25 October 2009 at 12:37pm Community Member, 187 Posts

Ok so I am stumped. I have added to DirectoryPage.php in the DirectoryPage_Controller section

class DirectoryPage_Controller extends Page_Controller {
   
   ...

function Offerings() {
return True;
}
   
}
(I have removed the actual decision logic for now as I just can't get the function to apply)

and to DirectoryPage.ss I have added

<% if Offerings %>
   <li>Avaliable <% end_if %> ...

but Avaliable does not display. I know its got to be simple but what am I doing wrong?

Thanks

Catherine

Avatar
Willr

25 October 2009 at 12:45pm Forum Moderator, 5511 Posts

Try moving it to the DirectoryPage class rather then the controller, Or move that function to the page controller in Page.php and see if it picks the function up in either of those 2 places (you might want to put a die(); statement in the function so you can obviously tell when the function is called.

Avatar
mschiefmaker

25 October 2009 at 1:59pm Community Member, 187 Posts

Tried both page.php and the DirectoryPage section of DirectoryPage.php neither worked. If I put die(); inside another function on DirectoryPage it works but not for Offerings.

For some reason it is this function no applying. Have tried to using flush and saving the page again in the CMS but to no avail. Any other suggestions?

Thanks

Catherine

Avatar
Willr

25 October 2009 at 2:05pm Forum Moderator, 5511 Posts

Strange. Perhaps try changing the function name to getOfferings() and leaving the template if as <% if Offering %>.

You aren't inside a control or any other loop on the DirectoryPage.ss are you?

Avatar
mschiefmaker

25 October 2009 at 2:11pm Community Member, 187 Posts

Yes I am inside a control. ?

Go to Top