So richtig funktional war das Theme, dass wir im ersten Teil dieser Miniserie gebaut haben ja noch nicht. Ein Blog Theme für Blogengine.NET soll ja nicht nur die Postings auflisten sondern auch einiges an Funktionalität bieten.
Das Template, dass wir bereits haben macht im Grunde nur eins, nämlich anstelle des ContentPlaceholder-Tags Inhalte einfügen. Um mehr Funktionalität nutzen zu können bietet Blogengine.NET eine Reihe von Steuerelementen und Funktionen.
Um diese Funktionen nutzen zu können fügen wir am Anfang des Masterdokuments eine Referenz auf die BlogEngine.NET Klassen ein.
<%@ Import Namespace="BlogEngine.Core" %>
Es gibt eine ganze Reihe nützlicher Klassen, die jetzt direkt verwendet werden können, allen voran die BlogSettings-Klasse. Deren Property “Instance” enthält alle Informationen, die man über sein Blog in Erfahrung bringen möchte. Für unser Beispiel begnügen wir uns erst einmal mit dem Titel und der Beschreibung des Blogs:
<h3><%=BlogSettings.Instance.Name %></h3>
<p><%=BlogSettings.Instance.Description %> </p>
Die Settings-Klasse ist zwar ausgesprochen “gesprächig”, jedoch findet sich nicht alles darin. Für manche Informationen benötigt man eine weitere sehr praktische Klasse namens “Utils”. Eine sehr wichtige Information etwa, die es nur von Utils gibt, ist die Adresse des blogeigenen RSS Feeds:
<a href="<%=Utils.FeedUrl %>">RSS-Feed</a>
Auch wenn es um das Umwandeln von relative in absolute Pfade oder umgekehrt geht oder die Ermittlung des tatsächlichen Hauptverzeichnisses hilft diese Klasse weiter. Besonders wichtig ist hier die Eigenschaft Utils.RelativeWebRoot. Sie liefert die Webadresse des Blogs.
Eine einfache Menüstruktur könnte also beispielsweise so aussehen:
<div id="menu">
<a href="<%=Utils.RelativeWebRoot%> default.aspx">Home</a> |
<a href="<%=Utils.RelativeWebRoot%> archive.aspx">Archive</a> |
<a href="<%=Utils.RelativeWebRoot%> contact.aspx">Contact</a>
</div>
Dieses Snippet rendert eine einfach Linksammlung, die auf die Standard-Seiten verweist, die es in jeder Blogengine.NET Installation gibt. Das sind statische aspx-Seiten, die man im Root findet.
Fassen wir also zusammen:
Unser Theme zeigt alle Postings, sowohl in einer Übersicht als auch in einer Detailansicht mit Kommentaren. Wir haben außerdem ein einfaches Menü eingefügt und Titel- wie Beschreibungstags eingefügt. Die Datei site.master sieht damit jetzt so aus:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="site.master.cs" Inherits="SimpleSite" %>
<%@ Import Namespace="BlogEngine.Core" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server" profile="http://gmpg.org/xfn/11">
<title><%=BlogSettings.Instance.Name %></title>
</head>
<body>
<form runat="server">
<h3><%=BlogSettings.Instance.Name %></h3>
<p><%=BlogSettings.Instance.Description %></p>
<div id="menu">
<a href="<%=Utils.RelativeWebRoot%>default.aspx">Home</a> |
<a href="<%=Utils.RelativeWebRoot%>archive.aspx">Archive</a> |
<a href="<%=Utils.RelativeWebRoot%>contact.aspx">Contact</a> |
<a href="<%=Utils.FeedUrl %>">Feed</a>
</div>
<div id="content">
<asp:ContentPlaceHolder ID="cphBody" runat="server" />
</div>
</form>
</body>
</html>
Im nächsten Teil erweitern wir unser Theme um Controls und Zonen…
Die bisherigen Files als Download
Share or Bookmark this post…