【问题标题】:Is there a way to evaluate string with liquid tags有没有办法用液体标签评估字符串
【发布时间】:2014-01-03 22:43:32
【问题描述】:

我需要提供页面内容参考列表(它应该包含页面上部分的参考)。 我能看到的唯一方法是使用 page.content 并解析它,但我偶然发现了数据评估的问题。例如,我可以从page.content:{{site.data.sdk.language}} SDK 中提取这个字符串,但是没有办法让 jekyll 处理它,它按原样输出。 此外,我希望能够创建跨页链接(在页面上的特定部分,但该链接由另一个包含生成,并且不会以 HTML 形式保留在 page.content 中)。

有没有办法让它评估来自page.content 的值?

附:我包含了一段代码,它应该构建页面内容并返回带有列表的 HTML(因此没有递归)。 附言我不能使用子模块,因为我需要在 github 页面上运行这些页面。

谢谢。

【问题讨论】:

    标签: jekyll liquid github-pages


    【解决方案1】:

    {{ site.data.sdk.language | strip_html }} 不应该这样做吗?我不知道,很可能我没有理解这个问题。你能详细说明一下吗?也许提供指向您所指帖子的链接?

    【讨论】:

    • 自定义液体标签的问题。例如{% section title={{site.data,sdk.language}} %} 但在呈现此标签的代码内部,“title”变量将设置为{{site.data,sdk.language}},而不是存储在 YAML 数据文件中的值。我找到了一些解决方法并遍历context.scopes 并搜索有用的变量。
    【解决方案2】:

    考虑相似

    {% assign title = site.data.sdk.language %}
    

    这是一个库存的 Liquid 标签并且做得很好,所以而不是

    {% section title={{site.data.sdk.language}} %}
    

    把你的代码写成

    {% section title = site.data.sdk.language %}
    

    这里的关键是,一旦您输入 {%,您就进入了 Liquid。不要指望Liquid自己会“开始”。 {{ 只是“打印到输出”的简写,但是传递参数不是输出,它只是读取一个变量。

    你应该也可以疯狂做事:

    {% section title = site.data.sdk.language | capitalize %}
    

    如需更多重新阅读文档:https://github.com/Shopify/liquid/wiki/Liquid-for-Designers

    【讨论】:

    • 对“Liquid doesn't go Inception”的一个警告是include标签which does
    • 好点!只是增加了这种“语言”的不一致之处。请注意,您只能使用{{var}} 评估代替include 中的文件名,所有其他参数必须具有单个文字或单个变量访问表达式,这意味着您不能在那里使用任何过滤器... :(
    猜你喜欢
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 2011-07-01
    • 2021-12-03
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多