WordPress: Posts in statischen Seiten

19. November 2007 Kategorie: WordPress Stichworte: ,

Aus fest mach dynamisch: Du möchtest auf statischen Seiten verschiedene Beiträge aus diversen Kategorien darstellen? Mit allen Funktionen, wie Blättern, Weiterlesen etc.? Nichts leichter als das! Doch warum das Ganze? Statische Seiten haben den Vorteil, das sie über template-tags individuell angepasst werden können und nicht unbedingt der Standardvorlage folgen müssen. Und so gehts:

1. Schritt – Seitenvorlage erstellen -

Öffne eine neue, leere php Datei und füge folgenden Code ein:

< ?php
/*
Template Name: beliebiger Vorlagenname
*/
?>
 
< ?php get_header(); ?>
 
      < ?php query_posts('posts_per_page=6&cat=XXX&paged='.$paged); ?>
      < ?php if (have_posts()) : ?>
 
      <h3>&rarr; < ?php the_title(); ?></h3>
      < ?php previous_posts_link('&lt;&lt; Seite') ?>
      < ?php next_posts_link('Seite &gt;&gt;') ?>
 
      < ?php while (have_posts()) : the_post(); ?>
 
      <h3><id ="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link zu: < ?php the_title(); ?>">
      < ?php the_title(); ?></a></id></h3>
 
      <div class="entry">
      < ?php the_content(); ?>
      </div>
 
		< ?php endwhile; ?>
 
	< ?php else : ?>
 
  		< ?php include (TEMPLATEPATH . "/searchform.php"); ?>
 
	< ?php endif; ?>
 
< ?php get_sidebar(); ?>
 
< ?php get_footer(); ?>

Hinweise:

Wähle einen Vorlagennamen aus und ersetze den von mir geschriebenen Platzhalter.

Ermittle die id(s) DEINER Kategorie(n), die Du auf der Seite abbilden willst und trage sie durch Komma getrennt in Zeile 9 für die XXX ein. Etwa so:

< ?php query_posts('posts_per_page=6&cat=10&paged='.$paged); ?>

oder

< ?php query_posts('posts_per_page=6&cat=10,11,17&paged='.$paged); ?>

Bisher ist die Kategorieauslese umgesetzt, die Blätterfunktion erhalten (durch den .$paged Zusatz in Zeile 9) und die Vorlage für WordPress lesbar.

2. Schritt – die “more”-Funktion zum Laufen bringen*

Wenn man dynamische Inhalte auf statische Seiten überträgt, geht das nicht ohne “Verluste”. Bislang sind wir soweit, dass die Beiträge zwar ausgelesen werden, aber komplett abgebildet werden. Wo ist der more bzw. weiterlesen Link? Abhilfe schafft diese winzige, aber zwingend notwendige Variablenzuordnung:

Ergänze jetzt

< ?php get_header(); ?>

durch

< ?php get_header(); ?>
< ?php global $more; $more = 0; ?>

Hinweis:
$more = 0 bewirkt, dass die Weiterlesen-Links angezeigt werden!
$more = 1 bewirkt das Gegenteil! Alle posts werden komplett ausgegeben, ohne gekürzte Passagen, wo der more-Link gesetzt wurde!

Fertig ist eine volltüchtige “index.php” im statischen Gewand.

* Danke an Monika vom WordPress Deutschland Team für diesen wichtigen Befehl! Er erspart immerhin ein ganzes plugin.

3. Schritt – Feintuning

Die Metaangaben, wie Kommentare, Datum, Author etc. zu jedem post können natürlich innerhalb des loops überall platziert werden. So in etwa:

<hr />
< ?php the_time('d.m.Y') ?>   < ?php comments_popup_link('Kommentar dazu?', '1 Kommentar', '% Kommentare'); ?>

CSS Styles sind auch beliebig neu verwendbar und exakt an dieser Stelle schließt sich der Kreis. Man kann Beiträge gezielt aus einer Kategorie darstellen und über die Vorlage noch “kategorietypische” Elemente, wie Bilder oder Farben hinzufügen.
Speichere diese Datei als deinvorlagenname.php im theme Ordner ab.

4. Schritt – Vorlage statischer Seite zuweisen

