表单是网站和用户交互的重要组成,作为一个营销型网站来说,表单功能至关重要。哆麦CMS提供了简单高效的表单功能,集成了多个颇有用处的功能,例如留言过滤,禁止重复,内容转发,内容扩充,根据需求更改客户端响应等等。本文介绍如何在模版中开发留言功能,本文假设你已经有了一定的HTML知识,了解表单组成和数据提交原理。
一,表单组成
表单提交地址,通过函数“dminfo('feedback_url')”获取。表单提交方法必须为POST,系统支持以下表单字段:
user_name: 用户姓名 必填项
user_email: 用户邮箱
user_mobile: 用户电话
content: 留言内容 必填项
lang: 响应客户端的语言,为空则为网站默认语言,目前支持"zh-cn","en", "ru", "ar", "fr"语言代码。
format: 响应客户端的内容,若为json,则返回json数据,默认返回html内容。
post_ID: 留言的文章ID,非必需
parent: 父留言ID,非必需
group: 留言的分组,系统默认支持'inquiry'和'comment'
系统还会自动获取提交用户的IP,用户代理等。
系统改变了PHP默认的数据处理行为,前台的表单可以通过使用相同的字段获取多个内容而不被覆盖。
一个典型的表单的文件内容可以为:
<form action="<?php dminfo('feedback_url')?>" method="post"> <p><label for="user_name">姓名:</lable><input type="text" name="user_name" id="user_name" required></p> <p><label for="user_email">邮箱:</lable><input type="text" name="user_email" id="user_email" required></p> <p><label for="user_mobile">电话:</lable><input type="text" name="user_mobile" id="user_mobile"></p> <p><label for="content">内容:</label><textarea name="content" id="content" required></textarea></p> <p><input type="submit" value="提交"></p> </form>
二,高级功能
系统支持2个API,开发者可以通过注册函数在用户提交前对用户提交的数据进行处理,然后提交到系统中,留言提交完成之后,开发者也可以通过注册处理函数改变系统默认返回客户端的数据。这两个API分别是:
过滤器: pre_submit_feedback,处理函数接收一个用户提交的全局数据$_REQUEST
动作:flush_feedback_result,处理函数接收一个包含错误代码和信息数组的参数,你可以根据这个信息,对返回客户端的数据重新处理。
根据需要把处理代码加入到主题的functions.php文件即可,示例用法如下:
1,通过pre_submit_feedback过滤器在用户提交的内容中,增加一个固定的内容,示例如下:
function feedback_content_add_text($feedback){ $feedback[content] .= "\r\n这是一行所有留言都有的内容"; return $feedback; } add_filter('pre_submit_feedback', 'feedback_content_add_text');
通过这个过滤器,你可以对用户的原始提交数据进行任何更改,常见的应用包括通过JS获取用户的着陆页,然后把着陆页也插入到内容中,分析用户行为,跟踪转化。
2, 让系统支持AMP页面提交的数据。
function amp_response($response){ $origin = $_SERVER['HTTP_ORIGIN']; header('Access-Control-Allow-Origin:$origin'); header('Access-Control-Allow-Methods:POST'); header('Access-Control-Allow-Credentials:true'); header('Access-Control-Expose-Headers:AMP-Access-Control-Allow-Source-Origin'); header('AMP-Access-Control-Allow-Source-Origin:$origin'); header('Content-Type:application:json'); echo json_encode($response); } add_action('flush_feedback_result', 'amp_response');
评论列表