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

Latest News problems


Reply

7 Posts   638 Views

Avatar
Dimenicius

19 December 2012 at 7:31pm Community Member, 8 Posts

Hello,

I have to get the latest post from ALL holders and show them on the homepage.
The posts have a checkbox that defines if it will be on the news or not.

Tought it was easy, but I don't know how to get the latest 'unchecked' post from all different holders and show them on the same page.

Home
Holder 1
---Post 01 (checked)
---Post 02
Holder 2
---Post 01
---Post 02
---Post 03 (checked)

the Home page have to show the Post 02 (Holder 1) and Post 02 (holder 2) sorted by date.

Used the following code:

function ultimos() {
if(!isset($_GET['start']) || !is_numeric($_GET['start']) || (int)$_GET['start'] < 1) $_GET['start'] = 0;
$SQL_start = (int)$_GET['start'];
$doSet = DataObject::get("Post", "CheckboxValue = 0", "ID DESC", "", "{$SQL_start}" );
   
return $doSet ? $doSet : false;
}

How do i get only the latest one of each holder?

Avatar
stallain

19 December 2012 at 8:38pm Community Member, 61 Posts

Hi, I would try something like this (not tested) :

function ultimos() {
$holders = Holder::get();
$uncheckedpostslist = new ArrayList();
foreach($holders as $holdersItem) {
$post=$holdersItem->Children()->filter('CheckboxValue','0')->Last();
$uncheckedpostslist->push($post);
}
return $uncheckedpostslist;
}

Avatar
Dimenicius

20 December 2012 at 5:04am Community Member, 8 Posts

I've changed the "$holders = Holder::get(); " to "$holders = Categoria::get(); " which is my holder page type,
then used <% control ultimos %> to show. that returned me an error:

Server error

Sorry, there was a problem with handling your request.

and all the page layout was broken. Showing only texts.

Avatar
stallain

20 December 2012 at 5:10am Community Member, 61 Posts

First question: are you using SS3+ or a previous version ?

Avatar
Dimenicius

20 December 2012 at 6:16am Community Member, 8 Posts

i'm using v.2.4.6

Avatar
stallain

20 December 2012 at 6:32am Community Member, 61 Posts

OK, my code is not suitable for this version of Silverstripe.

Maybe something like this :

In Categoria.php

function ultimos() {
return DataObject::get_one('Post', "\"CheckboxValue\"=='0'",'DESC');
}

In your HomePage.php (of whatever)

function getCategoria() {
return Dataobject::get('Categoria');
}

In your home page template

<% control getCategoria %>
<% control ultimos %>
...
<% end_control %>
<% end_control %>

Avatar
Dimenicius

20 December 2012 at 7:02am Community Member, 8 Posts

DONE! Thanks!

Have to change the "function ultimos" but everything went ok.

the final code is:

In Categoria.php

function ultimos() {
return DataObject::get_one('Post', "CheckboxValue = 0 AND `ParentID` = '".$this->ID."'",'DESC');
}



In your HomePage.php (of whatever)

function getCategoria() {
return Dataobject::get('Categoria');
}



In your home page template

<% control getCategoria %>
<% control ultimos %>
...
<% end_control %>
<% end_control %>