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.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

How to only show a more link if there's actually more content?


Reply


2 Posts   1240 Views

Avatar
steffik

Community Member, 15 Posts

15 April 2011 at 9:09pm

I'm stuck with a little programming problem and don't know how to proceed.

I only want to show a more link on a news if there is actually more content than just the first paragraph. Something like
<% if Content > Content.FirstParagraph %>
but as i know that the templating language doesn't support comparisons just jet, i tried to write this in my NewsList Controller, but i think my function never gets called, so i wonder if i'm making anything wrong?

   
   function HasMoreContent() {
      if ($this->obj('Content')->FirstParagraph()
         && $this->Content > $this->obj('Content')->FirstParagraph()) {
         return true;
         } else {
         return false;
      }
   }

and in the template:

<% if Content %>
<% if HasMoreContent %>
   <a href="$Link" title="Mehr &uuml;ber &quot;{$Title}&quot;"> &gt;&gt; mehr</a>
<% end_if %>
<% end_if %>

i also tried something like this, just to see if anything gets called at all

function HasMoreContent() {
   print "test";
   return "Test";
}

and in the template:

$HasMoreContent

Any hints on how to proceed would be greatly appreciated.

Avatar
JonoM

Community Member, 103 Posts

16 April 2011 at 12:01am

Regarding your function not getting called - I think it might be a context/scope thing. I'm guessing you have something like a NewsList page type and a NewsArticle page type? In that case I think the HasMoreContent() function should be on your NewsArticle controller instead of your NewsList controller.