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, Ed, biapar, Willr, Ingo, swaiba

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

Go to End

2 Posts   1482 Views


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:


Any hints on how to proceed would be greatly appreciated.


Community Member, 130 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.