Als Letztes musst Du nur noch in den Adminbereich wechseln, eine neue Seite anlegen (Titel reicht aus!) und rechts im Menü die eben gespeicherte vorlagen.php anwählen. Veröffentlichen. Fertig :-) Jetzt stellt page_id=XXX alle Beiträge aus Kategorie(n) X dar, so wie die index.php. Im Admin-Center könnte man auf diese Weise sogar eine solche statische Seite als Startseite definieren. Der Kreativität sind keine Grenzen gesetzt.

Fragen? Probleme? Alles prima?

Schreibe Deinen Kommentar




Spam?
gängiges XHTML erlaubt, max. 2 Links

46 Kommentare:

  • Hallo!
    Blöde Frage, aber wo wähle ich die angelegte Vorlage bei der Erstellung einer neuen Seite aus??? Bei mir gibt es dort rechts keine Auswahl von Vorlagen. :(
    Hat einer vielleicht einen Screenshot?

    • Hallo Matze,
      wenn Du im Admin-Bereich eine Seite bearbeitest, siehst Du rechts die Funktion “Attribute”. Dort kannst Du die “Eltern” (=Hierachie), die “Templates” (=Vorlagen)und die Reihenfolge bestimmen. Wähle also bei “Templates” im Menu Deine Vorlage aus, speichern, fertig :-) That´s all. LG

  • und wo ist jetzt der inhalt der seite?

    sehe jetzt nur noch die dyn. artikel wollte darüber aber noch den inhalt der statischen seite haben oder geht das nicht?

    lg can

    • Das geht meines Wissens nicht, da Du Dich für einen loop entscheiden musst. Man kann aber beliebig viele loops der dyn. Artikelauslese nacheinander schalten. Das ermöglicht bspw. die sortierte Anzeige der Artikel auf stat. Seiten auf Kategoriebasis. LG!

  • Hallo Daniel,

    vielen Dank erstmal für die Anleitung! Genau das, wonach ich so lange gesucht habe! Leider funktionierts bei mir nicht. Hab den Code kopiert und die vorlage.php erstellt, genauso wie oben beschrieben. Dann hab ich eine Seite in Wordpress erstellt und als Template “vorlage” rechts im Menü ausgewählt..soweit so gut. Nur leider, krieg ich beim aufrufen der Seite folgende Fehlermeldung auf weißem Untergrund:

    Parse error: syntax error, unexpected T_STRING in /var/kunden/webs/webs****/wp-content/themes/Theme1/vorlage.php on line 35

    • Hi Jörg,

      hast Du nach dem Kopieren die Leerzeichen zwischen den “<” und den “?php” entfernt? Ansonsten schicke mir mal Deine vorlage.php an mail[at]danieljaeger.de und ich richte Dir das, ok?

      LG!

    • Hi Daniel,

      danke für den Tipp! Habs jetzt hinbekommen. Hatte 2 Fehler:

      1. Leerzeichen zwischen < und ?php …
      2. Das Ganze einfach nur per FTP hochgeladen! Da hats mir total das Skript verhauen, wie ich durch einen Blick in den Theme EDITOR sehen konnte..

      Also am besten das Ganze per Theme Editor checken und nicht auf den Texteditor und die Richtigkeit des FTP Uploads vertrauen..

      Danke nochmal!

  • Zue

    Bei mir steht oben auf der Seite immer wenn ich da drauf klicke erscheint dann die Seite so wie sie sein soll!
    Was hab ich falsch gemacht?
    Gruß

  • Christian Schuster

    Hi, guten Morgen, Du bist ja unglaublich – was hältst Du davon, wenn ich Dir 20 Euro überweise und Du implantierst mir Deine oben angeführte Konfiguration in mein Template? Demnach tut es das was ich suche: Pro stat. Seite mehrere Beiträge mit Kommentarfunktion, Kategorienzuordnung alles auch als Teil der Suchoption?!

    Meldest Du Dich

    Gruß aus Blackforest
    CSchuster

  • Ben

    genau dies &paged=’.$paged) hat mein leben gerettet danke dir 1000000 fach

  • Also nochmal: ihr müsst dieses Tutorial natürlich um eure EIGENEN Div und style Anweisungen erweitern, denn die unterscheiden sich ja von Theme zu Theme. Tipp: Schaut Euch mal die Original Dateien aus eurem Theme an (vgl dazu index.php oder archive.php) und dann “übertragt” ihr die styles in meinen code – absprdichern und sehen, ob sich was tut :-) Ansonsten mir mal Eure Dateien schicken, ich erledige das. Hab ich schon paar mal gemacht und dauert 2 Minuten – ihr seht, das ist echt ´ne Mini-Selbstarbeit.