Zurück zur Startseite

Wordpress: Statische Inhalte und Artikel auf einer Seite

Bei meiner Recherche im Internet taucht immer wieder der Wunsch auf, statische Inhalte und Blogfunktion auf einer Seite darzustellen. Die Startseite dieses Blogs besteht genau aus dieser Kombination. Die Lösung für diese Anforderung wird auch Bestandteil meines Projektes ” Wordpress als CMS” sein. Darüber werde ich eine kleine Serie schreiben. Jetzt aber zur Umsetzung von statischen Inhalten und Artikeln auf einer Seite.


Zunächst zum Ablauf. Welche Schritte sind notwendig?
1. Erstellung einer statischen Seite, die den Begrüßungstext enthält
2. Die statische Seite wird zur Startseite
3. Etwas Programmierung, ein eigenes Template
4. Das Template wird der statischen Seite zugewiesen

1. Erstellung einer statischen Seite, die den Begrüßungstext enthält

Ich gehe mal davon aus, das die meisten Leser  mit den grundlegenden Funktionen von Wordpress vertraut sind und werde hier nicht weiter auf das Anlegen einer statische Seite eingehen. Also, Seite z.B.  “Home” anlegen und Text eingeben.

2. Die statische Seite wird zur Startseite

Unter Einstellungen > Lesen wird die neu angelegte Seite als Startseite festgelegt.

wp-statischeInhalte-Blog1

Soweit, so gut?
Natürlich nicht! Die Seite erscheint nun als Startseite, aber noch ohne Artikel.

3. Etwas Programmierung, ein eigenes Template

Wordpress verwendet zur Darstellung der statischen Seiten die im Verzeichnis des Themes abgelegte Datei page.php. Das ist Standard und passiert automatisch. Für unsere Darstellung ist die Erstellung eines weiteren Templates notwendig. Als Basis dient die schon genannte Datei page.php, die einfach kopiert und z.B. page-with-news.php abgespeichert wird. Als erstes ändert man die Kommentarzeile oben.

<?php
/*
Template Name: Statische Seite mit News
*/
?>

Möchte man statische Inhalte und die Blogfunktion in einem Template umsetzen so ist der sog. Loop für jedes Element (statischer Inhalt und Artikel) einzeln zu verwenden.

<?php get_header(); ?>
...
...
<div id="content">

  <div id="content-text">
    <?php
    // 1. Loop um den Text der Seite anzuzeigen
    if (have_posts()) : while (have_posts()) : the_post();
    ?>
    <?php the_content(); ?>
    <?php endwhile; ?>
    <?php endif; ?>
    <h4>Aktuelles</h4>
 <div>

 // Blogeinträge abfragen cat=0 sind alle Kategorien, showposts=10 zeigt 10 Artikel an
 <?php query_posts('cat=0&showposts=10');?>

  // 2. Loop für die Artikel
 <?php if (have_posts()) : ?>
 <?php while (have_posts()) : the_post(); ?>
 <div id="post-<?php the_ID(); ?>">
   <h1><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
   <?php the_content(__('weiterlesen...')); ?>
   <?php wp_link_pages('before=<div>&after=</div>&next_or_number=number&pagelink=<span>%</span>'); ?>
   <?php the_tags('<p>TAGS: ', ', ', '</p>'); ?>
   <div>
    <span><?php the_time('l, F jS, Y'); ?></span>
    <span><?php the_category(', '); ?></span>
    <span><?php comments_popup_link(__('No Comments'), __('1 Comment'), __('% Comments')); ?></span>
   </div>
 </div>
 <?php endwhile; ?>
 <?php endif; ?>
</div>
...

...

<?php get_footer(); ?>

4. Das Template wird der statischen Seite zugewiesen

Als letzten Schritt muß das neue Template der statischen Seite zugewiesen werden. Das geht über Seiten > Bearbeiten “Home”  > Quick Edit  > Template auswählen. Hier wird auch klar warum der Kommentar am Anfang des Templates wichtig ist. Er wird im Auswahlmenü angezeigt.

wp-statischeInhalte-Blog2

Nun sollte der statische Text der Seite Home und die Artikelliste zusammen angezeigt werden. So wie z.B. auf der Startseite dieses Blogs.

Montag, September 21st, 2009 Wordpress

TAGS: , , , ,

13 Kommentare to Wordpress: Statische Inhalte und Artikel auf einer Seite

Can
14. Dezember 2009

WICHTIG!!!

