如何解决Jekyll 根据 JS url param
我正在尝试根据 URL 参数是否包含在我的 URL 中以生产模式(已编译)有条件地在我的 Jekyll 应用程序中呈现包含文件,以便我可以更改已加载的文件。
我需要用 JS 来做这件事,因为 JS 将接受参数,但我不知道 Jekyll 怎么会知道,我想知道是否有 JEKYLL 插件或类似的东西可以工作。
在我的 URL 中,例如:https://example.com/page 我将指定一些 mode
参数,然后我想决定显示哪个文件。
<div>
<!-- Default -->
{% include_relative includes/form/form.html %}
<!--
If URL param 'mode' is set
-->
{% include_relative includes/form/form_lookup.html %}
</div>
解决方法
Jekyll 生成静态网站,因此它甚至在知道 JS 告诉页面什么之前就生成了所有内容。对于这种动态行为,您不能使用 Jekyll 本身。有一些解决方法:
-
您可以生成两个单独的页面,然后根据您的 URL 参数返回一个或另一个页面。
-
生成一个包含表单和嵌入脚本的单个页面,该脚本根据从 javascript 设置的值隐藏一个或另一个:
<script>
// Check the URL parameter
check_mode(){
// See tutorial below
}
// Display one or another
show_form(x){
if(x == "formA"){
document.getElementById("formB").style.display = "none"
}else if(x == "formB"){
document.getElementById("formA").style.display = "none"
}
document.getElementById(x).style.display = "initial" // or whatever visible
}
if(check_mode())
show_form("formA")
else
show_form("formB")
</script>
<div>
<!-- Default -->
<div id="formA">
{% include_relative includes/form/form.html %}
</div>
<!--
If URL param 'mode' is set
-->
<div id="formB">
{% include_relative includes/form/form_lookup.html %}
</div>
</div>
确实,您同时发送了两种表单,这并不是带宽和浏览器内存的最有效使用方式,但最糟糕的事情发生在网络上。此外,虽然这不是最干净的方法,但考虑到问题的范围,我认为足以为您指明方向。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。