Written by: Geoffrey Callaghan

How to add a contact form in Hexo website

How To Add A Contact Form In Hexo Website

To add a contact form to your Hexo website using Fabform, you’ll need to follow these steps:

  1. Install Fabform: Start by installing Fabform in your Hexo project. You can do this by adding it as a dependency in your package.json:

    npm install fabform --save
  2. Create Your Contact Form: In your Hexo project, create a new page or include the contact form in an existing page. You can use HTML or Markdown to create the form. Here’s an example of a Markdown file named contact.md:

    ---
    title: Contact
    layout: page
    ---
    <form id="contact-form" action="/api/submit-form" method="post">
        <input type="text" name="name" placeholder="Your Name" required>
        <input type="email" name="email" placeholder="Your Email" required>
        <textarea name="message" placeholder="Your Message" required></textarea>
        <button type="submit">Send</button>
    </form>
  3. Set Up the Backend: You need a backend to handle form submissions. This can be done using serverless functions or any backend solution of your choice. Create a directory for your API functions and a function to handle form submissions.

    For example, if you’re using Netlify Functions, you can create a file named submit-form.js in your functions directory:

    // functions/submit-form.js
    import { createFormEndpoint } from 'fabform';
    
    export const handler = createFormEndpoint({
        // Your form configuration
        // This might include email sending, saving to a database, etc.
    });
  4. Deploy Your Site: Deploy your Hexo website with the new contact form and backend. If you’re using Netlify Functions, make sure to deploy your functions along with your site.

  5. Test Your Form: Once deployed, test your contact form to ensure it’s working as expected.

By following these steps, you can add a contact form to your Hexo website using Fabform and handle form submissions securely. Make sure to customize the form and backend logic according to your specific requirements.