jekyll - 带有变量的 Jekyll/Liquid 表单模板
问题描述
有没有办法设计一个表单模板,供具有各种参数的内容页面使用?像这样的东西:
_layouts/form.html
---
layout: default
---
<form method="POST" action="/info/{{ page.action }}">
{% for question in page.questions %}
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="question{{ question.id }}">
<label class="form-check-label" for="question{{ question.id }}">{{ question.text }}</label>
</div>
{% endfor %}
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<script>
$("form").submit(function(event) {
var inputElems = $("input"),
count = 0;
for (var i=0; i<inputElems.length; i++) {
if (inputElems[i].type === "checkbox" && inputElems[i].checked === true){
count++;
}
}
if (count > {{ page.count }}) {
return;
} else {
event.preventDefault();
alert("Alert");
}
});
</script>
一个内容页面可能只包含一个定义模板使用的变量的前端:
---
layout: form
title: Title
action: /results
questions: site.data.questions1
count: 10
---
更好的解决方案是创建一些带有变量定义的 YAML 文件,这些变量定义被注入到模板中,以说明表单页面的永久链接。该文件将用于生成最终表单页面。
解决方案
你知道 Jekyll 中的包含文件吗?
与其确定页面的布局,因此很难向其中添加内容,而是包含功能就像一个函数或一段可重用的代码。您可以在页面或布局上使用它。
它适用于参数。
从文档
_include/image.html
<figure>
<a href="{{ include.url }}">
<img src="{{ include.file }}" style="max-width: {{ include.max-width }};"
alt="{{ include.alt }}"/>
</a>
<figcaption>{{ include.caption }}</figcaption>
</figure>
打电话喜欢
---
---
{% include image.html url="http://jekyllrb.com"
max-width="200px" file="logo.png" alt="Jekyll logo"
caption="This is the Jekyll logo." %}
或者传递变量名称而不是值,如 frontmatter 或数据文件中定义的那样。请注意不要使用图像 url 覆盖页面上的 URL,否则可能会破坏。
---
my_image:
url: '...'
alt: '...'
---
{% include image.html url=page.my_image.url alt=page.my_image.html ... %}
From _data/gallery.yaml
{% include image.html url=site.data.gallery.my_image.url
... %}
或者传递一个带有属性的对象。
---
my_image:
url: '...'
alt: '...'
---
{% include image.html image_attributes=page.my_image %}
推荐阅读
- ruby-on-rails - 使用本机扩展安装 pg 1.1.3 失败
- android - android 应用程序如何跟踪,如果以前安装了应用程序?
- amazon-web-services - AWS IoT 证书突然失效
- java - 使 ArrayList 添加线程安全而不使用线程安全集合
- assembly - 非法指令:PRINTN
- android - Espresso 测试无法通过“依赖冲突”构建
- ios - Xcode 倒计时几天,直到圣诞节
- javascript - 用 html 和 javascript 编写画布
- list - 试图了解如何不将元素添加到列表中
- python - tf.metrics.accuracy 返回的第一个值代表什么