我计划在 github 上构建和部署一个静态站点。如果我要这样做,是否仍然可以有联系表?
这似乎是我的特定网站上将存在的唯一一组动态功能。
我是否必须在其他地方创建服务才能创建联系表?
我计划在 github 上构建和部署一个静态站点。如果我要这样做,是否仍然可以有联系表?
这似乎是我的特定网站上将存在的唯一一组动态功能。
我是否必须在其他地方创建服务才能创建联系表?
是的,您需要使用外部服务。Formspree是一个非常棒的外部服务,无需注册,每月最多可免费提交 1000 次提交。
使用 Jekyll 的超级简单快速表单设置是使用外部服务,例如https://formkeep.com
是的,你需要一些外部的东西来存储你的数据。但好消息是,存在如此多的解决方案,您只需要为您的特定需求挑选“最佳”即可。
只要给我机会将KVStore.io也包括在可能的解决方案中(免责声明:我是作者)。
如果你有足够的时间,我刚刚发布了一篇关于如何存储来自 Jekyll/GitHub Pages 或类似内容的用户生成内容的文章......
但是故事的长篇大论是,通过使用KVStore.io,您仍然可以受益于真正的存储引擎(具有简单而丰富的 RESTful API 集)支持“仅客户端环境”,如“jekyll/github 页面”或其他你喜欢的组合..
我的 2 美分
恰恰。Jekyll 编译过程的(通常)结果是一个静态站点,因此拥有动态功能的唯一方法是通过外部服务。
例如,您可以尝试zappyforms。
formspree.io就像一个魅力(阅读更多...)
如果您想创建自己的联系表单,例如 PHP,您可以这样做。只要记住这两件事:
Jekyll 会将前面没有下划线或逐字忽略的所有内容复制到 _site 目录。
您可以将 HTML 文件包含到 PHP 文件中。
我在我的服务器上使用 PHP 库从 Jekyll 创建的 HTML 联系表单发送邮件。但是,我的问题是缺少服务器端验证或通知用户未/成功交付或哪些字段未验证。我宁愿没有用于响应的自定义 Success.html 和 Fail.html 页面。
这就是我解决它的方法。
我的 Jekyll 结构如下所示:
/..
_config.yml
_layouts/
default.html
default-php.html
_includes/
header.html
footer.html
contact-form.html
nav.html
...
about/
index.md => index.html
services/
index.md => index.html
contact/
contact.md => contact.html
index.php (includes contact.html)
我contact-form.html
的包含和default-php.html
布局都包含用于打印变量的 PHP 代码段。
当有人浏览www.mysite.com/contact
它时,它将加载index.php
包含我的完整 HTML 页面,其中包含用于打印变量的 PHP 代码片段。
在该 PHP 文件的顶部,您可以处理来自您的联系表单$_POST
或$_GET
从您的邮件传递脚本返回的数据,并将消息打印给发件人,甚至可以向表单字段添加类以指示它们未通过验证。
一个缺点是这不会加载到 Jekyll 的本地服务器(localhost:4000)中。
也许通过一些jiggering你可以得到它。我不知道。我只是设置了一个虚拟主机来指向mysite.local
它/web/root/myjekyllsite/_sites
,它工作正常。