GitHub PagesのJekyllお問い合わせフォーム

Formgong team ·

GitHub PagesのJekyllお問い合わせフォームは、ただのHTMLです。GitHubはセーフモードを有効にするため、未対応のプラグインはビルドされません。フォームをLiquidのincludeに置き、Formgongへ送ります。問い合わせはメールとTelegramに届き、サイトは静的なままです。プラグインは要りません。

Jekyll
<form action="https://formgong.com/submit" method="POST">
  <input type="hidden" name="access_key" value="fk_your_access_key">
  <input type="hidden" name="_lang" value="ja">
  <label>お名前 <input type="text" name="name" autocomplete="name" placeholder="山田 太郎" required></label>
  <label>メールアドレス <input type="email" name="email" autocomplete="email" placeholder="you@example.com" required></label>
  <label>メッセージ <textarea name="message" placeholder="ご用件をご記入ください" required></textarea></label>
  <div aria-hidden="true" style="position:absolute;inset-inline-start:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)">
  <label>この欄は空のままにしてください<input type="text" name="botcheck" tabindex="-1" autocomplete="off"></label>
</div>
  
  <button type="submit">送信</button>
</form>

Jekyllでのフォームの仕組み

JekyllはMarkdownとHTMLを静的サイトにします。GitHub Pagesがよく使うホストで、Jekyllを代わりに実行します。フォームのPOSTを待つサーバーはありません。

GitHub PagesはJekyllの設定で safe: true を固定します。未対応のgemは動きません。_includes/contact-form.html のフォームで足ります。ブラウザがHTMLを送るからです。

Jekyllでの設定手順

  1. Formgongでフォームを作り、アクセスキーをコピーします。
  2. includeを追加します。action を https://formgong.com/submit にし、access_key、_lang、botcheck を置きます。
  3. 問い合わせページにfront matterと {% include contact-form.html %} を足します。プロジェクトサイトでは _redirect を {{ site.url }}{{ site.baseurl }}/thanks/ にします。
  4. フォーム用のgemは足さないでください。GitHub Pagesは safe: true のまま、未対応プラグインをビルドしません。
  5. リポジトリをpushします。GitHubは JEKYLL_ENV を production にします。公開された github.io のアドレスでテストを送ります。

FormgongとJekyllプラグインのどちら?

自分でサイトをビルドし、ビルド時にRubyが要るなら、手元のプラグインが役立ちます。

GitHub Pagesでは未対応プラグインは動きません。Formgongへ送るHTMLはpushの後も動きます。

よくある質問

GitHub Pagesで動きますか?

はい。フォームはHTMLです。GitHub Pagesはファイルを配信するだけです。独自のgemは要りません。

キーを設定に置けますか?

はい。_config.yml に置き、includeで出力します。キーは公開してよいものです。メールのパスワードは置かないでください。

プロジェクトサイトで完了リンクがずれるのはなぜですか?

プロジェクトサイトはサブパスにあります。_redirect を site.baseurl で組まないと、ブラウザは無いページを開きます。

手元にgithub-pagesのgemは要りますか?

同じプラグイン一式を手元で再現したいときだけです。フォーム自体には要りません。HTMLをpushし、公開URLで試します。

無料ではじめる