在 Hugo 中有條件地渲染多個部分
在Hugo中,有一個非常有用的功能,就是可以根據條件來渲染多個部分。這種功能可以使得我們根據特定的情況或條件來展示/隱藏頁面的某些部分。無論是在建立靜態網站還是動態網站中,這種條件渲染的功能都能夠幫助我們更靈活地控制頁面的呈現方式。在本文中,我將和大家一起探討如何在Hugo中實現條件渲染多個部分的方法及使用場景。
問題內容
我想渲染除網站主頁中的靜態檔案之外的每個資料夾中的所有markdown 文件,一種方法是在hugo 中使用union,但隨著資料夾數量的增加,我發現自己在重複union到處都是(帶聯合的程式碼被註釋了,順便說一下,它正在工作),所以我認為使用切片會是一個更好的主意,但是當我嘗試使用切片時,我收到以下錯誤-
渲染頁面失敗:「home」渲染失敗:「(目錄路徑)\layouts\index.html:12:19」:在<.pages> 處執行範本失敗:無法評估字串類型中的欄位頁面
目錄結構
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}} · {{.Date.Format "January 2, 2006"}}</a></h3> {{ end }} </div> </section> </li> {{end}} {{end}} </ul> {{ end }}
解決方法
https://www.php.cn/link/1330fef5fe4f742c1918c585c2da13b3一个>:
上下文(又稱「點」)
關於 go 模板,最容易被忽略的概念是 {{ . }}
總是引用目前上下文。
- 在範本的頂層,這將是可供範本使用的資料集。
- 但是,在迭代內部,它將具有循環中當前項目的值;即
{{ . }}
將不再引用整個頁面可用的資料。
在下面的程式碼中,.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 }} ^^^^^^
一種可能的修復方法是使用 $.
存取全域上下文:.pages
==> $.pages
。
也許更好的解決方案是列出排除部分。那麼當添加更多資料夾時就不需要修改程式碼了:
{{ define "main" }} <ul class="homepage-topic-sections-container"> {{ range where .Pages "Section" "!=" "static" }} <li>
以上是在 Hugo 中有條件地渲染多個部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

OpenSSL,作為廣泛應用於安全通信的開源庫,提供了加密算法、密鑰和證書管理等功能。然而,其歷史版本中存在一些已知安全漏洞,其中一些危害極大。本文將重點介紹Debian系統中OpenSSL的常見漏洞及應對措施。 DebianOpenSSL已知漏洞:OpenSSL曾出現過多個嚴重漏洞,例如:心臟出血漏洞(CVE-2014-0160):該漏洞影響OpenSSL1.0.1至1.0.1f以及1.0.2至1.0.2beta版本。攻擊者可利用此漏洞未經授權讀取服務器上的敏感信息,包括加密密鑰等。

後端學習路徑:從前端轉型到後端的探索之旅作為一名從前端開發轉型的後端初學者,你已經有了nodejs的基礎,...

在BeegoORM框架下,如何指定模型關聯的數據庫?許多Beego項目需要同時操作多個數據庫。當使用Beego...

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

本文介紹如何在Debian系統上配置MongoDB實現自動擴容,主要步驟包括MongoDB副本集的設置和磁盤空間監控。一、MongoDB安裝首先,確保已在Debian系統上安裝MongoDB。使用以下命令安裝:sudoaptupdatesudoaptinstall-ymongodb-org二、配置MongoDB副本集MongoDB副本集確保高可用性和數據冗餘,是實現自動擴容的基礎。啟動MongoDB服務:sudosystemctlstartmongodsudosys
