Umlaufende Kontextspalten
Flexible Sidebar
Diese Lösung funktioniert nur mit web2date bzw. shoptodate von Data Becker. Die vorgestellte Lösung kann auch nur auf die neueren XML-FLoat-Designs angewendet werden. Tabellenbasierte Layouts lassen sich nicht einfach umgestalten.
Alle Codes der nächsten Seiten sind ungetestet und sollen nur die Syntax erklären, und keine nutzbaren Code-Schnipsel für eine Anwendung sein. Es gibt keinen Support für dies Codes.
Der Umbau erfolgt in der Datei navigation.ccml. Am Ende der Datei sollte folgender Code (hier Beispiel NY) zu sehen sein :
<h3><cc:print value="&site.ressource.common">:</h3>
<p><a href="<cc:print value="&home.url">"><cc:print value="&site.ressource.home"></a></p>
<cc:loop type="commonpages" obj="mycommonpage">
<p><a href="<cc:print value="&mycommonpage.url">">
<cc:print value="&mycommonpage.caption"></a></p>
</cc:loop>
</div>
<div id="content">
<cc:print value="&page.content.text">
</div>
<cc:if cond="&sidebar.count gt 0">
<div id="sidebar">
<cc:loop type="sidebar" obj="mysidebar">
<cc:if cond="&mysidebar.caption">
<h2><cc:print value="&mysidebar.caption"></h2>
</cc:if>
<cc:print value="&mysidebar.text"><br/>
</cc:loop>
</div>
</cc:if>
</body>
</html>
Dieser Text wird so umgebaut, dass nicht zuerst der Seiteninhalt und dann die Sidebar ausgegeben wird, sondern sofort die Sidebar. Dies erfolgt solange, bis in der Kontextspalte ein Absatz kommt, der "#Seite" als Titel trägt. In diesem Moment wird die linke Navigationsspalte geschlossen, die Seite ausgegeben und die restlichen Kontextspalteninhalte in der richtigen Kontextspalte ausgegeben.
<h3><cc:print value="&site.ressource.common">:</h3>
<p><a href="<cc:print value="&home.url">">
<cc:print value="&site.ressource.home"></a></p>
<cc:loop type="commonpages" obj="mycommonpage">
<p><a href="<cc:print value="&mycommonpage.url">">
<cc:print value="&mycommonpage.caption"></a></p>
</cc:loop>
<cc:loop type="sidebar" obj="mysidebar">
<cc:if cond="&mysidebar.caption='#Seite'">
</div>
<div id="content">
<cc:print value="&page.content.text">
</div>
<div id="sidebar">
<cc:else>
<cc:if cond="&mysidebar.caption">
<h2><cc:print value="&mysidebar.caption"></h2>
</cc:if>
<cc:print value="&mysidebar.text"><br/>
</cc:if>
</cc:loop>
</div>
</body>
</html>
Damit wird die existenz einer Kontextspalte und eines Absatzes mit Titel "#Seite" unmittelbar zur Pflicht. Natürlich kann man den Code erweitern, dass auf Seiten ohne Kontextspalte der Inhalt über die gesamte Seitenbreite ausgegeben wird. Ebenso gibt es vermutlich den Bedarf für die links Spalte noch Styles zu definieren, weil die Spaltenbreite links und rechts anders ist.
Aber das war es dann schon.
Dieser Tipp läßt sich dann mit dem Thema "individuelle Kontextspalten für Unterseiten" kombinieren.