Vergleiche für bedingte Generierungen
02.04.2005
Wenn Sie damit begonnen haben, die Vorlagen des Movable Type Ihren Vorstellungen entsprechend anzupassen, werden Sie sich vermutlich darüber ärgern, dass die Möglichkeiten der Programmierung über die Tags etwas beschränkt sind. Oftmals möchte man Bedingungen formulieren, und das Aussehen einer generierten HTML-Datei variabel gestalten. Movable Type kann dies nicht gut unterstützten. Aber es gibt ja für fast alles ein Plugin.
Wofür braucht man Bedingungen?
Ich habe dieses Weblog so gestaltet, dass der Titelbereich eines Eintrags aus zwei Teilen besteht. Links befindet sich der eigentliche Titel, rechts steht das Datum der Erstellung.
![]()
Bei einigen Artikeln möchte ich gerne, dass kein Datum erscheint. Dies soll zum Beispiel bei der Hilfe-Seite so sein.
![]()
Wie sieht die zugehörige Vorlage aus?
Die Vorlage, um in meinem Weblog eine Überschrift zu erzeugen, sieht im Wesentlichen wie folgt aus.
<div class="head">
<h1 id="a<$MTEntryID pad="1"$>"><$MTEntryTitle$></h1>
<p><$MTEntryDate format="%A, %e. %B %Y"$></p>
</div>
Dort wird ein div-Tag generiert, in welchem sich der Titel des Eintrags als h1-Tag und das Veröffentlichungsdatum als p-Tag befindet. Durch CSS werden diese so gestaltet, dass ein blauer Hintergrund entsteht und dass das Datum nach rechts verschoben wird.
Eigentlich sieht die Aufgabenstellung ganz einfach aus. Um das Datum zu unterdrücken, muss halt nur dafür sorgen, dass in bestimmten Situationen die dritte Zeile übersprungen wird. Theoretisch ganz einfach. Nur Movable Type unterstützt derartige Fallunterscheidungen nicht.
Ein Plugin als Hilfe
Es gibt das so genannte Compare Plugin, mit welchem man umfangreiche Möglichkeiten zur Gestaltung von Fallunterscheidungen erhält. Das Plugin ist kostenlos und einfach zu installieren.
Nachdem Sie das Plugin über den obigen Verweis heruntergeladen haben, kopieren Sie die darin befindliche Datei »compare.pl« in das Verzeichnis »plugins« Ihrer Movable Type Installation auf dem Server. Bereits durch diesen einfachen Kopiervorgang ist die in der Datei befindliche Funktionalität dem Movable Type bekannt.
Das Compare Plugin stellt eine Reihe von Tags zur Codierung von Fallunterscheidungen bereit. Die vollständige Liste können Sie der Dokumentation entnehmen. Ich will hier nur aufzeigen, wie ich die Anzeige des Datums unterdrücke.
Wenn das Erstellungsdatum eines Eintrags nicht angezeigt werden soll, dann gebe ich als Wert den 01.01.2005 ein. Dies ist ein Datum, welches ansonsten in der Datenbank nicht vorkommt. Innerhalb der Vorlage erweitere ich dann den obigen Code wie folgt.
<div class="head">
<h1 id="a<$MTEntryID pad="1"$>"><$MTEntryTitle$></h1>
<MTIfNotEqual a="[MTEntryDate format='%d.%m.%Y']"
b="01.01.2005">
<p><$MTEntryDate format="%A, %e. %B %Y"$></p>
</MTIfNotEqual>
</div>
Sicher erkennen Sie, dass das p-Tag für das Erstellungsdatum mit einem MTIfNotEqual-Tag umrahmt wurde. Dazu gehört ein Start-Tag mit zwei Parametern »a« und »b« sowie das obligatorische Ende-Tag. Die Arbeitsweise geht bereits aus dem Namen hervor: wenn die beiden Ausdrücke nicht gleich sind, wird der innere Teil ignoriert und somit dann das Erstellungsdatum nicht hinzugefügt.
Die Art und Weise, wie die Bedingung codiert wird, ist auf den ersten Blick etwas gewöhnungsbedürftig. Sie ist aber XML-konform und somit in die generelle Vorgehensweise im Movable Type integriert. Man "übergibt" an das Tag zwei Parameter, eben die linke und die rechte Seite des Vergleichs. In unserem Beispiel ist die rechte Seite eine Konstante.
b="01.01.2005"
Und die linke Seite sieht ungefähr wie ein normales Movable Type Tag aus.
a="[MTEntryDate format='%d.%m.%Y']"
Die Auswertung dieses Ausdrucks, nämlich das Formatieren des Erstellungsdatums, wird vom zunächst einmal vom Compare Plugin übernommen. Dieses bedient sich dann wiederum der Basisbibliotheken, aber es zunächst einmal wird es als reiner Text vom Plugin aufgenommen. Damit der normale Generierungsvorgang versucht, dies als Tag zu interpretieren, sondern als Parameter dem MtIfNotEqual übergibt, müssen die syntaktischen Elemente geändert werden. Aus den spitzen Klammern werden eckige Klammern, und aus den doppelten Hochkommata wird ein einzelnes Hochkomma.
Um also für einen Eintrag das Erstellungsdatum zu unterdrücken, muss ich lediglich das Datum auf den 01.01.2005 setzen. Die anschließende Generierung sorgt dafür, dass die zugehörige HTML-Sequenz nicht in die erzeugte Datei übernommen wird.
mgs | 02.04.2005
Feedback erwünscht!
Wie fanden Sie den Eintrag? Interessant? Langweilig? Ich freue mich über Ihren Kommentar. Wenn Ihnen der Eintrag geholfen hat, setzen Sie doch einen Link auf http://www.movable-type-weblog.de/.
Bitte keinen Spam
Um das Weblog vor Spam zu schützen, wird das MT-Approval Plugin eingesetzt. Sie müssen einen neuen Kommentar zunächst in der Vorschau ansehen, bevor dieser auf dem Server gespeichert werden kann. Ferner wird ein Kommentar erst gesichtet, bevor er freigegeben wird. Näheres finden Sie in meinem Artikel Weblog Spamming Grundlagen, wo einige Schutzmaßnahmen skizziert werden.
Wenn Sie sich an TypeKey angemeldet haben, wird Ihr Kommentar automatisch freigegeben.
Neuen Kommentar schreiben
TypeKey wurde an dieser Stelle vorübergehend deaktiviert. Erstellen Sie Ihren Kommentar bitte ohne TypeKey oder melden Sie sich im Vorschau-Dialog an.