zwischen
UND

fehlt ein sonst klappt das nicht und es kommen nur fehler

sonst perfekt genau das habe ich grade gefühlte 100std gesucht aber nirgends gefunden..

konnte zwar über das template dyn. artikel anzeigen aber dann wurde der inhalt der statischen seite nicht mehr angezeigt was ja letztendlich sinnlos ist^^

gruß can

admin
14. Dezember 2009

Hallo Can,
leider konnte ich deinen Kommentar nicht so richtig entschlüsseln. Möglicherweise hattest Du Codebeispiele eingefügt, die dann rausgefiltert wurden. Dennoch habe ich den Fehler gefunden. Nach dem letzen <?php endwhile ?>
fehlt noch ein <?php endif ?>, letzte schließende div-Tag folgt danach nicht davor.
Ich habe das korrigiert. Nun sollte es funktionieren.
Gruß Andreas

Nils
25. August 2010

Hallo,

super Tutorial, genau so etwas suche ich schon länger.
Hab das auch gleich mal ausprobiert und zusätzlich nach deinem letzten endwhile noch die Links für next_posts und previous_posts integriert. Nur leider funktionieren genau die nicht, er spring leider nicht zwischen den Artikel hin und her. Weißt du vielleicht woran das liegen könnte? Wäre für jede Hilfe froh, suche schon seid drei Tagen nach einer Lösung.

Danke und Grüße
Nils

admin
25. August 2010

Hallo Nils,
zunächst ist mir aufgefallen, dass Du next_posts und previous_posts verwendest. Es muss heißen: next_post() und previous_post().

In meinem Tutorial beschreibe ich die Beitragsliste (pages.php). Die o.g. Funktionen werden aber in der Einzelbeitragsansicht (single.php) verwendet.
http://doku.wordpress-deutschland.org/Template_Tags/next_post

Liste und Einzelansicht in einer Seite (bzw. einem Loop) kann eigentlich nicht funktionieren.

Gruß Andreas

Nils
25. August 2010

Hallo Andreas,

erst einmal vielen Dank für deine schnelle Antwort. Aber jetzt hast du mich völlig verwirrt.

Eigentlich wollte ich nur eine Auflistung aller Artikel auf einer statischen Seite nach derem statischem Inhalt darstellen und zwar mit Link zu älteren Artikeln und wieder zu neueren Artikeln. Also eigentlich so, wie du es auch auf deiner Home-Page hast, nur das es bei mir nicht die Home sondern eine andere statische Seite ist.

Geht dies den generell mit Wordpress? Würde halt gern Wordpress als klassisches CMS nützen ohne aber die Artikel-Funktion ganz zu verlieren.

Hast du da vielleicht noch einen Tip für mich?

Grüße

Nils

admin
25. August 2010

Hallo Nils,
verwirren wollte ich Dich eigentlich nicht!

wenn ich das richtig verstehe wolltest Du:

1. Eine statische Seite mit Inhalt und Artikelfunktion.
Hier ist die Lösung ganz einfach. Gehe die Positionen des Tutorials durch
und lasse die Zweite Pos. einfach weg.
In deinem Fall wird deine statische Seite nicht zur Startseite.

2. Links zu älteren und neueren Artikeln
Jetzt verstehe ich, was Du meinst. next_post() und previous_post() sind
hierfür die falschen Funktionen. Diese gehen eben nur in der Einzelansicht.

Für ältere und neuere Artikel in in der Listeansicht benötigst du folgendes
nach endwhile

....
<?php next_posts_link('« Ältere Einträge') ?> <?php previous_posts_link('Neuere Einträge »') ?>

Nils
25. August 2010

Hallo Andreas,

vielen Dank, aber leider funktioniert es immer noch nicht. Bin noch einmal dein Tutorial von vorn durch und habe den zweiten Punkt weg gelassen.

Habe sechs Dummy-Artikel angelegt und lasse mir über query_posts nur drei davon anzeigen. Wenn ich nun auf den Link “Ältere Einträge” klicke, passiert leider gar nichts. Es bleiben immer nur die gleichen drei Artikel stehen.

Verstehe nicht warum, klingt doch alles sehr logisch, was du schreibst. Oder muss ich noch irgend etwas im Backend einstellen? Habe dort halt eine andere statische Seite als Startseite eingerichtet, sollte doch aber kein Problem darstellen, oder?

Grüße

Nils

admin
25. August 2010

