Hugo嵌套参数查询问题:无法获取features描述值
Hugo嵌套配置无法读取问题修复
问题描述
在Hugo项目中配置了嵌套的定价套餐(pricing)及对应功能列表(features)结构,但模板中无法读取features的内容,PricingRate等其他参数可正常显示。
原Hugo.toml配置
[[params.pricing]] PricingTitle = "Starter" PricingRate = "27" ButtonCaption = "Get Early Access" [[features]] Description = "First Lorem ipsum is common text" [[features]] Description = "Second Lorem ipsum is common text" [[params.pricing]] PricingTitle = "Professional" PricingRate = "97" ButtonCaption = "Get Early Access" [[features]] Description = "First Lorem ipsum is common text" [[features]] Description = "Second Lorem ipsum is common text" [[params.pricing]] PricingTitle = "Business" PricingRate = "147" ButtonCaption = "Get Early Access" [[features]] Description = "First Lorem ipsum is common text" [[features]] Description = "Second Lorem ipsum is common text"
模板代码
<h2 class="section-title mt-0 text-center">Pricing</h2> <div class="pricing-tables-wrap"> {{ range site.Params.pricing }} <div class="pricing-table"> <div class="pricing-table-inner"> <div class="pricing-table-main"> <div class="pricing-table-header is-revealing"> <div class="pricing-table-title mt-12 mb-8">{{ .PricingTitle }}</div> <div class="pricing-table-price mb-32 pb-24"><span class="pricing-table-price-currency h4">$</span><span class="pricing-table-price-amount h2">{{ .PricingRate }}</span>/mo</div> </div> <ul class="pricing-table-features list-reset text-xs mt-24 mb-56"> {{ range .features }} <li class="is-revealing"> <span class="list-icon"> <svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"> <path fill="#5FFAD0" fill-rule="nonzero" d="M5.6 8.4L1.6 6 0 7.6 5.6 14 16 3.6 14.4 2z"/> </svg> </span> <span>{{ .Description }}</span> </li> {{ end }} </ul> </div> <div class="pricing-table-cta is-revealing"> <a class="button button-primary button-shadow button-block" href="#">{{ .ButtonCaption }}</a> </div> </div> </div> {{ end }} </div>
问题原因及修复
问题出在TOML配置的缩进层级上:原配置中[[features]]的缩进未与同一[[params.pricing]]块内的PricingTitle等参数保持一致,导致TOML解析器将其识别为全局顶级数组,而非对应pricing项的子元素,因此模板中遍历.features时无法获取数据。
修正后的配置
只需将[[features]]的缩进调整到和PricingTitle、PricingRate同一层级即可,有两种写法可选:
写法一:显式指定父级
[[params.pricing]] PricingTitle = "Starter" PricingRate = "27" ButtonCaption = "Get Early Access" [[params.pricing.features]] Description = "First Lorem ipsum is common text" [[params.pricing.features]] Description = "Second Lorem ipsum is common text" [[params.pricing]] PricingTitle = "Professional" PricingRate = "97" ButtonCaption = "Get Early Access" [[params.pricing.features]] Description = "First Lorem ipsum is common text" [[params.pricing.features]] Description = "Second Lorem ipsum is common text" [[params.pricing]] PricingTitle = "Business" PricingRate = "147" ButtonCaption = "Get Early Access" [[params.pricing.features]] Description = "First Lorem ipsum is common text" [[params.pricing.features]] Description = "Second Lorem ipsum is common text"
写法二:利用缩进隐式关联
[[params.pricing]] PricingTitle = "Starter" PricingRate = "27" ButtonCaption = "Get Early Access" [[features]] Description = "First Lorem ipsum is common text" [[features]] Description = "Second Lorem ipsum is common text" [[params.pricing]] PricingTitle = "Professional" PricingRate = "97" ButtonCaption = "Get Early Access" [[features]] Description = "First Lorem ipsum is common text" [[features]] Description = "Second Lorem ipsum is common text" [[params.pricing]] PricingTitle = "Business" PricingRate = "147" ButtonCaption = "Get Early Access" [[features]] Description = "First Lorem ipsum is common text" [[features]] Description = "Second Lorem ipsum is common text"
你的模板代码逻辑完全正确,修正配置后即可正常遍历并显示features内容。
内容的提问来源于stack exchange,提问作者Dchucks
相关产品推荐
相关产品推荐

