
在 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://m.www9463.cn/xinwendongtai/2092.html
版權聲明:站內所有文章皆來自網絡轉載,只供模板演示使用,并無任何其它意義!
下一篇: eyoucms表單提交前怎么加驗證碼?