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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

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

What do I need and how do I do this on Silverstripe?


Go to End


3 Posts   1395 Views

Avatar
Lemonie

Community Member, 70 Posts

24 October 2012 at 10:42pm

I am still trying to learn how to do things on Silverstripe but the hardest thing when you are teaching yourself is what you need to ask for!?

I want to create pages with articles/news items on as shown in this link ...

http://www.jerrygreendogs.org.uk/NewsCentre/List/News

... say 5 pages and then a main page with feeds on as shown in this link ...

http://www.jerrygreendogs.org.uk/NewsCentre/News

I have absolutely no idea where to start!! Please could you point me in the right direction and keep it simple, I am in the early stages of the learning process :-)

Avatar
Johan

Community Member, 49 Posts

24 October 2012 at 11:12pm

Edited: 24/10/2012 11:59pm

It's so easy when you know how. The problem I also find with SilverStripe is finding the information, especially if you are not a programmer or part of the team.

Presuming you are using SS3 and you added your news articles to the CMS page with a date, I create a news template with...

   static $db = array(
   		'Date' => 'Date'  
   );

and a nice way to show the date in the CMS...

   	function getCMSFields() {
		$fields = parent::getCMSFields();	
			
			$datefield = new DateField('Date', 'Publication date');
			$datefield->setConfig('showcalendar', true);
			$datefield->setConfig('showdropdown', true);
			$datefield->setConfig('dateformat', 'dd/MM/YYYY');				
			$fields->addFieldToTab('Root.Main', $datefield, 'Content');

...

You need to display snippets from the page above in the tree then create a template called NewsHolder simply in the SS file template add...

        <% loop Children %>

              <h2>$Title</h2>
              <div class="date">
               $Date.Nice
              </div>
              <p>$Content.FirstParagraph </p>
              <p><a href="$Link"  class="more">Read more</a></p>

        <% end_loop %>

..but if you want to diplay snippets on another template like the homepage you need to create a function I call it LatestNews function and call this from the SS. The function will call the NewsHolder you created above.

            <% loop LatestNews %>
            <div class="news-item jlink">
                <h2>$Title</h2>
                <p><span class="date">$Date.Nice</span><br>
                <a class="more" href="$Link">Read more</a> - $Content.FirstSentence</p>
            </div>
            <% end_loop %>

...and the function you need goes is the PHP of the template in the mysite/code such as hompage.php inside the class HomePage extends Page {...

	// show news
	function LatestNews($num=2) {
		$news = DataObject::get_one("NewsHolder");
		return ($news) ? DataObject::get("NewsArticle", "ParentID = $news->ID", "Date DESC", "", $num) : false;
	}

That should be more than enough to get you going if not go back to the basic tutorials. Good luck.

p.s. I would re-write the topic title to explain the content of the posts so that others know what this thread is about.

Avatar
stallain

Community Member, 68 Posts

27 October 2012 at 2:44pm

Hi,

The query is even easier to write since SS3 :

function LatestNews() {
return NewsArticle::get()->sort('Date','DESC')->limit(2);
}