public function insertBreadcrumbsUsingPageIdentifier($page_id, $preserve_last = true) { if ($page_id == 0) { return parent::insertBreadcrumbs(array(Widget::Anchor(__('Pages'), SYMPHONY_URL . '/blueprints/pages/'))); } $pages = PageManager::resolvePage($page_id, 'handle'); foreach ($pages as &$page) { // If we are viewing the Page Editor, the Breadcrumbs should link // to the parent's Page Editor. if ($this->_context[0] == 'edit') { $page = Widget::Anchor(PageManager::fetchTitleFromHandle($page), SYMPHONY_URL . '/blueprints/pages/edit/' . PageManager::fetchIDFromHandle($page) . '/'); // If the pages index is nested, the Breadcrumb should link to the // Pages Index filtered by parent } elseif (Symphony::Configuration()->get('pages_table_nest_children', 'symphony') == 'yes') { $page = Widget::Anchor(PageManager::fetchTitleFromHandle($page), SYMPHONY_URL . '/blueprints/pages/?parent=' . PageManager::fetchIDFromHandle($page)); // If there is no nesting on the Pages Index, the breadcrumb is // not a link, just plain text } else { $page = new XMLElement('span', PageManager::fetchTitleFromHandle($page)); } } if (!$preserve_last) { array_pop($pages); } parent::insertBreadcrumbs(array_merge(array(Widget::Anchor(__('Pages'), SYMPHONY_URL . '/blueprints/pages/')), $pages)); }
/** * * Method called by Symphony in order to build the * @param $param_pool * @return XMLElement */ public function grab(&$param_pool) { // get the current page id $current_page_id = (int) $this->_env['param']['current-page-id']; // prepare output $result = new XMLElement($this->dsParamROOTELEMENT); // if multilangual extensions are enabled if ($this->isMultiLangual) { // current language $lang = LanguageRedirect::instance()->getLanguageCode(); } // get current page title including all parents $titles = PageManager::resolvePage($current_page_id, isset($lang) ? 'page_lhandles_t_' . $lang : 'title'); // get current page path including all parents $handles = PageManager::resolvePage($current_page_id, isset($lang) ? 'page_lhandles_h_' . $lang : 'handle'); // generate the output foreach ($titles as $key => $title) { $path = implode('/', array_slice($handles, 0, $key + 1)); $result->appendChild(new XMLElement('page', $title, array('path' => $path))); } // return xml result set return $result; }
/** * Given the `$page_id`, return the complete path to the * current page. * * @deprecated This function will be removed in Symphony 2.4. Use * `PageManager::resolvePagePath` instead. * @param mixed $page_id * The ID of the Page that currently being viewed, or the handle of the * current Page * @return string * The complete path to the current Page including any parent * Pages, ie. /articles/read */ public function resolvePagePath($page_id) { return PageManager::resolvePage($page_id, 'handle'); }
/** * Given the `$page_id`, return the complete path to the * current page. Each part of the Page's path will be * separated by '/'. * * @param mixed $page_id * The ID of the Page that currently being viewed, or the handle of the * current Page * @return string * The complete path to the current Page including any parent * Pages, ie. /articles/read */ public static function resolvePagePath($page_id) { $path = PageManager::resolvePage($page_id, 'handle'); return implode('/', $path); }