从实际 post 内容中添加部分内容

Add partials from the actual post content

我以此为模板:

{{ partial "header.html" . }}
<div style="padding-top:50px"></div>


<div class="grid">
    <div style="background-color: #fce473; padding: 10px" class="{{ .Params.left_col_size }}">

        <h1>left</h1>

        <div class="grid">

            <div id="content2"></div>

            {{ partial "ui-components/barchart_content2.html" }}

        </div>

    </div>
    <div style="background-color: #7bbf51; padding: 10px" class="{{ .Params.right_col_size }}">
    right
    </div>
</div>


{{ .Content }}

{{ partial "footer.html" . }}

成功加载部分 "ui-components/barchart_content2.html"。

然而,我真正想要的是这样的:

....
<div id="content2"></div>
  {{ partial "ui-components/{{ Params.ui-component }}" }}

....

然后在内容中这样做:

+++
  ....
  ui-component = "barchart_content2.html"

+++

以便内容编辑者可以选择呈现哪个部分,而无需触摸 html 模板。

Hugo 中可以实现这样的功能吗?谢谢

是的,您可以使用 printf 函数来执行此操作。试试这个:

{{ partial (printf "ui_components/%s" .Params.ui_component) . }}

以及对应的前题:

+++
  ui_component = "barchart_content2.html"
+++

请注意,我已将您的 ui-component 变量更改为 ui_component,因为 Hugo 变量名称中不允许使用连字符。