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're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

Customising the CMS /

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

Create dynamic content according to URL variable

Go to End

5 Posts   3145 Views


Community Member, 2 Posts

19 February 2011 at 5:04am

Hi all,

I was just wondering what is the best way to assign a certain value to a variable according to a specific parameter in the URL.

For example, let's say I'm tagging backlinks to be implemented on an external website in this way I'd like to give the value "externalsitename" to a variable $Source so that i can call it from within my page templates to create dynamic content. For example, by adapting the landing page subheader to state "You were redirected from $ReferralSiteName". Shall I start from something like this in Page_Controller ?

if ($_GET['source'])
{echo htmlentities($_GET['source']);}
{echo ucwords("Standard content");}

Thank you!


Forum Moderator, 1899 Posts

20 February 2011 at 9:12pm

Edited: 20/02/2011 9:13pm

here is a basic example using an actiona nd an id through the URL...


	'urlpage/$Action/$ID/$OtherID' => 'URLPage_Controller',

the page...

class URLPage extends Page {}

class URLPage_Controller extends Page_Controller {

	static $allowed_actions = array(

	function urlaction() {
		$Params = $this->getURLParams();
		$id = Convert::raw2sql($Params['ID']); //the prevents against nasty - non-int stuff
		//do stuff using $id
		return $id;


Community Member, 24 Posts

21 February 2011 at 2:28pm

Edited: 21/02/2011 2:31pm

Here is an alternative if you do not want to add anything in your _config.php file...

class SomePage extends Page {

// Page code here 


class SomePage_Controller extends Page_Controller {

	function index($request) {
		// if $_GET['source'] exists, do something else, otherwise return normal page
		if($source = $request->getVar('source')) {
			// do stuff with $source here
			// eg. below

			return $this->customise(array(
				'Content' => 'You were redirected from: ' . $source
		else {
			return $this;


Community Member, 2 Posts

21 February 2011 at 9:31pm

Hi guys, thanks for the swift reply. I'll check it out today and see if I can get it to work!


Forum Moderator, 1899 Posts

22 February 2011 at 3:12am

Just to update my post -
I only included the _config.php to show how it normally is setup - you only need that when you have *different* parameters to those I've show... bad example I guess!