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

Creating related pages in SS3


2 Posts   288 Views


Community Member, 146 Posts

1 October 2013 at 3:55am

Hi everyone

Just trying to create a simple related pages, which oddly I can not find a tut for anywhere! I will make one once this is finished.

What I want to do is pull through the Related Page details into the summary fields, so I can see whats related instead of just the ID. I have no idea how to do this...

So i have...

class RelatedPage extends DataObject {

public static $db = array(
"SortOrder" => "Int",
"RelatedPageID" => "Int"

public static $has_one = array(
"Page" => "Page"

public static $has_many = array(

public static $field_labels = array(

static $summary_fields = array (

function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main',new TreeDropdownField("RelatedPageID", "Select related page", "SiteTree"));
return $fields;

public function Link(){
if ($this->RelatedPageID){
$doSet = DataObject::get_by_id("Page", $this->RelatedPageID);
$parentID = $doSet->ParentID;
$URLString = $doSet->URLSegment;
while ($parentID != 0){
$doSet = DataObject::get_by_id("Page", $parentID);
$parentID = $doSet->ParentID;
$URLString = $doSet ->URLSegment . '/' . $URLString;
return Director::BaseURL() . $URLString;
} else {
return false;


On the summary page of "Page" i would like to see

Page Title, Thumbnail (which is and has_one image on Page) and Link (which is the function above).

Any ideas?



Community Member, 254 Posts

1 October 2013 at 6:31pm

Hi Lozhowlett.

There might be a better way. But you could easily mimic the Link function to return the summary of the related page. But I think there is an error in the summary_fields at the mo. Try updating the below code, renaming Link to getLink. Then reference 'Link' in the summary field.

static $summary_fields = array (
public function getSummary() {
public function getLink() {