tpl->addValue('Breadcrumb', ['tplBreadcrumb', 'breadcrumb']); class tplBreadcrumb { # Template function public static function breadcrumb($attr) { $separator = isset($attr['separator']) ? $attr['separator'] : ''; return ''; } public static function displayBreadcrumb($separator) { global $core, $_ctx; $ret = ''; # Check if breadcrumb enabled for the current blog $core->blog->settings->addNameSpace('breadcrumb'); if (!$core->blog->settings->breadcrumb->breadcrumb_enabled) { return $ret; } if ($separator == '') { $separator = ' › '; } // Get current page if set $page = isset($GLOBALS['_page_number']) ? (integer) $GLOBALS['_page_number'] : 0; switch ($core->url->type) { case 'default': // Home (first page only) $ret = '' . __('Home') . ''; break; case 'default-page': // Home`(page 2 to n) $ret = '' . __('Home') . ''; $ret .= $separator . sprintf(__('page %d'), $page); break; case 'category': // Category $ret = '' . __('Home') . ''; $categories = $core->blog->getCategoryParents($_ctx->categories->cat_id); while ($categories->fetch()) { $ret .= $separator . '' . $categories->cat_title . ''; } if ($page == 0) { $ret .= $separator . $_ctx->categories->cat_title; } else { $ret .= $separator . '' . $_ctx->categories->cat_title . ''; $ret .= $separator . sprintf(__('page %d'), $page); } break; case 'post': // Post $ret = '' . __('Home') . ''; if ($_ctx->posts->cat_id) { // Parents cats of post's cat $categories = $core->blog->getCategoryParents($_ctx->posts->cat_id); while ($categories->fetch()) { $ret .= $separator . '' . $categories->cat_title . ''; } // Post's cat $categories = $core->blog->getCategory($_ctx->posts->cat_id); $ret .= $separator . '' . $categories->cat_title . ''; } $ret .= $separator . $_ctx->posts->post_title; break; case 'lang': // Lang $ret = '' . __('Home') . ''; $langs = l10n::getISOCodes(); $ret .= $separator . (isset($langs[$_ctx->cur_lang]) ? $langs[$_ctx->cur_lang] : $_ctx->cur_lang); break; case 'archive': // Archives $ret = '' . __('Home') . ''; if (!$_ctx->archives) { // Global archives $ret .= $separator . __('Archives'); } else { // Month archive $ret .= $separator . '' . __('Archives') . ''; $ret .= $separator . dt::dt2str('%B %Y', $_ctx->archives->dt); } break; case 'pages': // Page $ret = '' . __('Home') . ''; $ret .= $separator . $_ctx->posts->post_title; break; case 'tags': // All tags $ret = '' . __('Home') . ''; $ret .= $separator . __('All tags'); break; case 'tag': // Tag $ret = '' . __('Home') . ''; $ret .= $separator . '' . __('All tags') . ''; if ($page == 0) { $ret .= $separator . $_ctx->meta->meta_id; } else { $ret .= $separator . 'meta->meta_id)) . '">' . $_ctx->meta->meta_id . ''; $ret .= $separator . sprintf(__('page %d'), $page); } break; case 'search': // Search $ret = '' . __('Home') . ''; if ($page == 0) { $ret .= $separator . __('Search:') . ' ' . $GLOBALS['_search']; } else { $ret .= $separator . '' . __('Search:') . ' ' . $GLOBALS['_search'] . ''; $ret .= $separator . sprintf(__('page %d'), $page); } break; case '404': // 404 $ret = '' . __('Home') . ''; $ret .= $separator . __('404'); break; default: $ret = '' . __('Home') . ''; # --BEHAVIOR-- publicBreadcrumb # Should specific breadcrumb if any, will be added after home page url $special = $core->callBehavior('publicBreadcrumb', $core->url->type, $separator); if ($special) { $ret .= $separator . $special; } break; } # Encapsulate breadcrumb in

if (!$core->blog->settings->breadcrumb->breadcrumb_alone) { $ret = ''; } return $ret; } }