/** * Get URL for this content * * @return void */ public function getUrl() { $path = $this->getFile(); $name = $this->getName(); // The base URL tells us the web root of the application $baseUrl = $this->getTheme()->getAssetManager()->getBaseUrl(); // The content dir gives the full path to the directory of this // collection. $contentDir = $this->getView()->getContentDir(); // Strip off the content dir from the full path so we're left with the // relative web root of the file $webPath = dirname(str_replace($contentDir . DIRECTORY_SEPARATOR, '', $path)); $webPath = NavItem::translateOrderedName($webPath); // The url is the baseUrl + '/' + webPath + '/' + name of object $url = rtrim($baseUrl, '/') . '/' . $webPath . '/' . $name; return $url; }
/** * Create map of available folders and files in the content directory * * @return array */ public function createMap() { $files = self::rglob($this->getContentDir() . DIRECTORY_SEPARATOR . '*'); $map = array(); foreach ($files as $file) { if (is_dir($file)) { $isDir = true; } else { $isDir = false; } // Remove the common first part $file = str_replace($this->getContentDir() . '/', '', $file); $url = str_replace('.md', '', $file); $url = NavigationItem::translateOrderedName($url); if ($url == 'index') { // If we're left with just index, change to home page $map['/'] = $file; continue; } if ($isDir) { $map[$url . '/'] = $file; $map[$url] = array('canonical' => $url . '/'); continue; } // If the last segment is 'index', add an entry for the // file without the word 'index' $urlSegments = explode('/', $url); if (end($urlSegments) == 'index') { $url = str_replace('index', '', $url); $map[$url] = $file; $map[rtrim($url, '/')] = array('canonical' => $url); continue; } $map[$url] = $file; } return $map; }