
在 EyouCMS 中,要在提交表单时获取并传递当前页面的 URL,有几种方法可以实现。这里为您介绍最可靠和常用的两种方法。
这是最常用且有效的方法。原理是:在表单中放置一个隐藏的输入框,然后通过 JavaScript 在页面加载时或表单提交前,将当前页面的 URL 自动填入这个隐藏域中。
1. 在表单中添加一个隐藏域
找到你的表单模板文件(可能是 form.Html或 message.html等),在 <form>标签内部添加一个 hidden类型的输入框。
2. 使用 JavaScript 为隐藏域赋值
在表单下方或页面底部,写入一段简单的 JavaScript 代码,将当前页面的完整 URL 赋值给这个隐藏域。
<script>
// 页面加载时执行
document.addEventListener('DOMContentLoaded', function() {
// 获取隐藏域元素
var urlField = document.getElementById('from_url');
// 将当前页面的完整URL赋值给它
if (urlField) {
urlField.value = window.location.href;
}
});
</script><form action="{:url('/api/index/message')}" method="post">
<input type="text" name="username" placeholder="您的姓名" required>
<input type="tel" name="phone" placeholder="联系电话" required>
<!-- 隐藏域,用于存储来源URL -->
<input type="hidden" name="from_url" id="from_url" value="">
<button type="submit">提交</button>
</form>
<script>
// 自动填充当前URL到隐藏域
document.getElementById('from_url').value = window.location.href;
</script>如果你的表单是直接写在 EyouCMS 的模板文件(如 .html)中,并且当前环境就是你要捕获的 URL,你也可以使用 EyouCMS 的模板变量来直接输出。
操作步骤:
直接在隐藏域的 value属性中使用 {$param}来获取。
<form action="{:url('/api/index/message')}" method="post">
<input type="text" name="username">
<input type="tel" name="phone">
<!-- 使用 EyouCMS 的服务器端变量 -->
<input type="hidden" name="from_url" value="{$param}">
<button type="submit">提交</button>
</form>注意: 这种方法获取的 $param变量可能不总是包含完整的 URL(可能只是路由参数),其可靠性取决于你页面的路由方式。因此,方法一(JavaScript)是更通用、更可靠的选择。
仅仅在前端捕获 URL 是不够的,你还需要在后台能够接收并保存这个值。
1. 确保你的自定义表单包含该字段
进入 EyouCMS 后台 -> 系统 -> 自定义字段。
字段类型 选择 内容(如果你的表单是留言板)或你对应的自由表单。
点击 添加字段,创建一个新的字段,例如:
字段名称: from_url
表单提示: 来源页面URL
字段类型: 单行文本
2. 在后台查看数据
提交表单后,你可以在后台的留言管理或自由表单的数据管理中,看到每条记录都包含了 from_url字段及其值,也就是用户提交表单时所在的页面地址。
方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
方法一:隐藏域+JS | 最可靠、最通用,能 100% 获取到浏览器地址栏的完整 URL。 | 需要客户端支持 JavaScript(现代浏览器均支持)。 | 强烈推荐,适用于所有情况。 |
方法二:PHP 模板变量 | 不依赖 JavaScript,直接在服务器端输出。 | 获取的 URL 可能不完整,依赖于 EyouCMS 的路由规则。 | 仅当你能确定 |
最佳实践建议:
直接采用 方法一,简单有效,能准确无误地捕获到来源页面的 URL,便于你后续进行数据分析(例如,分析哪个页面的表单转化率最高)。
标签:
本文链接:http://www.7ov.cn/xinwendongtai/2092.html
版权声明:站内所有文章皆来自网络转载,只供模板演示使用,并无任何其它意义!
下一篇: eyoucms表单提交前怎么加验证码?