Jekyll
Un include Jekyll qui affiche un formulaire Ikiform à partir de _config.yml, avec des redirections qui fonctionnent sur GitHub Pages et sur les domaines personnalisés.
Les sites Jekyll sont statiques, ce qui convient parfaitement à un envoi de formulaire classique. Gardez le formulaire dans un include pour que chaque page utilise le même markup et que l'id du formulaire soit défini à un seul endroit.
Mise en place
Ajoutez les réglages à _config.yml
_config.yml url: "https://example.com" ikiform: form_id: frm_xxxxxxxxxxxxxxxx thanks: /thanks/L'include construit la redirection avec
absolute_url, qui a besoin deurl. Sans lui, la redirection n'est qu'un chemin, et Ikiform ignore tout ce qui n'est pas une URLhttps:complète. Sur un site de projet GitHub Pages, définissez aussibaseurl: /repo;absolute_urll'ajoute pour vous.Créez l'include
_includes/ikiform-form.html {%- assign form_id = include.form_id | default: site.ikiform.form_id -%} {%- assign thanks = include.thanks | default: site.ikiform.thanks -%} <form class="ikiform" action="https://ikiform.com/f/{{ form_id }}" method="post"> <label>Email <input name="email" type="email" autocomplete="email" required></label> <label>Message <textarea name="message" rows="5"></textarea></label> {%- if include.subject %} <input type="hidden" name="_subject" value="{{ include.subject | escape }}"> {%- endif %} {%- if thanks %} <input type="hidden" name="_redirect" value="{{ thanks | absolute_url }}"> {%- endif %} <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden> <button type="submit">{{ include.button | default: "Send" }}</button> </form>Utilisez-le
contact.md --- layout: page title: Contact --- Questions about pricing? Write to us. {% include ikiform-form.html subject="Pricing question" %}L'include fonctionne dans les pages, les articles et les layouts. Passez
form_idpour utiliser un autre formulaire,thankspour une autre redirection etbuttonpour le texte du bouton.Ajoutez la page de remerciement
thanks.md --- layout: page title: Thanks permalink: /thanks/ --- Thanks, we got your message.
_redirect n'est suivi que si le formulaire a des domaines autorisés qui incluent votre site. Voir Règles pour _redirect.
Domaines autorisés
GitHub Pages est l'hébergeur habituel de Jekyll, il vous faudra donc souvent deux entrées : l'hôte github.io et votre domaine personnalisé.
| Où tourne le formulaire | À ajouter aux domaines autorisés |
|---|---|
bundle exec jekyll serve | localhost. Correspond à http://localhost:4000 : Ikiform compare uniquement le nom d'hôte, jamais le port. |
| GitHub Pages | username.github.io. Les sites de projet à username.github.io/repo utilisent le même hôte, donc une seule entrée les couvre tous. |
| Domaine personnalisé sur GitHub Pages | example.com, qui couvre aussi www.example.com |
| Netlify | your-site.netlify.app. Les deploy previews (deploy-preview-12--your-site.netlify.app) et les branch deploys (branch--your-site.netlify.app) n'en sont pas des sous-domaines : ajoutez l'hôte de prévisualisation exact le temps de le tester. |
- N'ajoutez jamais
github.ioseul. Tous les sites de cet hébergeur correspondraient, y compris ceux des autres.
Checklist de test
- Lancez
bundle exec jekyll serveet affichez le code source de la page. L'actiondoit se terminer par l'id de votre formulaire. - Envoyez en local. Vous arriverez sur la page de remerciement d'Ikiform :
jekyll serverègleurlsurhttp://localhost:4000, et les redirectionshttp:ne sont pas suivies. - Faites un push, attendez le build Pages et envoyez depuis
username.github.io. Vérifiez que la soumission n'est pas marquée comme spam. - Envoyez sur votre domaine personnalisé et vérifiez que vous arrivez sur
/thanks/.
Dépannage
| Ce que vous voyez | Pourquoi | Solution |
|---|---|---|
Could not locate the included file 'ikiform-form.html' | Le fichier n'est pas dans _includes, ou son nom diffère | Déplacez-le dans _includes/ikiform-form.html. |
La page de remerciement d'Ikiform au lieu de /thanks/ sur le site en ligne | url manque dans _config.yml, ou le formulaire n'a aucun domaine autorisé | Réglez url sur votre adresse https: et ajoutez votre domaine. |
404 not_found après l'envoi | site.ikiform.form_id est vide, donc l'action se termine par /f/ | Vérifiez l'indentation sous ikiform: dans _config.yml. |
Les soumissions arrivent dans le filtre spam avec origin_mismatch | La page qui a envoyé ne fait pas partie des domaines autorisés du formulaire | Ajoutez l'hôte du tableau ci-dessus. Avec Reject, les mêmes envois reçoivent plutôt 403 origin_not_allowed. |