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: , , , ,

9 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

Einen Kommentar hinterlassen

Suchen