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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Archive /

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

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

accesing to sitetree link from template


Go to End


4 Posts   4333 Views

Avatar
nomen

Community Member, 52 Posts

18 January 2008 at 1:23am

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

Community Member, 5 Posts

17 March 2008 at 7:58am

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

Community Member, 791 Posts

18 March 2008 at 12:19am

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

Community Member, 18 Posts

5 October 2008 at 1:19am

Edited: 05/10/2008 1:20am

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