WP Templates: Startseite mit Spezialsektion

Themen: und

Zur Zeit baue ich gerade an einem Wordpress-Template, dass eine besondere Anforderung stellt: auf der Startseite sollen nicht nur die laufenden Blogartikel dargestellt werden, sondern zusätzlich, darüber, ein frei bestimmbarer Artikel. Und trotzd dieser Konstruktion soll man am Ende noch durch die Blogpostings blättern können (“ältere Artikel”) – auf den Folgeseiten soll der zusätzliche Artikel fehlen und eben nur die Blogpostings zu sehen sein.

Zunächst habe ich versucht, das über eins der Sticky-Post-Plugins zu regeln, aber die stellen ja meist nur ein Post innerhalb des normalen Loops nach oben. Zu wenig für die Anforderung, sollen ja mehrere Loops sein, sozusagen. Gelöst hab ich das nun folgendermaßen:

<?php
// holt den letzten Artikel mit dem Custom Field "thema"
// hier wären auch mehrere Artikel vorstellbar
?>
<?php $top = get_posts('meta_key=thema&meta_value=1&numberposts=1'); ?>
<?php if( $top && !$paged) : ?>
<?php
// nur wenn es einen Artikel gibt (sonst nichts zeigen) und
// wir nicht auf paginierten Seiten sind
?>
    <div id="top">
    <?php foreach($top as $post) : setup_postdata($post); ?>
        <?php
        // warum nicht mal foreach statt while ??? ;)
        ?>
        <?php $top_post_id = $post->ID; ?>
        <?php
        //$top_post_id zur Verwendung weiter unten
        ?>
        <div class="toparticle">
            <?php
            // ganz normaler Loop-Kram hier...
            ?>
            <?php the_content(); ?>
        </div>
    <?php endforeach;?>
    </div> <!-- /#top -->
<?php endif; ?>
<?php
// erster "Loop" durch, auf zum nächsten
?>
<?php query_posts(array('showposts'=>10, 'paged'=>$paged)); ?>
<?php
// holt 10 Posts, ggf. auch paginiert
?>
<?php if (have_posts()) : ?>
<div id="articles">

    <?php while (have_posts()) : the_post(); ?>
    <?php if( $post->ID == $top_post_id ) continue; ?>
    <?php
    // $top_post_id von oben, überspringt
    // das Posting das schon oben drüber steht
    ?>
    <div class="post" id="post-<?php the_ID(); ?>">
        <!-- [alles normal von hier ab usw. usf. ...] -->
    </div>
    <?php endwhile; ?>

    <div class="navigation clearfix">
        <div class="alignleft"><?php next_posts_link('&laquo; &Auml;ltere Eintr&auml;ge') ?></div>
        <div class="alignright"><?php previous_posts_link('Neuere Eintr&auml;ge &raquo;') ?></div>
    </div>

</div> <!-- /#articles -->
<?php endif; ?>

Kriege ich bitte sofort mein Smarty wieder zurück? Schlimme Tagsuppe, das.

Noch keine Kommentare.

Datenschutzhinweis

Daten die in dieses Formular eingegeben werden, werden mit Hilfe des Dienstes welcomments.io verarbeitet. Dabei fallen die in der Datenschutzerklärung dieses Dienstes aufgeführten Daten (IP-Adresse, Browserversion) an, die dort auch gespeichert werden. Gebe keine persönlichen Daten in dieses Formular ein, im Zweifelsfall nutze einen Spitznamen, alles eingegebene wird hier öffentlich angezeigt. Es werden keine Cookies gespeichert, lediglich der Kommentartext wird im Localstorage des Browsers zwischengespeichert.

GitHub-flavored Markdown und einfache HTML-Tags werden unterstützt.

Hinweis…

Diese Seite enthält Videos von Youtube. Diese sind standardmäßig deaktiviert. Falls Du unten auf „Ja“ klickst, werden Daten von Youtube auf Deinen Rechner geladen und so mindestens Deine IP-Adresse an Youtube weiter gegeben. Cookies werden nicht verwendet. Mehr Infos.

Möchtest du Youtube auf dieser Seite aktivieren?