网站留言表单是网站与访客互动的重要桥梁,无论是收集用户反馈、客户咨询还是其他互动需求,一个设计良好且功能完善的留言表单都至关重要。在安企CMS中,构建自定义留言表单远比你想象的要简单和灵活。系统内置的“网站留言”功能,提供了一个强大的基础框架,允许我们根据实际需求进行深度定制。

接下来,我们将详细探讨如何在安企CMS中构建一个满足你特定需求的自定义留言表单。

一、在后台配置留言表单字段

要开始构建留言表单,我们首先需要进入安企CMS的后台管理界面。找到并点击左侧菜单栏中的“功能管理”,然后选择“网站留言管理”。这里是所有留言表单相关设置的中心。

1. 基础字段: 通常,系统会提供一些基础字段,如访客姓名(user_name)、联系方式(contact)和留言内容(content)。这些足以满足大多数网站的基本留言需求,并且它们是默认存在的,你无需额外创建。

2. 自定义字段: 然而,如果你的业务有更独特的访客信息收集需求,安企CMS的强大之处就体现在其对自定义字段的灵活支持上。你可以根据实际情况添加更多字段,例如:

  • 文本类型(text):用于收集简短的文本信息,如公司名称、职位等。
  • 数字类型(number):用于收集纯数字信息,如年龄、预算金额等。
  • 多行文本(textarea):用于收集详细的描述性内容,如项目需求、建议等。
  • 单项选择(radio):提供预设选项,访客只能选择其中一项,例如“性别”、“产品类型”。
  • 多项选择(checkbox):提供预设选项,访客可以选择多项,例如“感兴趣的服务”、“产品功能”。
  • 下拉选择(select):提供一个下拉菜单供访客选择预设选项。

在添加自定义字段时,你可以设置字段的名称(用于后台和模板显示)、对应的字段变量名(用于数据存储和模板调用),并指定该字段是否为必填项。对于单选、多选和下拉选择类型的字段,你还需要设置它们的默认值,即提供给访客选择的各项内容,每项内容占一行。

这些设置完成后,表单的数据结构就已经在后台搭建完毕了。后台的配置直观且易于操作,只需几步就能完成字段的增删改查。

二、创建和定制留言表单模板

后台字段配置完毕后,我们需要将这些字段呈现在网站前端,形成一个可供访客填写的表单。

1. 模板文件位置: 根据安企CMS的模板约定,留言表单的模板文件通常位于你的当前模板目录下的 guestbook/index.html。如果该文件不存在,你可以手动创建一个。

2. 核心模板标签:guestbook 安企CMS提供了一个专门的guestbook模板标签,它能够智能地获取你在后台定义的留言字段。你可以通过循环这个标签返回的fields变量,动态地生成表单元素。

这是一个基本的留言表单模板结构示例:

<form method="post" action="/guestbook.html">
    {% guestbook fields %}
        {% for item in fields %}
        <div class="form-group">
            <label for="{{ item.FieldName }}">{{ item.Name }}</label>
            <div>
                {% if item.Type == "text" or item.Type == "number" %}
                <input type="{{ item.Type }}" name="{{ item.FieldName }}" id="{{ item.FieldName }}"
                       {% if item.Required %}required{% endif %}
                       placeholder="{{ item.Content }}" autocomplete="off" class="form-control">
                {% elif item.Type == "textarea" %}
                <textarea name="{{ item.FieldName }}" id="{{ item.FieldName }}"
                          {% if item.Required %}required{% endif %}
                          placeholder="{{ item.Content }}" rows="5" class="form-control"></textarea>
                {% elif item.Type == "radio" %}
                    {% for val in item.Items %}
                    <label>
                        <input type="{{ item.Type }}" name="{{ item.FieldName }}" value="{{ val }}"
                               {% if item.Required %}required{% endif %}> {{ val }}
                    </label>
                    {% endfor %}
                {% elif item.Type == "checkbox" %}
                    {% for val in item.Items %}
                    <label>
                        <input type="{{ item.Type }}" name="{{ item.FieldName }}[]" value="{{ val }}"
                               {% if item.Required %}required{% endif %}> {{ val }}
                    </label>
                    {% endfor %}
                {% elif item.Type == "select" %}
                <select name="{{ item.FieldName }}" id="{{ item.FieldName }}"
                        {% if item.Required %}required{% endif %} class="form-control">
                    {% for val in item.Items %}
                    <option value="{{ val }}">{{ val }}</option>
                    {% endfor %}
                </select>
                {% endif %}
            </div>
        </div>
        {% endfor %}

        <div class="form-group">
            <button type="submit" class="btn btn-primary">提交留言</button>
            <button type="reset" class="btn btn-secondary">重置</button>
        </div>
    {% endguestbook %}
</form>

在上面的代码中:

  • <form method="post" action="/guestbook.html"> 定义了表单的提交方式和目标地址。
  • {% guestbook fields %} 标签获取后台定义的表单字段,并将其赋值给fields变量。
  • {% for item in fields %} 循环遍历每一个字段。
  • {{ item.Name }} 显示字段的中文名称。
  • {{ item.FieldName }} 作为inputtextareanameid属性值。
  • {% if item.Required %}required{% endif %} 根据后台设置,自动添加HTML5的required属性。
  • placeholder="{{ item.Content }}" 将后台设置的默认值作为提示文本。
  • 根据item.Type的不同,我们生成了不同的HTML表单元素,如textnumbertextarearadiocheckboxselect。特别是对于多选、单选和下拉选择,我们再次循环item.Items来生成各个选项。

通过这种方式,你后台添加或修改任何字段,前端表单都会自动更新,大大提高了维护效率。

三、表单的进一步增强与安全防护

一个美观且功能完整的留言表单还需考虑用户体验和安全性。

1. 添加验证码: 为了有效防止恶意提交或垃圾信息,为留言表单添加验证码是一个非常重要的措施。

  • 后台开启: 首先,请确保在安企CMS后台的“功能管理”->“网站留言管理”中启用了验证码功能。
  • 模板集成: 在你的guestbook/index.html模板中,你需要添加验证码的显示区域和相关的JavaScript代码。

以下是集成验证码的模板代码示例(你可以根据自己的前端框架选择原生JS或jQuery版本):

原生JavaScript版本:

”`twig

<input type="hidden" name="captcha_id" id="captcha_id">
<input type="text" name="captcha" required placeholder="请填写验证码" class="form-control" style="flex: 1; margin-right: 10px;">
<img src="" id="get-captcha" style="width: 150px; height: 40px; cursor: pointer; border-radius: 4px; border: 1px solid #ddd;" alt="验证码">
<script>
    document.getElementById('get-captcha').addEventListener("click", function () {
        fetch('/api/captcha')
            .then(response => response.json())
            .