tpl->addValue('Breadcrumb',array('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.'cat_url.'">'.$categories->cat_title.''; } if ($page == 0) { $ret .= $separator.$_ctx->categories->cat_title; } else { $ret .= $separator.'categories->cat_url.'">'.$_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.'cat_url.'">'.$categories->cat_title.''; } // Post's cat $categories = $core->blog->getCategory($_ctx->posts->cat_id); $ret .= $separator.'cat_url.'">'.$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; } }