Buat berbilang bahagian dalam Hugo secara bersyarat

WBOY
Lepaskan: 2024-02-08 23:42:22
ke hadapan
915 orang telah melayarinya

在 Hugo 中有条件地渲染多个部分

Di Hugo, terdapat ciri yang sangat berguna untuk menghasilkan berbilang bahagian berdasarkan syarat. Ciri ini membolehkan kami menunjukkan/menyembunyikan bahagian tertentu halaman berdasarkan situasi atau keadaan tertentu. Sama ada kami membina tapak web statik atau tapak web dinamik, fungsi pemaparan bersyarat ini boleh membantu kami mengawal cara halaman itu dipersembahkan dengan lebih fleksibel. Dalam artikel ini, saya akan membincangkan dengan anda cara melaksanakan pemaparan bersyarat bagi berbilang bahagian dalam Hugo dan senario penggunaannya.

Kandungan soalan

Saya ingin memaparkan semua fail penurunan harga dalam setiap folder kecuali fail statik di halaman utama tapak web Salah satu cara ialah menggunakan kesatuan dalam hugo, tetapi apabila bilangan folder bertambah, saya mendapati bahawa saya mengulangi kesatuan di seluruh tempat (kod dengan kesatuan diulas, dan ia berfungsi dengan cara), jadi saya fikir menggunakan kepingan akan menjadi idea yang lebih baik, tetapi apabila saya cuba menggunakan kepingan saya mendapat Ralat berikut-

Gagal untuk memaparkan halaman: "home" Rendering gagal: "(directory path)layoutsindex.html:12:19": Pelaksanaan templat di <.pages> gagal: Tidak dapat menilai halaman medan dalam jenis rentetan

Struktur direktori

kod index.html

{{ 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}} &middot; {{.Date.Format "January 2, 2006"}}</a></h3>
                {{ end }}
            </div>
        </section>
    </li>
    {{end}}
    {{end}}

</ul>
{{ end }}
Salin selepas log masuk

Penyelesaian

https://www.php.cn/link/1330fef5fe4f742c1918c585c2da13b3:

Konteks (aka “titik”)

Konsep yang paling diabaikan tentang templat go ialah {{ . }} sentiasa merujuk konteks semasa.

  • Di peringkat atas templat, ini akan menjadi set data yang tersedia untuk digunakan templat.
  • Walau bagaimanapun, di dalam lelaran, ia akan mempunyai nilai item semasa dalam gelung iaitu {{ . }} tidak akan merujuk kepada data yang tersedia untuk keseluruhan halaman.

Dalam kod di bawah, .pages 中的点具有第一个 range 操作中当前项目的值。该值的类型是字符串,并且它没有字段 pages。这就是为什么它失败了,execute of template failed at <.pages>: can'tvaluate field pages in type string.

{{ define "main" }}
<ul class="homepage-topic-sections-container">
    {{$sectionnames := slice "posts" "problems" "tutorials"}}
    {{range $index, $sectionname := $sectionnames}}
    {{ range where .pages "section" $sectionname }}
                   ^^^^^^
Salin selepas log masuk

Satu pembaikan yang mungkin adalah dengan menggunakan $. 访问全局上下文:.pages ==> $.pages.

Mungkin penyelesaian yang lebih baik adalah dengan menyenaraikan bahagian pengecualian. Kemudian tidak perlu mengubah suai kod apabila menambah lebih banyak folder:

{{ define "main" }}
<ul class="homepage-topic-sections-container">
    {{ range where .Pages "Section" "!=" "static" }}
    <li>
Salin selepas log masuk

Atas ialah kandungan terperinci Buat berbilang bahagian dalam Hugo secara bersyarat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!