You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:22:32