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


Reply

2 Posts   248 Views

Avatar
lozhowlett

1 October 2013 at 3:55am Community Member, 146 Posts

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...

<?php
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 (
$this->Link;
);

function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main',new TreeDropdownField("RelatedPageID", "Select related page", "SiteTree"));
$fields->removeByName('SortOrder');
$fields->removeByName('PageID');
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?

Thanks!

Avatar
Bambii7

1 October 2013 at 6:31pm Community Member, 254 Posts

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 (
'Summary',
'Link'
);
public function getSummary() {
$this->Page()->Content->Summary();
}
public function getLink() {
....
}