In Hugo gibt es eine sehr nützliche Funktion zum Rendern mehrerer Teile basierend auf Bedingungen. Mit dieser Funktion können wir bestimmte Teile der Seite basierend auf bestimmten Situationen oder Bedingungen ein-/ausblenden. Unabhängig davon, ob wir eine statische oder eine dynamische Website erstellen, kann uns diese bedingte Rendering-Funktion dabei helfen, die Darstellung der Seite flexibler zu steuern. In diesem Artikel werde ich mit Ihnen besprechen, wie Sie das bedingte Rendern mehrerer Teile in Hugo und seine Verwendungsszenarien implementieren.
Ich möchte alle Markdown-Dateien in jedem Ordner mit Ausnahme der statischen Dateien auf der Homepage der Website rendern. Eine Möglichkeit besteht darin, Union in Hugo zu verwenden, aber mit zunehmender Anzahl von Ordnern habe ich festgestellt, dass dies der Fall ist Ich habe Union überall wiederholt (der Code mit Union ist auskommentiert und funktioniert übrigens), also dachte ich, die Verwendung von Slices wäre eine bessere Idee, aber wenn ich versuche, Slices zu verwenden, erhalte ich die folgende Fehlermeldung:
Seite konnte nicht gerendert werden: „home“ Rendering fehlgeschlagen: „(Verzeichnispfad)layoutsindex.html:12:19“: Ausführung der Vorlage unter <.pages> fehlgeschlagen: Feldseite im Zeichenfolgentyp konnte nicht ausgewertet werden
Verzeichnisstruktur
index.html-Code
{{ define "main" }} <ul class="homepage-topic-sections-container"> {{$sectionNames := slice "posts" "problems" "tutorials"}} {{range $index, $sectionName := $sectionNames}} {{ range where .Pages "Section" $sectionName }} {{/* {{ range union (union (where .Pages "Section" "posts") (where .Pages "Section" "problems")) (where .Pages "Section" "tutorials") }} */}} <li> <section class="homepage-topic-section"> <h1 class="topic-heading"><a href="{{.Permalink}}">{{.Title}} </a></h1> <div> {{ range .Pages }} <h3><a href="{{.Permalink}}">{{.Title}} · {{.Date.Format "January 2, 2006"}}</a></h3> {{ end }} </div> </section> </li> {{end}} {{end}} </ul> {{ end }}
//m.sbmmt.com/link/1330fef5fe4f742c1918c585c2da13b3一个>:
Das am meisten übersehene Konzept bei Go-Vorlagen ist, dass sie immer auf den aktuellen Kontext verweisen. {{ . }}
Auf der obersten Ebene der Vorlage ist dies der Datensatz, der für die Verwendung durch die Vorlage verfügbar ist.
{{ . }}
Im Code unten, {{ define "main" }} <ul class="homepage-topic-sections-container"> {{$sectionnames := slice "posts" "problems" "tutorials"}} {{range $index, $sectionname := $sectionnames}} {{ range where .pages "section" $sectionname }} ^^^^^^
Eine mögliche Lösung ist die Verwendung von .pages
中的点具有第一个 range
操作中当前项目的值。该值的类型是字符串,并且它没有字段 pages
。这就是为什么它失败了,execute of template failed at <.pages>: can'tvaluate field pages in type string
.
Vielleicht wäre es eine bessere Lösung, den Abschnitt „Ausschlüsse“ aufzulisten. Dann muss der Code beim Hinzufügen weiterer Ordner nicht geändert werden: $.
访问全局上下文:.pages
==> $.pages
{{ define "main" }} <ul class="homepage-topic-sections-container"> {{ range where .Pages "Section" "!=" "static" }} <li>
Das obige ist der detaillierte Inhalt vonRendern Sie mehrere Abschnitte bedingt in Hugo. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!