ID formulir

Hugo

Partial dan shortcode Hugo yang merender formulir Ikiform dari site params, di layout dan di konten Markdown.

Hugo menghasilkan HTML biasa, dan kiriman formulir biasa sudah cukup untuk Ikiform, jadi tidak ada JavaScript yang perlu ditambahkan. Satu-satunya jebakan khas Hugo adalah Markdown: renderer Hugo membuang HTML mentah dari file konten kecuali Anda mengaktifkan markup.goldmark.renderer.unsafe, dan formulir yang ditempel berubah menjadi <!-- raw HTML omitted -->. Shortcode menyimpan HTML di template sebagai gantinya.

Penyiapan

  1. Tambahkan ID formulir ke config

    hugo.toml
    baseURL = "https://example.com/"
    
    [params.ikiform]
    formId = "frm_xxxxxxxxxxxxxxxx"
    thanks = "/thanks/"

    baseURL harus berupa alamat https: Anda yang sebenarnya. Partial memakainya untuk mengubah thanks menjadi URL absolut, dan Ikiform hanya mengikuti redirect https:.

  2. Buat partial

    layouts/_partials/ikiform-form.html
    {{ $id := .id | default site.Params.ikiform.formId }}
    {{ $thanks := .thanks | default site.Params.ikiform.thanks }}
    <form class="ikiform" action="https://ikiform.com/f/{{ $id }}" method="post">
      <label>Email <input name="email" type="email" autocomplete="email" required></label>
      <label>Message <textarea name="message" rows="5"></textarea></label>
      {{ with .subject }}<input type="hidden" name="_subject" value="{{ . }}">{{ end }}
      {{ with $thanks }}<input type="hidden" name="_redirect" value="{{ . | absURL }}">{{ end }}
      <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden>
      <button type="submit">{{ .button | default "Send" }}</button>
    </form>

    Selalu panggil dengan dict, meskipun kosong. Setiap key bersifat opsional dan kembali ke site params jika tidak diisi.

  3. Bungkus dalam shortcode

    layouts/_shortcodes/ikiform.html
    {{ partial "ikiform-form.html" (dict "id" (.Get "id") "subject" (.Get "subject") "button" (.Get "button")) }}

    Hugo 0.146 memindahkan template ke layouts/_partials dan layouts/_shortcodes. Di versi lebih lama, gunakan layouts/partials dan layouts/shortcodes.

  4. Gunakan

    Di file konten mana pun:

    content/contact.md
    ---
    title: Contact
    ---
    
    Questions about pricing? Write to us.
    
    {{< ikiform subject="Pricing question" >}}

    Atau di layout, untuk formulir di setiap halaman:

    layouts/_partials/footer.html
    <footer>
      {{ partial "ikiform-form.html" (dict "subject" "Footer enquiry") }}
    </footer>

Tambahkan halaman content/thanks.md untuk redirect. Ikiform mengikuti _redirect hanya jika formulir punya domain yang diizinkan yang mencakup situs Anda; tanpanya, pengunjung melihat halaman terima kasih Ikiform. Lihat Aturan untuk _redirect.

Domain yang diizinkan

Cantumkan domain produksi Anda plus setiap tempat Anda melihat pratinjau situs hasil build.

Tempat formulir berjalanTambahkan ke Domain yang diizinkan
hugo serverlocalhost. Ini cocok dengan http://localhost:1313: Ikiform hanya membandingkan nama host, tidak pernah port.
Domain Andaexample.com, yang juga mencakup www.example.com
Netlifyyour-site.netlify.app. Deploy preview (deploy-preview-12--your-site.netlify.app) dan branch deploy (branch--your-site.netlify.app) bukan subdomainnya, jadi tambahkan host pratinjau persisnya selama Anda menguji.
Cloudflare Pagesyour-project.pages.dev. URL pratinjau seperti abc123.your-project.pages.dev adalah subdomainnya, jadi sudah cocok.
GitHub Pagesusername.github.io. Situs proyek di username.github.io/repo memakai host yang sama, jadi satu entri mencakup semuanya.
  • Jangan pernah menambahkan netlify.app, pages.dev, atau github.io saja. Setiap situs di host itu akan cocok, termasuk milik orang lain.

Daftar periksa pengujian

  1. Jalankan hugo server, buka halamannya, dan lihat source-nya. Anda seharusnya melihat <form>, bukan <!-- raw HTML omitted -->.
  2. Kirim secara lokal dengan localhost di domain yang diizinkan. Anda akan mendarat di halaman terima kasih Ikiform, karena absURL menghasilkan alamat http://localhost dan hanya redirect https: yang diikuti.
  3. Deploy pratinjau, kirim dari sana, dan pastikan kirimannya tercantum di Ikiform dan tidak ditandai spam.
  4. Kirim di domain produksi Anda dan pastikan Anda mendarat di /thanks/.

Pemecahan masalah

Yang Anda lihatAlasanSolusi
<!-- raw HTML omitted --> di tempat formulir seharusnya beradaFormulir ditempel langsung ke MarkdownGunakan shortcode.
Hugo gagal dengan template for shortcode "ikiform" not foundFile shortcode ada di folder yang tidak dibaca oleh versi Hugo AndaGunakan layouts/_shortcodes di 0.146 ke atas, layouts/shortcodes sebelumnya.
Halaman terima kasih Ikiform, bukan /thanks/, di produksiTidak ada domain yang diizinkan, atau baseURL memakai http:Tambahkan domain Anda dan atur baseURL ke alamat https: Anda.
404 not_found setelah dikirimparams.ikiform.formId tidak ada, jadi action berakhir di /f/Atur ID formulir di hugo.toml.
Kiriman masuk ke filter spam dengan origin_mismatchHalaman yang mengirim tidak ada di domain yang diizinkan formulirTambahkan host dari tabel di atas. Jika Reject dipilih, kiriman yang sama mendapat 403 origin_not_allowed.