Hallo Nils,
Habe das ganze mal mit einer statischen Seite getestet, die nicht die Startseite ist
Test.
Dort findest weitere Infos.

Nils
25. August 2010

Hallo Andreas,

1. Ich hab den ganzen Quelltext in einer seperaten Template-Datei mit dem Namen: page_news.php.
Das Template hat den Namen: News bekommen und wurde der statischen Seite zugewiesen.

2. Im Backend habe ich unter Einstellungen / Lesen die Anzahl der angezeigten Artikel auf 3 reduziert. Und im query_posts habe ich showposts auch auf 3 gesetzt.

Leider funktioniert es nicht, auch wenn ich den query_posts ganz weg lasse, bekomme ich das selbe Ergebnis, die Blätterfunktion zeigt mir nicht die älteren oder neueren Artikel an.

Habe ich da jetzt einen gedanklichen Fehler? Ich verstehe es gerade gar nicht.

Grüße

Nils

Marten
11. September 2010

Hallo Andreas,

danke für das Tutorial. Habe auch interessiert die Kommentar-Diskussion zwischen Dir und Nils verfolgt, da ich genau das selbe Problem habe. Leider ist hier ja keine Lösung zu finden – gibt es denn eine?
Also kann ich die Funktionen ” ” irgendwie auf der page-with-news.php nutzen? Bei mir erscheint immer die Fehlermeldung “Fehler! Die gewünschte Seite ist nicht verfügbar.”

Vielen Dank für eine Antwort.

admin
13. September 2010

Hallo Nils, Hallo Marten,
wenn ich das richtig sehe, get es immer noch um die
Blätterfunktion.

Ich habe mir das Ganze nochmal bei mir angesehen, folgendes ist dabei aufgefallen.

1. Meine Startseite verwedet die besagte page_with_news.php zur Darstellung von statischen Inhalten und den Artikeln. Dort gibt es unten auch meine Blätterfunktion.
mit deutschen Texten (Vorherige und Nächste Artikel). Voraussetzung ist folgendes:


....
<?php next_posts_link('« Ältere Einträge') ?> <?php previous_posts_link('Neuere Einträge »') ?>

2. Wenn ich dann blättere werden bei mir weitere Artikel angezeigt. So weit so gut. Jetzt stehen bei der Blätterfunktion unten englische Texte ?! Das kann eigentlich nicht sein, ausser….. die 2. Artikelseite verwendet nun nicht mehr die page_with_news.php
sondern ein anderes Template!
Genau so ist es auch. Bei mir ist es home.php

3. Vorschläge
a.) Die Blätterfunktion muss auch im anderen Template (home.php) vorhanden sein.
b.) Wenn die statischen Inhalte auch nach dem Blättern angezeigt werden sollen, muß die o.g. Logik auch im anderen Template eingebunden werden.

Ich hoffe, wir sind der Lösung näher gekommen.
Grüsse Andreas

Marten
19. Oktober 2010

Hallo Andreas,

danke für Deine Antwort und sorry für die etwas späte Rückmeldung. Ich hatte mittlerweile den Fehler gefunden. Es lag bei mir daran das im “page-with-news.php” Template unter “showposts” und unter den Einstellungen von Wordpress, wie viele Blogeinträge angezeigt werden sollen, nicht die selbe Anzahl stand. Nachdem beides auf die gleiche Anzahlt gestellt war klappte es.

Allerdings nur so lange, bis ich auf die aktuellste Wordpress Version (3.0.1) geupdatet habe.

Jetzt wird bei Klick auf “ältere Artikel” immer wieder die “page-with-news.php” aufgerufen und nicht mehr die originale “index.php”, die zur Anzeige der älteren Artikel verwendet wurde. (Ich glaube die meintest Du mit home.php oder?)

Hat jemand ähnliche Erfahrungen und Hinweise?

Viele Grüße,
Marten

Michael
21. Dezember 2010

Danke, hat wunderbar geklappt.

Einen Kommentar hinterlassen

Suchen

 

Über Web-aktiv

Als erfahrener Entwickler und Manager von Internetprojekten lege ich mit TYPO3 die technischen Grundlagen für Ihre Website. Aber erst die Ergänzung durch zielgruppenorientierten Inhalt, Suchmaschinen- optimierung, Online-Marketing, Webanalyse und kontinuierliche Arbeit mit der Website führen zum Erfolg.
Andreas Kempf, Web-aktiv
web-aktiv.com

Supporting Member of the TYPO3 Association