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   266 Views

Avatar
lozhowlett

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

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

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