wie man eine einseitige WordPress-Vorlage mit Twig rendert

Lesezeit: 4 Minuten

Benutzeravatar von Bazinga777
Bazinga777

Ich habe versucht, eine einseitige WordPress-Vorlage mit Twig zu rendern, aber bisher ist alles fehlgeschlagen.

{% extends 'layouts/base.twig' %}

{% block content %} 
    {% for page in pages() %}{{ set_up_page(page) }}                                
        {% include 'content/content-' ~ page.post_name ~ '.twig' %}
    {% endfor %}
{% endblock %}

So sieht eine der Vorlagen aus:

<section id="about" {{ wp.post_class }}>
    <div class="container">
        <div class="row">
            <div class="col-lg-12 text-center">
                <h2 class="section-heading">{{ wp.the_title }}</h2>
                <h3 class="section-subheading text-muted">{{ wp.get_post_meta(wp.get_the_ID() , 'st_page_subtitle', true)  }}</h3> <!-- To be Changed to subtext for title  -->
            </div>
        </div>
        <div class="row">
            <div class="col-lg-12">
             {{ wp.the_content }}
            </div>
        </div>
    </div>

Die entsprechenden Funktionen:

        $wpgetpages = new Twig_SimpleFunction("pages", function() { 

                $currentID = get_the_ID();

                $menu_order = wp_get_nav_menu_items('header');

                $menu_items = array();

                foreach($menu_order as $item) {

                    $menu_items[] = $item->ID;
                }

                $args = array('post_type' => 'page',
                              'status' => 'publish',                                  
                              'exclude'=> $currentID,
                              'orderby' => 'menu_order',                                  
                              'order' => 'ASC'
                           );

                $pages = get_posts($args);

                return $pages;

        });     

        $wpsetpages = new Twig_SimpleFunction("set_up_page", function($arg) {   

                setup_postdata($arg);                       

        });

        self::$twig_environment->addFunction($wpposts);
        self::$twig_environment->addFunction($get_theme_options);
        self::$twig_environment->addFunction($wppostdata);          
        self::$twig_environment->addFunction($wpgetpages);
        self::$twig_environment->addFunction($wpsetpages);  

Dadurch werden die Vorlagen angezeigt, aber es wird der Seitentitel aus der Vorlage als Titel der Startseite festgelegtGeben Sie hier die Bildbeschreibung ein

Wäre wirklich dankbar für jede Hilfe, um dies zu beheben.

  • Es sieht nicht so aus, als hätten Sie den Vorlagencode geteilt, der für die Ausgabe des Seitentitels verantwortlich ist …

    – rnevius

    24. September 2015 um 17:29 Uhr

  • @rnevius Ich habe eine der gerenderten Vorlagen hinzugefügt

    – Bazinga777

    24. September 2015 um 18:18 Uhr

  • Haben Sie versucht, einfach zu verwenden wp.title?

    – rnevius

    26. September 2015 um 20:42 Uhr

  • @Bazinga777 könnten Sie uns das Snippet zur Verfügung stellen (oder hervorheben), das den Code zum Festlegen des Titels enthält?

    – Sitilge

    27. September 2015 um 7:55 Uhr

  • @sitilge wp.the_title ist ein Proxy für die WordPress the_title-Methode. Es ist seltsam, dass der Inhalt der Seiten richtig angezeigt wird, aber nicht die Titel dafür. Ich verwende das folgende Design-Framework github.com/zach-adams/sprig

    – Bazinga777

    27. September 2015 um 8:36 Uhr

Benutzeravatar von sitilge
sitzen

Ich bin mir nicht sicher, ob ich Ihre Frage richtig verstanden habe, aber ich zitiere ein ähnliches Problem

Auf meiner Single-Post-Seite habe ich the_title anstelle von single_post_title verwendet.

Versuchen Sie also, sich zu ändern

<h2 class="section-heading">{{ wp.the_title }}</h2>

zu

<h2 class="section-heading">{{ wp.single_post_title }}</h2>

Siehe auch verwandt:

Deine Frage ist etwas unklar. Aber wenn Ihr Hauptproblem darin besteht, dass alle einzelnen Seiten, die auf dieser einzelnen Seite gerendert werden, die Überschrift “HOME” haben, sollte dies der Fall sein.

Versuchen Sie, dies zu ändern:

<h2 class="section-heading">{{ wp.the_title }}</h2>

dazu:

<h2 class="section-heading">{{ wp.get_post_meta(wp.get_the_ID() , 'title', true) }}</h2>

Wenn es für die Unterüberschrift funktioniert, sollte es auch für den Titel funktionieren.

  • Das ist genau mein Problem, aber ich hatte bereits get_the_ID() für dasselbe getan und es gibt die ID der aktuellen Seite zurück, dh der Homepage. Das hat mich verwirrt.

    – Bazinga777

    27. September 2015 um 15:19 Uhr

  • Welche WP-Version verwendest du? Ich werde versuchen, den Fehler in meiner Dev-Box zu reproduzieren.

    – cb0

    27. September 2015 um 15:45 Uhr

  • Ich bin auf 4.3.1, hier ist der Link zum Thema selbst dropbox.com/s/6wxxkee7k6v8h40/sprig.zip?dl=0

    – Bazinga777

    27. September 2015 um 15:54 Uhr

Wenn Sie versuchen, Twig in einem WordPress-Theme zu verwenden, würde ich dringend empfehlen, ein Plugin namens Timber zu installieren. Es übernimmt einen Großteil der komplizierten WordPress-spezifischen Integration für Sie. Sie haben ein Starterthema, das Sie sich ansehen können, um eine bessere Vorstellung davon zu bekommen, wie Sie Ihr Thema zusammenstellen können: https://github.com/timber/starter-theme

Sie haben auch eine umfassende Dokumentation, die Sie hier finden können: https://github.com/jarednova/timber/wiki

1403760cookie-checkwie man eine einseitige WordPress-Vorlage mit Twig rendert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy