我希望我最外层的Liquid模板文件仅在页面需要时引用JavaScript文件。我创建了一个页面变量page.slideshow
,它控制着这个:
default.html中:
{% if page.slideshow %}
<script type="text/javascript" src="/js/slideshow.js"></script>
{% endif %}
现在我有一个从default.html“继承”的模板,它允许页面在其YAML前端中指定一个图像列表(page.images
)。只有当这个列表有多个元素时,才能将slideshow.js包含在页面中。
我对此的尝试看起来像是:
other.html
---
layout: default
---
{% assign imagecount = page.images | size %}
{% if imagecount > 1 %}
{% assign page.slideshow = true %}
{% endif %}
但是,这似乎不会影响default.html的呈现,因为脚本标记未包含在最终页面中。
作为一种解决方法,我可以修改列出多个图片的每个页面的前端,以明确设置slideshow: Yes
,或者更改default.html以检查page.slideshow or (page.images | size) > 0
,但我更愿意将其更接近于我上面尝试过的。
答案 0 :(得分:0)
我有一个游戏,你不能按照你的建议去做。似乎页面变量一旦设置就无法修改。您可以使用Jekyll插件设置它,但这是另外一件事。
我发现最干净的方法是将所有逻辑放在主要的最外层模板中。
{% assign imageCount = page.images | size %}
{% if page.slideshow or imageCount > 1 %}
{{ page.images | size }}
<script src="/js/slideshow.js"></script>
{% endif %}