Inhaltsverzeichnis

bs4simple Template für dokuwiki

Dieses Template gefällt mir tatsächlich sehr gut. Es ist einfach gehalten und hat dennoch Charakter. Mit der Zeit werde ich es nach und nach personalisieren. Bis dahin schreibe ich aber mal die Probleme und Lösungen auf, die ich mit diesem Template hatte.

Das Template könnt ihr auf der Seite dokuwiki finden. Alternativ ist hier der github-Link. Liebe Grüße an Kijima Daigo, der dieses großartige Template zur Verfügung stellt.

Probleme


Die Sidebar wird nur auf der Startseite angezeigt


Der Ursprüngliche Ersteller benutzt dieses Template scheinbar als Archiv. Ein Blick auf seine github-Seite offenbart, wie er dieses Template benutzt. Nur steht dadurch die Sidebar nur für die Startseite zur Verfügung. Um dies zu ändern, musste ich das Template etwas modifizieren.

<?php if($ID == 'start'): ?>
   <?php if($showSidebar): ?>
	<!-- ********** ASIDE ********** -->
	<div id="dokuwiki__aside"><div class="pad aside include group shadow p-4">
	    <h3 class="toggle"><?php echo $lang['sidebar'] ?></h3>
	    <div class="content"><div class="group">
	        <?php tpl_flush() ?>
		<?php tpl_includeFile('sidebarheader.html') ?>
		<?php tpl_include_page($conf['sidebar'], true, true) ?>
		<?php tpl_includeFile('sidebarfooter.html') ?>
            </div></div>
	</div></div><!-- /aside -->
   <?php endif; ?>
<?php endif; ?>

Man sieht bereits zügig, wie man das Problem beseitigen kann. Es wird am anfang gefragt, ob dies die Startseite ist. Sobald man diese entfernt, wird die Sidebar, inklusive Namespace-Sidebar(!), regulär angezeigt. Hier ein kleines Beispiel, wie das aussehen könnte.

<?php if($showSidebar): ?>
   <!-- ********** ASIDE ********** -->
   <div id="dokuwiki__aside"><div class="pad aside include group shadow p-4">
      <h3 class="toggle"><?php echo $lang['sidebar'] ?></h3>
      <div class="content"><div class="group">
	 <?php tpl_flush() ?>
	 <?php tpl_includeFile('sidebarheader.html') ?>
	 <?php tpl_include_page($conf['sidebar'], true, true) ?>
	 <?php tpl_includeFile('sidebarfooter.html') ?>
      </div></div>
    </div></div><!-- /aside -->
<?php endif; ?>

Ja! Man entfernt einfach das „if“ und passendes „endif“! Das reicht schon, damit die Sidebar sichtbar wird. Allerdings wird sich gleich ein anderes Problem zeigen, das ist direkt im nächsten Problem lesbar.


Der Seiteninhalt ist gänzlich verschoben


Wenn man die Sidebar einfach einschaltet, dann fehlen leider an einer Stelle ein paar Bootstrap-Klassen, die genau dieses Problem abfangen und korrigieren. Die Seite weiß nämlich nicht, dass eine Sidebar existiert. Deshalb ist sie so seltsam verschoben.

Die Lösung ist auch relativ simpel, wenn man sie ein mal gesehen hat.

<?php if($ID == 'start'): ?>
   <div id="dokuwiki__site"><div id="dokuwiki__top" class="site <?php echo tpl_classes(); ?> <?php
						echo ($showSidebar) ? 'showSidebar' : ''; ?> <?php echo ($hasSidebar) ? 'hasSidebar' : ''; ?>">
<?php else: ?>
   <div id="dokuwiki__site"><div id="dokuwiki__top" class="site <?php echo tpl_classes(); ?>">
<?php endif; ?>

Relativ am Anfang des Bodys findet man diesen kleinen Ausschnitt. Hier prüft er tatsächlich erneut, ob die Seite die Startseite ist und fügt dann dem div die Klassen showSidebar und hasSidebar hinzu. Die Lösung ist genauso banal, wie die erste Lösung: Wir entfernen die Abfrage.

   <div id="dokuwiki__site"><div id="dokuwiki__top" class="site <?php echo tpl_classes(); ?> <?php
						echo ($showSidebar) ? 'showSidebar' : ''; ?> <?php echo ($hasSidebar) ? 'hasSidebar' : ''; ?>">

Das reicht schon, damit die Seite sich wieder richtig verhält und die Sidebar mit Inhalt korrekt anzeigt.