Sep
17
2010

Ging es im ersten Teil dieser Miniserie noch um die grundsätzliche Anatomie eines BE.NET Themes und in Teil zwei dann schon um ein paar grundlegende Klassen, will ich mir heute die Controls, die BE.NET bereitstellt genauer anschauen…
Zur Erinnerung: Unser Code nach dem letzten Teil war dieser hier. 
Im Grunde könnte man mit diesem Stand und den Klassen in BE.NET bereits vollständige Themes bauen. Allerdings gibt es natürlich Aufgaben, die typisch für Blogs sind und sich daher zur Kapselung und Wiederverwendung besonders eignen.
Genau dafür bieten sich ASP.NET Controls an. Einen Überblick über die verfügbaren Steuerelemente bekommt man in dem Verzeichnis App_Code\Controls.
Im Quelltext sind die denkbar einfach verwendet. Immer vorausgesetzt, in den Themedateien in denen man sie einsetzen möchte findet sich am Anfang ein Import-Statement wie dieses hier
<%@ Import Namespace="BlogEngine.Core" %>
lassen sich Controls im ASP.NET Quelltext ganz einfach einbinden. Um etwa an einer beliebigen Stelle eine TagCloud einzubinden reicht folgende Zeile Code im ASP.NET Quelltext:
<blog:TagCloud ID="mytagcloud" runat=server />
Erweitern wir also unser Theme um ein paar Funktionen durch eine kleine Änderung in der site.master:
Statt
<div id="content">
<asp:ContentPlaceHolder ID="cphBody" runat="server" />
</div>
verwenden wir jetzt
<div id="content">
<table width="100%">
<td width="50%"><asp:ContentPlaceHolder ID="cphBody" runat="server" /></td>
<td>
<blog:TagCloud ID="mytagcloud" runat=server />
<blog:PostCalendar ID="mycalendar" runat=server />
</td>
</table>
</div>
Schon haben wir einfache Controls verwendet und unser Theme funktionaler gemacht.
Im nächsten Teil werden wir dann das Zonen-Konzept in Blogengine.NET einführen und unser Theme ein klein wenig flexibler machen.