diff --git a/_test/tests/inc/pageutils_findnearest.test.php b/_test/tests/inc/pageutils_findnearest.test.php
new file mode 100644
index 0000000000000000000000000000000000000000..e129b5e585e2581846d3ff28ba0f16d6170ec640
--- /dev/null
+++ b/_test/tests/inc/pageutils_findnearest.test.php
@@ -0,0 +1,40 @@
+<?php
+
+class pageutils_findnearest_test extends DokuWikiTest {
+    function testNoSidebar() {
+        global $ID;
+
+        $ID = 'foo:bar:baz:test';
+        $sidebar = page_findnearest('sidebar');
+        $this->assertEquals(false, $sidebar);
+    }
+
+    function testExistingSidebars() {
+        global $ID;
+
+        saveWikiText('sidebar', 'topsidebar-test', '');
+
+        $ID = 'foo:bar:baz:test';
+        $sidebar = page_findnearest('sidebar');
+        $this->assertEquals('sidebar', $sidebar);
+
+        $ID = 'foo';
+        $sidebar = page_findnearest('sidebar');
+        $this->assertEquals('sidebar', $sidebar);
+
+        saveWikiText('foo:bar:sidebar', 'bottomsidebar-test', '');
+
+        $ID = 'foo:bar:baz:test';
+        $sidebar = page_findnearest('sidebar');
+        $this->assertEquals('foo:bar:sidebar', $sidebar);
+
+        $ID = 'foo:bar:test';
+        $sidebar = page_findnearest('sidebar');
+        $this->assertEquals('foo:bar:sidebar', $sidebar);
+
+        $ID = 'foo';
+        $sidebar = page_findnearest('sidebar');
+        $this->assertEquals('sidebar', $sidebar);
+    }
+
+}
diff --git a/_test/tests/inc/template_sidebar.test.php b/_test/tests/inc/template_sidebar.test.php
new file mode 100644
index 0000000000000000000000000000000000000000..56153894ab47c0e030845d4ee17d627e14d372d1
--- /dev/null
+++ b/_test/tests/inc/template_sidebar.test.php
@@ -0,0 +1,40 @@
+<?php
+
+class template_sidebar_test extends DokuWikiTest {
+    function testNoSidebar() {
+        global $ID;
+
+        $ID = 'foo:bar:baz:test';
+        $sidebar = tpl_sidebar(false);
+        $this->assertEquals('',$sidebar);
+    }
+
+    function testExistingSidebars() {
+        global $ID;
+
+        saveWikiText('sidebar', 'topsidebar-test', '');
+
+        $ID = 'foo:bar:baz:test';
+        $sidebar = tpl_sidebar(false);
+        $this->assertTrue(strpos($sidebar, 'topsidebar-test') > 0);
+
+        $ID = 'foo';
+        $sidebar = tpl_sidebar(false);
+        $this->assertTrue(strpos($sidebar, 'topsidebar-test') > 0);
+
+        saveWikiText('foo:bar:sidebar', 'bottomsidebar-test', '');
+
+        $ID = 'foo:bar:baz:test';
+        $sidebar = tpl_sidebar(false);
+        $this->assertTrue(strpos($sidebar, 'bottomsidebar-test') > 0);
+
+        $ID = 'foo:bar:test';
+        $sidebar = tpl_sidebar(false);
+        $this->assertTrue(strpos($sidebar, 'bottomsidebar-test') > 0);
+
+        $ID = 'foo';
+        $sidebar = tpl_sidebar(false);
+        $this->assertTrue(strpos($sidebar, 'topsidebar-test') > 0);
+    }
+
+}
diff --git a/inc/pageutils.php b/inc/pageutils.php
index c94d14624857c7d0fe3166fbc43640b4ad01e22a..f525c44d06952f784de92a471ac86ac117c896fc 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 a18d7151f66a35dcf8956f209424b47869656cca..c9e899034dfb4f713645af8494b4791bb3662a96 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 '';
 }
 
 /**
diff --git a/lib/tpl/dokuwiki/detail.php b/lib/tpl/dokuwiki/detail.php
index a3516a7eda19f03d6f787ab9118d63e5cbcc1c31..5fe1a1ad7977e9909a23336530ac084ddee9f5fa 100644
--- a/lib/tpl/dokuwiki/detail.php
+++ b/lib/tpl/dokuwiki/detail.php
@@ -10,7 +10,7 @@
 // must be run from within DokuWiki
 if (!defined('DOKU_INC')) die();
 
-$showSidebar = $conf['sidebar'] && page_exists($conf['sidebar']) && ($ACT=='show');
+$showSidebar = page_findnearest($conf['sidebar']) && ($ACT=='show');
 ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $conf['lang']?>"
diff --git a/lib/tpl/dokuwiki/main.php b/lib/tpl/dokuwiki/main.php
index d8e85850fedae046de584bba5e1cc0ad97eebc57..e0b046574b82ec1192ca0a33257408638895eba2 100644
--- a/lib/tpl/dokuwiki/main.php
+++ b/lib/tpl/dokuwiki/main.php
@@ -10,7 +10,7 @@
 
 if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */
 
-$showSidebar = $conf['sidebar'] && page_exists($conf['sidebar']) && ($ACT=='show');
+$showSidebar = page_findnearest($conf['sidebar']) && ($ACT=='show');
 ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $conf['lang'] ?>"
@@ -41,7 +41,7 @@ $showSidebar = $conf['sidebar'] && page_exists($conf['sidebar']) && ($ACT=='show
                     <div class="content">
                         <?php tpl_flush() ?>
                         <?php tpl_includeFile('sidebarheader.html') ?>
-                        <?php tpl_include_page($conf['sidebar']) ?>
+                        <?php tpl_sidebar() ?>
                         <?php tpl_includeFile('sidebarfooter.html') ?>
                     </div>
                 </div></div><!-- /aside -->