Okay
  Public Ticket #2152519
Eigenes Template auf Basis der index.php
Closed

Comments

  •  4
    Frank started the conversation

    Hallo,

    wie kann ich ein eigenes Template auf Basis der index.php (https://www.zero-waste-helden.de/aktuelles/) erstellen. Ich möchte eine Seite erstellen wo das Layout/Design gleich ist.

    Gruß Frank

  •  73
    Thomas replied

    Hallo Frank,

    das geht m.E. gar nicht mit vertretbarem Aufwand. WordPress hat halt nur eine Loop. Vielleicht ist Marc hierzu aber auch anderer Meinung, ich lasse mich überraschen ...

    Viele Grüße, Thomas

  •  956
    Marc replied

    Hallo Frank,

    magst du näher erläutern, welches Ziel du hast? Die Standard-Loops lassen sich durch eine Querys überschreiben, so dass du grundsätzlich den Inhalt (angepasst) der index.php z. B. in einem Seitentemplate verwenden kannst. So wären dann nur noch kleinere Anpassungen am Layout im Bezug auf WordPress' "blog"-Klasse für die Beitragsseite (index.php) notwendig (oder aber das Hinzufügen dieser Klasse für dieses Template).

    Leider bräuchtest du des Weiteren eine eigene Funktion für die Pagination.

    Viele Grüße
    Marc

  •  4
    Frank replied

    Hallo Marc,

    ganz einfach - Ich möchte in der aktuellen Blog-Ansicht nur eine oder zwei Kategorien anzeigen. Der Rest soll raus. Wenn es einfach geht, dann gerne auf einer neuen Seite mit passendem Template (gleiches Design wie die Blog-Ansicht). Wenn nicht, dann sie ersten Satz.

    Danke Dir,
    Frank

  •  4
    Frank replied

    Hallo Marc,

    fürs erste habe ich mich mit dem Plugin Blog Post Filter (https://de.wordpress.org/plugins/blog-post-filter/) beholfen. Auf https://www.zero-waste-helden.de/zero-waste-helden/ werden jetzt nur bestimmte Kategorien angezeigt.

    Solltest Du noch die große Lösung (extra Seite mit extra Template) für mich haben, dann würde ich mich sehr freuen.

    Danke Dir,
    Frank

  •  956
    Marc replied

    Hallo Frank,

    wenn ich dich richtig verstanden habe, möchtest du die Standard-Beitragsseite gar nicht als solche verwenden. Daher würde ich die Anpassungen tatsächlich über ein Plugin vornehmen lassen oder um ein solches zu verzichten, eigene Query-Parameter in einer index.php innerhalb des Child-Themes hinzufügen.

    Um dies mit einem eigenen Seiten-Template umzusetzen kannst du den Inhalt der index.php z. B. in einem Ordner "page-templates" innerhalb des Child-Themes als "alternative-blog.php" speichern und analog zu den anderen Seiten-Templates die Bezeichnung dessen vornehmen (siehe auskommentierten Bereich am Anfang der Dateien).

    In der alternative-blog.php überschreibst du dann den WordPress-Standard-Loop mit deinem eigenen WP_Query-Objekt mit Code wie dem folgenden:

    $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
    $the_args = array(
        'post__not_in'  => $sticky,
        'posts_per_page' => 4,
        'paged'          => $paged,
    );            
    $wp_query = new WP_Query($the_args);
    if ( $wp_query->have_posts() ) : ?>
    <?php
    /* Start the Standard Loop */
    while ( $wp_query->have_posts() ) : $wp_query->the_post();

    Dies führt unter anderem dazu, dass du die Seiten-Navigation, ohne eine eigene Funktion verwenden zu müssen, nutzen kannst.

    Um das Styling weitestgehend zu erhalten fehlt nur noch die "blog"-Klasse auf dieser Seite, welche du mit folgendem Code (basierend auf obiger Namensgebung der Datei) in der functions.php des Child-Themes setzen kannst:

    add_filter( 'body_class', 'pukeko_add_body_class');
    function pukeko_add_body_class( $classes ) {
        if ( is_page_template( 'page-templates/alternative-blog.php' ) )
              $classes[] = 'blog';
     
         return $classes; 
    }
    

    Viele Grüße
    Marc