在网站运营中,与访问者建立有效互动是提升用户体验、收集宝贵反馈的关键一环。安企CMS深知这一点,因此为我们提供了强大而灵活的留言表单功能,不仅支持基础的留言收集,还能轻松实现自定义字段和验证码,让网站的互动模块既高效又安全。
接下来,我们将深入探讨如何在安企CMS的前台页面构建并显示一个功能完备的留言表单,同时支持自定义字段和验证码,从而更好地服务我们的用户。
留言表单的核心构建
构建留言表单的第一步,是理解安企CMS如何在前台调用留言功能。安企CMS提供了一个专门的模板标签 {% guestbook fields %},它能够智能地获取我们在后台为留言表单配置的所有字段信息。这意味着我们无需手动编写每个表单元素,系统会自动将后台设置的字段传递给前端模板进行渲染。
一个基础的留言表单通常包含用户姓名、联系方式和留言内容。在后台的“功能管理”下的“网站留言”中,我们可以找到并管理这些基础字段,也可以在此基础上添加更多自定义需求。
在前台模板文件(通常是 guestbook/index.html 或你为留言功能指定的其他模板)中,我们的表单结构会大致如下所示。请注意,表单的 action 属性应指向 /guestbook.html,method 为 post,这是安企CMS接收留言的标准接口。
<form method="post" action="/guestbook.html">
<input type="hidden" name="return" value="html"> {# 可选,指定后端返回格式为HTML #}
<div>
<label for="user_name">您的姓名:</label>
<input type="text" id="user_name" name="user_name" required placeholder="请填写您的称呼">
</div>
<div>
<label for="contact">联系方式:</label>
<input type="text" id="contact" name="contact" required placeholder="您的电话/邮箱/微信">
</div>
<div>
<label for="content">留言内容:</label>
<textarea id="content" name="content" rows="5" required placeholder="请留下您的宝贵留言..."></textarea>
</div>
{# 这里将是自定义字段和验证码的插入位置 #}
<div>
<button type="submit">提交留言</button>
<button type="reset">重置</button>
</div>
</form>
这段代码为我们提供了一个基本的留言框架。其中 user_name、contact 和 content 是系统默认且在提交时需要提供的字段,即使我们没有在后台为它们特别设置,也应在表单中包含它们。
灵活的自定义字段支持
安企CMS的强大之处在于其内容模型的灵活性,这一特性也延伸到了留言表单。在后台设置中,我们可以轻松地为留言表单添加各种自定义字段,例如“所属行业”、“您的公司”、“感兴趣的产品”等,以满足不同的业务需求。
当我们使用 {% guestbook fields %} 标签时,它会返回一个 fields 数组,其中包含了所有在后台配置的留言表单字段(包括系统默认和我们自定义的)。我们可以遍历这个 fields 数组,动态地渲染表单元素。这种方式极大地提高了模板的复用性和可维护性。
以下是一个动态渲染自定义字段的示例代码:
<form method="post" action="/guestbook.html">
<input type="hidden" name="return" value="html">
{# 动态渲染留言表单字段 #}
{% guestbook fields %}
{% for item in fields %}
<div>
<label for="{{item.FieldName}}">{{item.Name}}:</label>
<div>
{# 根据字段类型渲染不同的输入框 #}
{% if item.Type == "text" || item.Type == "number" %}
<input type="{{item.Type}}" id="{{item.FieldName}}" name="{{item.FieldName}}" {% if item.Required %}required{% endif %} placeholder="{{item.Content}}" autocomplete="off">
{% elif item.Type == "textarea" %}
<textarea id="{{item.FieldName}}" name="{{item.FieldName}}" {% if item.Required %}required{% endif %} placeholder="{{item.Content}}" rows="5"></textarea>
{% elif item.Type == "radio" %}
{%- for val in item.Items %}
<label><input type="radio" 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="checkbox" name="{{item.FieldName}}[]" value="{{val}}" {% if item.Required %}required{% endif %}> {{val}}</label>
{%- endfor %}
{% elif item.Type == "select" %}
<select id="{{item.FieldName}}" name="{{item.FieldName}}" {% if item.Required %}required{% endif %}>
{%- for val in item.Items %}
<option value="{{val}}">{{val}}</option>
{%- endfor %}
</select>
{% endif %}
</div>
</div>
{% endfor %}
{% endguestbook %}
{# 验证码将在此处插入 #}
<div>
<button type="submit">提交留言</button>
<button type="reset">重置</button>
</div>
</form>
通过这段代码,无论是文本框、数字输入、多行文本、单选、多选还是下拉菜单,安企CMS都能根据后台的配置,在前台自动生成相应的HTML表单元素。我们只需要关注字段的逻辑和样式,无需为每种字段类型编写重复的HTML结构。
增强安全性:验证码的集成
为了防止恶意提交和垃圾信息,留言表单通常需要集成验证码功能。安企CMS内置了验证码支持,我们只需在后台“全局设置”->“内容设置”中启用留言评论验证码,便可以将其集成到前端表单。
集成验证码的关键在于生成一个唯一的验证码ID和对应的图片,并在用户提交时一同验证。以下是集成验证码的模板和JavaScript代码片段:
”`twig
{# 如果您的网站使用jQuery,也可以这样写: #} {#
$(document).ready(function() {
$('#get-captcha').on("click", function() {
$.get('/api/captcha', function(res) {
if (res.code === 0 && res.data) {
$('#captcha_id').val(res.data