Support » Allgemeine Fragen » Text über dem Blog hinzufügen

  • Gelöst pilzmart

    (@pilzmart)


    Hallo!

    Ich würde gerne über meiner statischen Seite der letzten Posts noch einen Text bzw. den Inhalt dieser Seite anzeigen lassen. Dies scheint nicht möglich zu sein da nur die letzten Posts gezeigt werden. Wenn jemand Hilfe weiß, vielen Dank!

    PS: Hueman Theme

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Moderator Torsten Landsiedel

    (@zodiac1978)

    Das ist standardmäßig nicht in WordPress vorgesehen.

    Hast Du PHP-Kenntnisse und schon mal was von Child-Themes gehört?

    Gruß, Torsten

    Thread-Starter pilzmart

    (@pilzmart)

    Genau das ist mein Problem, das es standardmäßig nicht geht.

    Ein Child habe ich und das steht in der functions.php aber hat nichts gebracht (Name der Seite mit den latest posts ist blog):

    <?php
    add_action ( '__before_loop', 'add_blog_page_content_before_post_list');
    function add_blog_page_content_before_post_list() {
    if ( is_home() ) {
    $post = get_page_by_path( '/blog' );
    echo wpautop($post->post_content);
    }
    }
    • Diese Antwort wurde geändert vor 6 Jahren, 1 Monat von pilzmart.
    • Diese Antwort wurde geändert vor 6 Jahren, 1 Monat von Torsten Landsiedel. Grund: Code als Code ausgezeichnet
    Moderator Torsten Landsiedel

    (@zodiac1978)

    Welches Theme nutzt du denn? Die Action Hooks sind nicht standardisiert, daher kann es sein, dass dein Theme __before_loop überhaupt nicht anbietet.

    Und bitte Code als Code auszeichnen! Danke.

    Gruß, Torsten

    „… über meiner statischen Seite der letzten Posts …“

    Das ist widersprüchlich formuliert.

    Ich zitiere mal aus dem Codex:

    Eine Webseite kann statisch oder dynamisch sein. Statische Seiten verhalten sich wie eine normale HTML-Seite, die du mit Dreamweaver erstellen kannst.Sie werden einmal erstellt und müssen nicht jedes Mal neu generiert werden, wenn jemand die Seite besucht. Im Gegensatz dazu müssen dynamische Seiten jedes Mal erst neu generiert werden, wenn sie aufgerufen werden; der Code für das, was auf der Seite generiert werden soll, wurde vom Autor festgelegt, nicht aber die eigentliche Seite selbst. Die Seite verwendet umfangreichen PHP-Code, der bei jedem Besuch der Seite ausgewertet wird und so bei jedem neuen Besuch neu generiert wird.

    Halten wir fest: Deine Seite mit den Blogbeiträgen wird durch ein Template dynamisch erzeugt. Um die Ausgabe zu ändern, kannst du also das Template ändern.

    Um nun den Inhalt einer neuen statischen Seite oberhalb der Beiträge auszugeben, erstelle ich zuerst einmal eine neue Seite mit dem Titel „Einleitung“ und füge einen kurzen Begrüßungstext ein.

    Hueman ist etwas komplizierter, da die Templates verschachtelt diverse Funktionen und weitere Template-Parts aufrufen. Um eine Änderung vorzunehmen, musst du also erst einmal das richtige Template ausfindig machen. (Die Plugins Query Monitor oder What the File helfen dir dabei. Wenn ich mir nicht sicher bin, füge ich in Templates einfach kurz eine Zeile <h1>**Hello Dolly!**</h1> ein und schaue, ob sie an der gewünschten Stelle ausgegeben wird.)
    Nach ein wenig Forschen ergibt sich, dass das Template parts/page-title.php die Seitenüberschrift ausgibt. Es wäre also sinnvoll, hier die Einleitung anzuhängen. In einem Child Theme kopiere ich das Template und kann am Ende des Templates eine eigene Funktion einfügen, die nur dann ausgegeben werden soll, wenn die Blogbeiträge angezeigt werden:

    …
        <?php endif; ?>
      </div><!--/.page-title-->
      <?php if ( is_home() ) { 
        echo my_intro( 'Einleitung' );
        } ?>
    <?php endif; ?>
    

    Die Funktion my_intro() füge ich in der functions.php meines Child Themes ein:

    function my_intro( $pagename ) {
      $intro = get_page_by_title( $pagename );
      $out   = '<div class="pad group">';
      $out  .= '<article class="post">';
      $out  .= '<h2 class="post-title entry-title">';
      $out  .= $intro->post_title;
      $out  .= '</h2>'; 
      $out  .= wpautop( $intro->post_content );
      $out  .= '</article>';
      $out  .= '</div>';
      return $out;
    }

    (Die Verkettung lässt sich sicherlich etwas kompakter schreiben; aus „didaktischen Gründen“ habe ich das bewusst ein wenig auseinandergezogen.)

    Damit sollte dann der Inhalt der Seite „Einleitung“ korrekt ausgegeben werden. Wenn du das von den anderen Seiten separieren möchtest, kannst du z.B. auch einen Custom Post Type „Startseite“ mit einem einzigen Beitrag „Einleitung“ erstellen, der dir im Backend in einem eigenen Menü angezeigt wird.

    Noch ein Nachtrag: Vielleicht kannst du deinen Wunsch auch viel leichter umsetzen, in dem du einen Beitrag mit einem Einleitungstext oben anheftest?

    Thread-Starter pilzmart

    (@pilzmart)

    Vielen Dank für die Antworten!
    super Bego, Das mit dem Template war genau das wonach ich gesucht habe.
    Für alle mit dem selben Problem:
    Habe das ganze in parts/post-list-articles.php gehauen um es nach dem Slider über den recent posts stehen zu haben.
    So wurde es akzeptiert:

      </div><!--/.page-title-->
      <?php if ( is_home() ) { 
        echo my_intro( 'blog' );
        } ?>
    

    PS: man kan auch völlig normal in das Template reinschreiben ohne einen Post zu zitieren und dabei mit Hallo Dolly schön prüfen wo man gerade ist 😉

    • Diese Antwort wurde geändert vor 6 Jahren, 1 Monat von pilzmart.
Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Das Thema „Text über dem Blog hinzufügen“ ist für neue Antworten geschlossen.