【问题标题】:passing value into shortcode via Scratch - not working通过 Scratch 将值传递给简码 - 不工作
【发布时间】:2021-03-04 01:24:17
【问题描述】:

我正在尝试在页面模板中的 .Scratch 中设置一个值,并在该页面上使用的短代码中读取它,但没有运气。

内容有:

{{< my_shortcode arg="something" >}} 

页面模板(在主题中)有:

{{ .Scratch.Set "foo" "bar" }}

短代码(也在主题中)有:

the value of foo is {{ .Scratch.Get "foo" }}.

但是渲染的输出有:

the value of foo is .

对此我尝试了几种变体,包括在两种情况下都在.Scratch 前加上$,以及尝试从短代码文件中的.Page.Scratch 访问它。在所有情况下,我都会得到一个空的回报。我正在使用版本 v0.75.0-DEV。任何指针都非常感谢。

【问题讨论】:

    标签: hugo hugo-shortcode


    【解决方案1】:

    据我了解,HUGO 页面和简码不共享上下文,因此数据交换受到限制。这导致了一个非常奇怪的情况:

    • 在页面模板中{{ .Scratch }}是页面的scratch;
    • 在简码模板中{{ .Scratch }}是简码的本地划痕;
    • 在短代码模板中{{ .Page.Scratch }} 是页面的草稿,但它不与页面共享上下文,因此它与第一个不同。

    短代码中的{{ .Page.Scratch }} 可用于在单个页面上的所有短代码实例之间共享数据,但不能用于与页面模板共享数据。

    在页面上的短代码之间共享数据以仅插入 JS 一次:

    {{ if le (.Page.Scratch.Get "mermaidInserted") 0 }}
      <script src="{{ "js/deps/mermaid.min.js" | relURL }}"></script>
      {{ .Page.Scratch.Add "mermaidInserted" 1 }}
    {{ end }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-18
      • 2016-05-16
      • 1970-01-01
      • 2019-12-23
      • 2014-04-09
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多