gpt4 book ai didi

jekyll - 从 Liquid 覆盖 YAML frontmatter 变量

转载 作者:行者123 更新时间:2023-12-01 06:31:19 25 4
gpt4 key购买 nike

我希望最外层的 Liquid 模板文件仅在页面需要时才引用 JavaScript 文件。我创建了一个页面变量,page.slideshow ,它控制这个:

默认.html:

{% if page.slideshow %}
<script type="text/javascript" src="/js/slideshow.js"></script>
{% endif %}

现在我有一个从 default.html“继承”的模板,它允许页面在其 YAML frontmatter 中指定图像列表( page.images )。只有当此列表包含多个元素时,我才希望将 slideshow.js 包含在页面中。

我在这方面的尝试看起来像:

其他.html
---
layout: default
---
{% assign imagecount = page.images | size %}
{% if imagecount > 1 %}
{% assign page.slideshow = true %}
{% endif %}

但是,这似乎并不影响 default.html 的呈现,因为最终页面中没有包含 script 标签。

作为一种解决方法,我可以修改列出多个图像的每个页面的 frontmatter 以明确设置 slideshow: Yes ,或更改 default.html 以检查 page.slideshow or (page.images | size) > 0但我更愿意将它构建得更接近我上面尝试的内容。

最佳答案

我玩过一个游戏,你不能按照你建议的方式去做。似乎页面变量一旦设置就无法修改。你也许可以用 Jekyll 插件来设置它,但那是另外一回事了。

我发现的最简洁的方法是将所有逻辑放在主要的、最外层的模板中。

{% assign imageCount = page.images | size %}
{% if page.slideshow or imageCount > 1 %}
{{ page.images | size }}
<script src="/js/slideshow.js"></script>
{% endif %}

关于jekyll - 从 Liquid 覆盖 YAML frontmatter 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20724212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com