/** * Generate breadcrumb links to the URL path being displayed * * @return string */ public function Breadcrumbs() { $basePath = str_replace(Director::protocolAndHost(), '', Director::absoluteBaseURL()); $relPath = parse_url(substr($_SERVER['REQUEST_URI'], strlen($basePath), strlen($_SERVER['REQUEST_URI'])), PHP_URL_PATH); $parts = explode('/', $relPath); $base = Director::absoluteBaseURL(); $pathPart = ""; $pathLinks = array(); foreach ($parts as $part) { if ($part != '') { $pathPart .= "{$part}/"; $pathLinks[] = "<a href=\"{$base}{$pathPart}\">{$part}</a>"; } } return implode(' → ', $pathLinks); }
public function testAlternativeBaseURL() { // Get original protocol and hostname $rootURL = Director::protocolAndHost(); // relative base URLs - you should end them in a / Config::inst()->update('SilverStripe\\Control\\Director', 'alternate_base_url', '/relativebase/'); $_SERVER['REQUEST_URI'] = "{$rootURL}/relativebase/sub-page/"; $this->assertEquals('/relativebase/', Director::baseURL()); $this->assertEquals($rootURL . '/relativebase/', Director::absoluteBaseURL()); $this->assertEquals($rootURL . '/relativebase/subfolder/test', Director::absoluteURL('subfolder/test')); // absolute base URLs - you should end them in a / Config::inst()->update('SilverStripe\\Control\\Director', 'alternate_base_url', 'http://www.example.org/'); $_SERVER['REQUEST_URI'] = "http://www.example.org/sub-page/"; $this->assertEquals('http://www.example.org/', Director::baseURL()); $this->assertEquals('http://www.example.org/', Director::absoluteBaseURL()); $this->assertEquals('http://www.example.org/sub-page/', Director::absoluteURL('', Director::REQUEST)); $this->assertEquals('http://www.example.org/', Director::absoluteURL('', Director::BASE)); $this->assertEquals('http://www.example.org/', Director::absoluteURL('', Director::ROOT)); $this->assertEquals('http://www.example.org/sub-page/subfolder/test', Director::absoluteURL('subfolder/test', Director::REQUEST)); $this->assertEquals('http://www.example.org/subfolder/test', Director::absoluteURL('subfolder/test', Director::ROOT)); $this->assertEquals('http://www.example.org/subfolder/test', Director::absoluteURL('subfolder/test', Director::BASE)); }