User Tools

Site Tools


de:getsimplede:direkte-unterseiten-mit-textauszug-anzeigen

Direkte Unterseiten mit Textauszug anzeigen

Wir haben hier auf get-simple.de so einige Seiten im Hauptmenü, die im Prinzip Übersichtsseiten sind. Das bedeutet, dass dort eigentlich nur eine Einleitung steht, die dann von Links zu Unterseiten gefolgt wird.

Bislang haben wir diese Übersichtsseite manuell gepflegt, wenn eine neue Unterseite hinzukam. Das bringt gleich mehrere Nachteile mit sich:

  • Die Übersichtseite muss manuell gepflegt werden (sic!),
  • was Zeit kostet und
  • fehleranfällig sein kann

Wir haben nun auf eine automatische Lösung umgestellt, die selbsttätig alle direkten Unterseiten der aktuellen Seite sucht und dann eine Überschrift mit dem entsprechenden Seitentitel und Auszug ausgibt. Wir zeigen Ihnen wie's geht:

Benötigte Plugins

I18N (Navigation), DynPages und Pages Excerpt.

Mit dem Plugin I18N Navigation werden die Unterseiten der Elternseite ermittelt, Pages Excerpts liefert den jeweiligen Seitenauszug und DynPages erlaubt es, den nötigen PHP-Code aus einer Komponente heraus direkt in einer Elternseite aufzurufen. Pages Excerpts ist laut Extend-Repository bis GetSimple 2.03 getestet, funktioniert aber auch mit Version 3.0.

Hinweis: Wenn das Pages Excerpts-Plugin angepasst wird, sind die gemachten Änderungen darin nicht updatesicher. Siehe “Pages Excerpts-Plugin modifizieren” weiter unten auf der Seite. 

Code

<?php
$subpages = return_i18n_menu_data(return_page_slug(), 2, 2,I18N_SHOW_NORMAL);
foreach ($subpages as $slugexcerpt) {
echo  '<h2>'.$slugexcerpt['title'].'</h2>';
echo page_excerpt(''.$slugexcerpt['url'].'',200);
}
?>

Fügen Sie diesen Code in eine neue Komponente ein und vergeben Sie einen für Sie aussagekräftigen Namen. Sie erreichen den entsprechenden Bereich in der Administration über den Reiter Vorlagen → Bearbeite Komponenten.

Ausgabe auf einer Seite

Um die Auszüge nun auf einer Seite auszugeben, nutzen Sie einen Platzhalter, den das DynPages-Plugin zur Verfügung stellt. Durch diesen speziellen Platzhalter ist es möglich, den PHP-Code aus der Komponente in eine Seite einzufügen und ausführen zu lassen. Fügen Sie im Seiteneditor also folgenen Platzhalter ein, an der Stelle, wo Sie die Auszüge platziert haben möchten:

{ % name-der-komponente % }

Ersetzen Sie dabei name-der-komponente durch Ihren selbst vegebenen Namen. Beachten Sie bitte, dass zwischen { und % kein Leerzeichen stehen darf. Um zu verhindern, dass der Platzhalter ausgeführt und damit hier nicht angezeigt wird, haben wir ein Leerzeichen eingefügt.

Erläuterungen

$subpages = return_i18n_menu_data(return_page_slug(), 2, 2,I18N_SHOW_NORMAL);

Über das Plugin I18N (Navigation) wird ein Array gespeichert, das die Namen der direkten Unterseiten der aktuellen Seite ausgibt. In diesem Fall werden nur Unterseiten der 2. Ebene ausgegeben (2, 2), da wir uns in der Seitenleiste mit der Unternavigation der Website befinden. Möchten Sie unsere Lösung für direkte Unterseiten eines Hauptmenüpunktes verwenden, passen Sie bitte die zwei Werte auf 1,1 an.

foreach ($subpages as $slugexcerpt) {
echo  '<h2>'.$slugexcerpt['title'].'</h2>';
echo page_excerpt(''.$slugexcerpt['url'].'',200);
}

Das Array $subpages wird nun für jede gefundene Unterseite durchlaufen und jeweils der Titel als H2-Überschrift ausgegeben sowie ein Seitenauszug mit 200 Zeichen.

Pages Excerpts-Plugin modifizieren

Das Pages Excerpts-Plugin gibt am Ende eines Auszugs standard-mäßig einen englischen “Weiter”-Link aus (“more”), der bislang nur direkt im Plugin selbst geändert werden kann:

Öffnen Sie dazu die Datei pages-excerpts.php im Plugin-Ordner und ändern Sie die Zeile 74 von

$excerpt .= '... <a href="' . $name . '/">more</a>';

in

$excerpt .= '... <a href="' . $name . '/">mehr</a>';

oder einen anderen Text, den Sie für Ihr Projekt für sinnvoll halten.

Weiterhin gibt das Plugin besondere Zeichen im Auszugtext mit einem führenden Backslash aus, was die Lesbarkeit beeinträchtigt: Dies ist ein \“Test\”.

Um dies zu korrigieren, ändern Sie Zeile 76 von

return '<p>' . $excerpt . '</p>';

in

return '<p>' . stripslashes($excerpt) . '</p>';

Wir weisen nochmals darauf hin, dass dies nicht updatesicher ist und Sie somit bei Aktualisierungen des Pages Excerpts-Plugins Vorsicht walten lassen sollten. Wir empfehlen Ihnen, die von Ihnen modifizierte Datei zu sichern, damit Sie sie später wieder hochladen können.

de/getsimplede/direkte-unterseiten-mit-textauszug-anzeigen.txt · Last modified: 2014/05/03 21:23 by Lars