Jekyll
Un include de Jekyll que renderiza un formulario de Ikiform a partir de _config.yml, con redirecciones que funcionan en GitHub Pages y en dominios propios.
Los sitios de Jekyll son estáticos, lo que encaja con un envío de formulario normal. Guarda el formulario en un include para que todas las páginas usen el mismo markup y el id del formulario esté en un solo lugar.
Configúralo
Añade los ajustes a _config.yml
_config.yml url: "https://example.com" ikiform: form_id: frm_xxxxxxxxxxxxxxxx thanks: /thanks/El include construye la redirección con
absolute_url, que necesitaurl. Sin él, la redirección es solo una ruta, e Ikiform ignora todo lo que no sea una URLhttps:completa. En un sitio de proyecto de GitHub Pages, define tambiénbaseurl: /repo;absolute_urllo añade por ti.Crea el 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>Úsalo
contact.md --- layout: page title: Contact --- Questions about pricing? Write to us. {% include ikiform-form.html subject="Pricing question" %}El include funciona en páginas, entradas y layouts. Pasa
form_idpara usar otro formulario,thankspara otra redirección ybuttonpara el texto del botón.Añade la página de agradecimiento
thanks.md --- layout: page title: Thanks permalink: /thanks/ --- Thanks, we got your message.
_redirect solo se sigue cuando el formulario tiene dominios permitidos que incluyen tu sitio. Consulta Reglas de _redirect.
Dominios permitidos
GitHub Pages es el hosting habitual de Jekyll, así que a menudo necesitarás dos entradas: el host github.io y tu dominio propio.
| Dónde funciona el formulario | Añadir a Allowed domains |
|---|---|
bundle exec jekyll serve | localhost. Coincide con http://localhost:4000: Ikiform solo compara el nombre de host, nunca el puerto. |
| GitHub Pages | username.github.io. Los sitios de proyecto en username.github.io/repo usan el mismo host, así que una sola entrada los cubre todos. |
| Dominio propio en GitHub Pages | example.com, que también cubre www.example.com |
| Netlify | your-site.netlify.app. Los deploy previews (deploy-preview-12--your-site.netlify.app) y los branch deploys (branch--your-site.netlify.app) no son subdominios suyos, así que añade el host exacto de la vista previa mientras la pruebas. |
- Nunca añadas
github.iosolo. Coincidiría cualquier sitio de ese host, incluidos los de otras personas.
Lista de pruebas
- Ejecuta
bundle exec jekyll servey mira el código fuente de la página. Elactiondebería terminar en el id de tu formulario. - Envía en local. Llegarás a la página de agradecimiento de Ikiform:
jekyll serveponeurlenhttp://localhost:4000, y las redireccioneshttp:no se siguen. - Haz push, espera al build de Pages y envía desde
username.github.io. Confirma que el envío no se marca como spam. - Envía en tu dominio propio y confirma que llegas a
/thanks/.
Solución de problemas
| Qué ves | Por qué | Solución |
|---|---|---|
Could not locate the included file 'ikiform-form.html' | El archivo no está en _includes, o el nombre es distinto | Muévelo a _includes/ikiform-form.html. |
La página de agradecimiento de Ikiform en lugar de /thanks/ en el sitio en producción | Falta url en _config.yml, o el formulario no tiene dominios permitidos | Pon tu dirección https: en url y añade tu dominio. |
404 not_found después de enviar | site.ikiform.form_id está vacío, así que el action termina en /f/ | Revisa la sangría bajo ikiform: en _config.yml. |
Los envíos llegan al filtro de spam con origin_mismatch | La página que envió no está entre los dominios permitidos del formulario | Añade el host de la tabla de arriba. Si eliges Reject, esos mismos envíos reciben 403 origin_not_allowed. |