FAQ: Kategorie auf der Startseite verstecken

Frage

Ich habe in meinem Weblog eine Reihe von Kategorien. Diese werden alle auf der Startseite aufgeführt. Ich möchte aber eine bestimmte Kategorie unterdrücken. Wie geht das?

Antwort

Die Startseite basiert auf der Vorlage »Haupt-Index«. Wir müssen diese Vorlage verändern, um eine Kategorie verschwinden zu lassen.

Wenn Sie den Begriff »Haupt-Index Vorlage« nicht kennen, dann schauen Sie sich doch am besten den Artikel FAQ: Warum so viele Vorlagen? an. Weiterhin werden wir das Compare Plugin benötigen. Wenn Sie dieses nicht kennen, oder aber es noch nicht installiert haben, dann lesen Sie doch bitte Vergleiche für bedingte Generierungen.

Öffnen Sie Ihr Movable Type Projekt. Klicken Sie auf »Vorlagen« in der linken Navigationsleiste. Eine Liste von Vorlagen wird angezeigt. Klicken Sie auf die »Haupt-Index Vorlage«. Im folgenden Dialog wird der Vorlagentext angezeigt. Das ist derjenige Code, welcher die Grundlage für das generierte HTML bildet.

Blättern Sie nach unten, bis Sie die folgenden Zeilen sehen.

<div id="categories">
<h2>Categories</h2>
<MTSubCategories>
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a>
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse max_depth="3">
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
</div>

Diese Zeilen sind für die Erzeugung der Kategorienliste rechts auf der Startseite verantwortlich. Es ist ein rekursiver Lauf durch alle Kategorien.

Wenn Sie daran interessiert sind, folgen nun einige Anmerkungen zu dem Code. Sie können diese Liste aber auch überspringen, wenn Sie lediglich an der Antwort auf die Frage interessiert sind.

  • Ein div-Tag wird erzeugt. Seine ID ist "categories", welche Sie im CSS finden können.
  • Der Text "Kategorien" wird als h2-Tag ausgegeben.
  • Das MTSubCategories startet eine Schleife. Es durchläuft alle Kategorien, wobei auf der obersten Ebene gestartet wird.
  • Nur wenn die Kategorie die erste Kategorie auf der aktuellen Ebene ist, wird das ul-Tag ausgegeben.
  • Es folgt ein Vergleich. Dabei wird geprüft, ob die Kategorie überhaupt Einträge besitzt.
  • Wenn Einträge existieren, wird die Kategoriebezeichnung als a-Tag in einem li-Tag ausgegeben. Der Verweis kann genutzt werden, um zum Kategorie-Archiv zu springen.
  • Wenn keine Einträge existieren, wird die Kategoriebezeichnung als einfacher Text in einem li-Tag ausgegeben. Weil es für die Kategorie keine Einträge gibt, wird es auch kein Kategorie-Archiv geben. Also benötigen wir auch kein a-Tag.
  • Wir gehen dann in der Hierarchie der Kategorien einen Schritt tiefer. Eventuell hat die Kategorie Unterkategorien. Wenn dem so ist, wird die Schleife erneut gestartet - diesmal mit der ersten Unterkategorie der aktuellen Kategorie.
  • Das li-Tag wird geschlossen.
  • Wenn dies die letzte Kategorie auf der aktuellen Ebene ist, wird auch das ul-Tag geschlossen.
  • Das div-Tag wird geschlossen.

Als Beispiel wollen wir den Code so abändern, dass die Kategorie "Drucker" übersprungen wird. Um das zu erreichen, müssen wir den Hauptteil des obigen Abschnitts mit einer Bedingung umrahmen: nur genau dann, wenn die Kategoriebezeichnung nicht "Drucker" ist, soll die Kategorie berücksichtigt werden.

Die Änderung ist minimal. Ich habe sie mit Fettschrift markiert.

<div id="categories">
<h2>Kategorien</h2>
<MTSubCategories>
<MTIfNotEqual a="[MTCategoryLabel]" b="Drucker">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a>
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse max_depth="3">
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTIfNotEqual>
</MTSubCategories>
</div>

Wenn Sie mehrere Kategorien hätten, die übersprungen werden sollen, müssen Sie lediglich das MTIfNotEqual-Tag sowie das zugehörige schließende Tag duplizieren.

...
<MTIfNotEqual a="[MTCategoryLabel]" b="Drucker">
<MTIfNotEqual a="[MTCategoryLabel]" b="Monitore">
...
</MTIfNotEqual>
</MTIfNotEqual>
...

Hierdurch schachteln wir einen Vergleich in einen anderen Vergleich und drücken damit aus: wenn die Kategorie nicht "Drucker" und auch nicht "Monitore" ist, dann tue das Folgende.

mgs

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.




Angaben speichern (Cookie)?