From e66d3e6dfa7ba6f0cf55b58f0b00b66b52c98321 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 1 Jul 2012 11:41:22 +0200 Subject: Improved sidebar inclusion Template authors now can use tpl_sidebar() to include the sidebar. Sidebars can be defined in subnamespaces as well --- inc/pageutils.php | 24 ++++++++++++++++++++++++ inc/template.php | 12 ++++++++++++ 2 files changed, 36 insertions(+) (limited to 'inc') diff --git a/inc/pageutils.php b/inc/pageutils.php index c94d14624..f525c44d0 100644 --- a/inc/pageutils.php +++ b/inc/pageutils.php @@ -622,3 +622,27 @@ function utf8_decodeFN($file){ return urldecode($file); } +/** + * Find a page in the current namespace (determined from $ID) or any + * higher namespace + * + * Used for sidebars, but can be used other stuff as well + * + * @todo add event hook + * @param string $page the pagename you're looking for + * @return string|false the full page id of the found page, false if any + */ +function page_findnearest($page){ + global $ID; + + $ns = $ID; + do { + $ns = getNS($ns); + $pageid = ltrim("$ns:$page",':'); + if(page_exists($pageid)){ + return $pageid; + } + } while($ns); + + return false; +} diff --git a/inc/template.php b/inc/template.php index a18d7151f..c9e899034 100644 --- a/inc/template.php +++ b/inc/template.php @@ -1394,6 +1394,18 @@ function tpl_include_page($pageid,$print=true){ if(!$print) return $html; echo $html; + return $html; +} + +/** + * Include the sidebar, will check current namespaces first + */ +function tpl_sidebar($print=true){ + global $conf; + + $sidebar = page_findnearest($conf['sidebar']); + if($sidebar) return tpl_include_page($sidebar, $print); + return ''; } /** -- cgit v1.2.3