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.

Blog Module /

Discuss the Blog Module.

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

Pulling SS Blog from another pages


Go to End
Reply


14 Posts   3676 Views

Avatar
Bruce B

Community Member, 152 Posts

3 July 2011 at 11:19am

Bstarr,
In page.php, you need to move the LatestNews function. It should sit in the page class near the top of the code. Look for a single closing bracket } around line 10 and insert it just above that.

Avatar
Bstarr

Community Member, 25 Posts

3 July 2011 at 3:57pm

I moved it but sadly I'm still only seeing the no entries message. Any other suggestions?

<?php
class Page extends SiteTree {

	public static $db = array(
	);

	public static $has_one = array(
	);

function LatestNews($num=4) {
$news = DataObject::get_one("BlogHolder");
return ($news) ? DataObject::get("BlogEntry", "ParentID = $news->ID", "Date DESC", "", $num) : false;
}
}
class Page_Controller extends ContentController {

	/**
	 * An array of actions that can be accessed via a request. Each array element should be an action name, and the
	 * permissions or conditions required to allow the user to access it.
	 *
	 * <code>
	 * array (
	 *     'action', // anyone can access this action
	 *     'action' => true, // same as above
	 *     'action' => 'ADMIN', // you must have ADMIN permissions to access this action
	 *     'action' => '->checkAction' // you can only access this action if $this->checkAction() returns true
	 * );
	 * </code>
	 *
	 * @var array
	 */
	public static $allowed_actions = array (
	);

	public function init() {
		parent::init();

		// Note: you should use SS template require tags inside your templates 
		// instead of putting Requirements calls here.  However these are 
		// included so that our older themes still work
		Requirements::themedCSS('layout'); 
		Requirements::themedCSS('typography'); 
		Requirements::themedCSS('form'); 
	}
}

Avatar
Bruce B

Community Member, 152 Posts

3 July 2011 at 4:11pm

I just noticed. In page.php, the function is called LatestNews, but in Homepage.ss its called LatestBlogPosts. That would account for the failure.

Avatar
Bstarr

Community Member, 25 Posts

3 July 2011 at 4:24pm

Bruce, that fixed it. Thanks so much!

Avatar
scpi

Community Member, 21 Posts

23 August 2011 at 7:08am

Along these lines, what would be the best way to extend this code to pull only blog posts with a specific tag? For example, to just pull posts tagged with "news" into a list on an "about us" page?

I see a ShowTag() function in BlogHolder.php, but that's looking for URL parameters. SelectedTag() in BlogTree.php appears to do the same thing. Entries() in BlogTree.php looks promising, but I'm not sure I can get there from here. Everything else I'm coming up with is pretty convoluted. I feel like I'm missing something, and this ought to be easier than I'm making it.

Avatar
scpi

Community Member, 21 Posts

23 August 2011 at 7:25am

Edited: 23/08/2011 7:26am

To follow up, I can make this work via SQL, borrowing some code from Entries() in BlogTree.php. But I feel dirty when I copy & paste code like this.

function LatestBlogPosts($num=5, $tag='') { 
   if($tag) {
      $SQL_tag = Convert::raw2sql($tag);
      $tagCheck = "AND \"BlogEntry\".\"Tags\" LIKE '%$SQL_tag%'";
   } else {
      $tagCheck = '';
   }
   $blogs = DataObject::get_one("BlogHolder"); 
   return ($blogs) ? DataObject::get("BlogEntry", "ParentID = $blogs->ID ".$tagCheck, "Date DESC", "", $num) : false; 
}

Go to Top