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.

Archive

Our old forums are still available as a read-only archive.

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

accesing to sitetree link from template


Reply

4 Posts   3308 Views

Avatar
nomen

18 January 2008 at 1:23am Community Member, 52 Posts

Hello:

I defined a new page. This page includes a link to another sitetree page.

   static $has_one = array
      (
         "LinkTo" => "SiteTree",
      );          


The user can create the link in the CMS without problems because in getCMSFields i have

         $fields->addFieldToTab("Root.Content.Main", new TreeDropdownField('LinkToID', "Link", "SiteTree"),'Content');   

The problem comes with the template usage.
I can access to LinkToID value without problem. It returns a numeric value (for example 5).
But i´m not interested in the ID. I´m interested in his URL: for example, the link with the ID 5 is "http://www.mysite.com/who-we-are".
How can i obtain this link?
Another question is, if i have a multilanguage site, this link will be correct with the current language of the site?

Thanks in advance, and excuse me for my poor english.

Avatar
cevic

17 March 2008 at 7:58am Community Member, 5 Posts

I'm trying to solve a problem similar to your (see my post http://www.silverstripe.com/site-builders-forum/flat/45018). Have you found a way around?

Avatar
Fuzz10

18 March 2008 at 12:19am Community Member, 787 Posts

There's probably some internal function for this ,but I could not find it as well...
A workaround is creating a method on your class which gets and returns the page..

Something like this :

function get_Hyperlink_URLSegment() {
      $oTmpDataObject = DataObject::get_by_id("Page",$this->iSiteTreeID);
      return $oTmpDataObject->URLSegment;
}

Avatar
Shane Garelja

5 October 2008 at 1:19am (Last edited: 5 October 2008 1:20am), Community Member, 18 Posts

@nomen - you would access it like this in your template:

<a href="$LinkTo.Link">Link to my page</a>

... as "LinkTo" is the relationship name (as defined in your has_one array) for the Page object that you've linked to (or saved). "LinkToID" is just the foreign key column hence you only get an integer.