dynamicinternet Webdesign

Das Blog

Themen, Tutorials sowie Tipps & Tricks über Webdesign, (X)HTML und CSS, Programmierung, WordPress und was uns sonst noch bewegt.

RSS abonnieren

Post Formats – was ist der richtige Weg?

Die seit WordPress Version 3.1 eingeführten Post Formats erfreuen sich wohl zunehmender Beliebtheit. Dabei stellt sich eine Frage: Wie implementiert man die am besten?

Der mit Verlaub gesagt größte Mist ist im Theme TwentyTen zu finden. Der Loop ist vollkommen unübersichtlich, unterstützt nur 2 Formate (gallery, aside) und rattert bei jeden Aufruf die Schleife durch, um das passende Postformat zu finden. Nicht wirklich performant.

Eleganter gelöst ist das im Theme Toolbox, ebenfalls aus der WordPress-Schmiede. Die Ellen hat sehr schön beschrieben, wie es funktioniert. Leider ist die Variante auch nicht perfekt. Machen wir mal eine einfache Sache, die ich sehr häufig benötige:

<?php
/* Start the Loop */
$i = 0; ?>
<?php while ( have_posts() ) : the_post();
 $i++; ?>
 
        <?php get_template_part( 'content', get_post_format() ); ?>
 
<?php endwhile; ?>

Ich habe einen einfachen Zähler integriert. Jetzt geben wir den Wert des Zählers in dem Template content.php aus:

<header class="entry-header">
<?php echo '$i = ' . $i ?>
</header>

$i hat keinen Wert. Taugt also auch nur bedingt.
Es ist zwar schön, mit kleinen, leicht editierbaren Dateien zu arbeiten. Muß oder möchte man die Funktionalität erweitern, hat man nur die Möglichkeit, die entsprechenden Variablen global zu definieren oder man ist am A….

4 Kommentare
  1. Dein eingebundenes Template arbeitet im Kontext der Funktion get_template_part(). Es darf eine außerhalb dessen deklarierte Variable gar nicht kennen.

  2. Micha sagt:

    Toscho, genau das will ich ja damit aufzeigen. Diese Modularisierung hat hat Grenzen.

  3. Pack den Zähler doch einfach in eine globale statische Klasse. Ansonsten hast du ja ohnehin $i im globalen Kontext – wo es nicht hingehört.

  4. Micha sagt:

    Ja, sowas schwebt mir vor.

Einen Kommentar schreiben