Vorhin habe ich durch Zufall folgende Frage auf t3n entdeckt:
Ich möchte gerne eine kleine Website mit WordPress bauen. Es sind einfache Seiten. Die Artikeloption brauche ich nicht. Die Unterseiten kommen immer mit einem Feld aus in dem Bild/Text steht. Und die Sidebar mit Widgets.
Auf der Startseite allerdings habe ich 3 Spalten die ich mit Text füllen will. Wie mache ich denn das in WordPress?
Also WordPress als “klassisches” CMS mit Page als Startseite und auf der Startseite ist der Inhalt im Gegensatz zum Rest des Inhaltes dreispaltig. Hier meine Antwort:
Die Startseite eindeutig adressieren
[adrotate banner=”19″]
Eine Page (statische Seite) kann man unter Lesen → Startseite als Startseite bestimmen. So eine Startseite ist durch das Conditional Tag is_front_page()
ansprechbar und wird auch durch die Template-Datei front-page.php bedient. Dies habe ich bereits im Artikel WordPress: die Artikelseite ansprechen erklärt.
Mehrspaltiger Inhalt
Da wir jetzt die Startseite fest im Griff haben, geht es nun darum den dreispaltigen Inhalt umzusetzen. Ich habe bereits vor einigen Wochen einen Artikel zum Thema mehrspaltiger Text geschrieben: CSS3: Mehrspaltiger Text. Dort wird nicht nur die CSS3-Lösung vorgestellt sondern es werden in den weiterführenden Links auch Wege gezeigt, wie man dies auch in WordPress umsetzen kann.
Es gibt aber noch (mindestens) zwei weitere Lösungen. Zum einen kann man in die front-page.php drei zusätzliche Widget-Bereiche anstatt den Loop einfügen. Die Widgets sind nicht nur auf die Sidebar oder den Footer beschränkt. Zu diesem Thema empfehle ich folgende drei Artikel:
- Mehrere dynamische Sidebars (Widget-Bereiche) in WordPress
- WordPress: Seiten (Pages) und verschiedene Widgets
- WordPress: die Widget-Ausgabe steuern
Eine weitere Möglichkeit bietet das Plugin Improved Include Page. Diese Erweiterung bietet die Möglichkeit den “nackten” Inhalt einer Page in eine andere oder in eine Template-Datei einzubinden. Es ist etwas komfortabler als wenn man das ganze selber umsetzen würde: man könnte Seiten-Templates ohne Sidebar, Header und Footer erstellen und per Include in die Template-Datei einbinden oder wenn Exec-PHP aktiv ist auch in eine Seite, Artikel oder Widget einfügen.
So weit alles klar? Könnt ihr mir folgen?
Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienstleistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.
Heiko Rabe hat eine Plugin-Lösung dafür, die vielleicht auch passen könnte:
http://wordpress.org/extend/plugins/page-columnist/
Aus meiner eigenen Praxis kenne ich häufig die Anforderung den Inhalt der Spalten separat bestimmen zu können. Es geht also nicht so sehr um einen automatischen Textfluss über 2 oder mehr Spalten, als um eindeutig einer bestimmten Spalte zugehörigen Inhalt.
Im Gegensatz zu “richtigen” CMS bietet WordPress hierfür bisher keine wirklich brauchbare Lösung. Man kann basteln, verlangt vom Kunden dann aber nach meiner Erfahrung zu umständliche Bedienung.
Ich nutze bisher als gerade noch vertretbare Lösung das Plugin
Secondary HTML Content, und hoffe ansonsten, dass der WordPress-Funktionsumfang in nicht alzu ferner Zukunft entsprechend erweitert wird.
@Dirk,
die zwei letzten Lösungen im Artikel (extra Widgets und das Plugin) sind separat und können mit Inhalten die nur einer Spalte angehören gefüllt werden und haben den Vorteil, dass die nur auf bestimmten Seiten zum Einsatz kommen können.
Huhu,
ich brainstorme mal ein wenig los…
Die Lösung der mehrspaltigen Inhalte auf der Startseite per Widgets bzw. eine zusätzlichen Widget Area, haben bisher sehr gut Dienste in meinen Projekten geleistet, insbesondere das Textwidget natürlich. Der Kunde kann so die Spalte frei sortieren per Drag&Drop, allerdings haben sie auch einen großen Nachteil, um eine einfache Verlinkung zu machen muss der Kunde wenigstens ein wenig HTML verstehen und einsetzen können. Ihre Position im Gesamt-Seiten-Layout ist eher fest, da im Theme vordefiniert.
Man kann sich natürlich die wildesten Dinge selber schrauben, viele davon sind jedoch ohne größeren Aufwand nicht mehr mal eben vom Kunden zu bedienen. Gemeint sind Dinge wie in diesem Kommentar zu lesen: Micha zum Thema: Mehrere Dynamische Sidebars in WordPress. Sowas ist natürlich super praktisch, aber welchen Kunden möchte man zumuten Template Dateien zu editieren, dynamisch ist die Lösung vielleicht, praktisch eher weniger, die IDs der Seiten landen ja nit von selber da 🙂 So müsste man bei solchen Lösungen auch immer eine entsprechende Bedienung im Backend bereit stellen, was bei kleinen Projekten doch häufig eher den Budgetrahmen sprengt.
Ich könnte mir noch eine Lösung über Shortcodes vorstellen, bisher noch nicht getestet, aber in Form von
so könnte der Endbenutzer es recht gut in den Seiten steuern, muss sich zuvor jedoch die Seiten ID raussuchen, hätte es aber “bequem” selbst in der Hand. Daraus folgen jedoch weitere Probleme, so müsste man diese Seiten, welche man lediglich in den mehrspalten Inhalten nutzt von der Hauptnavigation ausgeschlossen werden und und und….[spalte IDderSeiteZumEinlesen=34]
Ich weiß bisher nicht was die ideale Lösung ist, aber “flexible Content Elemente” wie in TYPO3 könnten sowas evtl. erleichtern, Dirk Pfuhls Vorschlag erinnerte mich ein wenig daran. Aber auch hier wäre es vermutlich schwer, steuern zu können wo genau sich diese mehrspaltigen Inhalte befinden, klar in der Regel unter dem “eigentlichen” Content, aber was wenn der Kunde sie mitten drin haben will… Alle Lösungen, bis auf die der Shortcodes zum Seitencontent einlesen scheinen mir dieser Anforderungen nicht gerecht zu werden, so es denn überhaupt gewünscht ist. Abgesehen davon, halte ich es für nicht besonders ideal die “Seiten” in WordPress für solche Inhalte zu “missbrauchen”.
Da wären dann noch die Customfields, erscheinen mir am sinnigsten, aber auch hier fehlt die Möglichkeit sie mitten im Content, der Seite auf der sie eingebunden werden, zu steuern – ihre Position ist im Template eher fest.
Das nur mal als Gedanken, vielleicht hier und da nicht zu ende Gedacht, aber ich erhoffe mir evtl. weitere Anregungen und Lösungsvorschläge 😉 Das Problem werden doch mehr haben… ich meine nicht es zu lösen für jemanden der das Template selber entwickelt hat, sondern für Kunden die im WordPress Editor zu Hause sind und nicht in einer IDE.
🙂
1. Einen 3 coloumn shortcode hernehmen und dann auf die seiten verlinken….
2. Das Plugin “Widget Entries” benützen und einen Widgetbereich definieren. Hiermit kann man HTML benützen und dies dann in den Widgetbereich einfügen
3. Custom Post type mit “Custom Post Type UI” oder selber erstellen. Dann per PHP nur immer die letzten 3 Einträge auslesen. Man kann es auch per Taxonomy kategorisieren.
ich sehe da gar kein Problem 😉 Das kann auch ein Redakteur ohne HTML Kenntnisse machen
gruss
Das von Thorsten aufgelistet plugin Page-Columnist, dürfte hier wirklich das beste und am einfachsten zu bedienende Plugin sein. Habe es selbst mehrfach in Verwendung.
Handelt es sich um einen zusammenhängenden text, so kann man JavaScript in Erwägung ziehen und ein ein Page Template mit einem Columnizer Skript basteln: http://welcome.totheinter.net/columnizer-jquery-plugin/
Ich würde auch Shortcodes für eine zweispaltigen Teaser benutzen. Nur würde ich nicht extra die Startseite umadressieren, sondern mittels diesen Scripts (http://www.texto.de/kategorien-startseite-trennen-get-posts-188/) eine Post-Seite auf der normalen index.php einfliessen lassen. Damit kann man auch Spalten erzeugen.
Ansonsten denke ich an folgende Lösung: Costum Fields und diese via Plugin mit TinyMCE versehen und auf der Startseite veröffentlichen. Siehe Script oben.
Eine Frage allerdings: Eigentlich müsste man doch auch ohne das Plugin “Improved Include Page” einfach eine statische Page z.B. auf der Startseite anzeigen können, oder?
Hi!
Ich darf in diesem Zusammenhang vielleicht auf eine Sache hinweisen, an der ich arbeite, die aus genau dieser Problematik entstanden ist.
Am ehesten ist das die Antwort auf die Gedanken von Jürgen Rabe (#4).
Mit fehlt momentan leider etwas die Zeit das Ganze ausführlicher darzustellen, aber ich habe diese kleine Seite zusammengeschustert:
Kontentblocks
Lg
Kai
@Jan
Das Plugin “Improved Include Pages” halte ich für komplett überflüssig, denn natürlich kann man den Inhalt einer bestimmten Seite bzw. jeglicher Posts in vielfacher Form beliebig an jeder Stelle einbinden. Dazu braucht man nur die Funktion WP_Query(). Das folgende Beispiel listet z.b. alle Unterseiten der aktuellen Seite in Teaserform auf:
ID;
$args = array(
'post_type' => 'page',
'post_parent' => $page_ID,
'orderby' => 'menu_order',
'order' => ASC
);
$subpages_query = new WP_Query( $args );
if ( $subpages_query->have_posts() ) : while ( $subpages_query->have_posts() ) : $subpages_query->the_post(); $more = 0; ?>
<a class="more" href="">mehr ...
Deine Idee Custom-Posts mit TinyMCE zu kombinieren ist genau das, was das Plugin “Secondary HTML Content” tut. Aus Kundensicht hat das den großen Vorteil, dass alle separaten Inhaltsblöcke innerhalb einer Seite oder eines Artikels verwaltet werden und nicht durch die Einbindung von Unterseiten.
Mir ist nur immer unwohl, solche grundlegenden Funktionen via Plugin umzusetzen. Denn es gibt dann keine Garantie, dass das mit der nächsten WordPress-Version noch funktioniert.
Sorry, habe die Maskierung vergessen. Hier nochmal der vollständige Code:
<?php
$page_ID = $post->ID;
$args = array(
'post_type' => 'page',
'post_parent' => $page_ID,
'orderby' => 'menu_order',
'order' => ASC
);
$subpages_query = new WP_Query( $args );
if ( $subpages_query->have_posts() ) : while ( $subpages_query->have_posts() ) : $subpages_query->the_post(); $more = 0; ?>
<h3><?php the_title(); ?></h3>
<?php the_content(""); ?>
<p><a class="more" href="<?php the_permalink(); ?>">mehr ...</a></p>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
@Dirk
Vielen lieben Dank für dein Code-Beispiel! Das kann ich sehr gut gebrauchen. Ich versuche nämlich auch soweit wie möglich Plugin frei zu sein. Was oft natürlich gar nicht so einfach ist, wenn man PHP Anfänger ist 🙂
@Kai
Deine Kontentblocks sehen sehr viel versprechend aus. Hoffentlich geht es weiter in der Entwicklung!
@Jan
Hier der Link zur kompletten Dokumentation nebst der Liste der möglichen Argumente für WP_Query().
Die Funktion erlaubt einen sehr weitgehenden Zugriff auf alle Posts in der Datenbank, ein universelles Werzeug zur Steuerung der Ausgabe der Inhalte.
[…] Mehrspaltiger Inhalt auf der Startseite […]
kennt Ihre schon den Generator dafür?
http://www.aaronlumsden.com/multicol/