You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在现有UTM参数追踪逻辑中存储着陆页URL?

问题:如何在UTM参数追踪函数中添加着陆页URL存储逻辑?

我正在开发一个用于追踪网站访客UTM参数及来源信息的函数,该函数从请求对象中获取UTM source、term和campaign,若为新参数则存储到会话(session)中。以下是相关代码片段:

$utmSources = session('source_details') ?? [];
$utmSources = collect($utmSources);
$x = [];

if (count($utmSources) == 0) {
    $id = count($utmSources) + 1;
    $currentTimeUTC = now()->utc()->format('Y-m-d H:i:s');

    $x = [
        'id' => $id,
        'source_tag' => 'utm',
        'source_value' => Session::get('source_value'),
        'time' => $currentTimeUTC,
    ];

    $sources = !empty($x) ? $utmSources->add($x) : $utmSources;

    Session::put('source_details' , $sources);
} else {
    $lastElement = $utmSources->last();
    $sourceValue = $lastElement['source_value'];

    if (($sourceValue != $utmSource && $utmSource != null)) {
        $id = count($utmSources) + 1;
        $currentTimeUTC = now()->utc()->format('Y-m-d H:i:s');

        $x = [
            'id' => $id,
            'source_tag' => 'utm',
            'source_value' => $utmSource,
            'time' => $currentTimeUTC,
        ];

        $sources = !empty($x) ? $utmSources->add($x) : $utmSources;

        Session::put('source_details' , $sources);
    }
}

我希望将着陆页URL与UTM参数一同存储,请问在该代码片段中插入存储着陆页URL逻辑的最佳位置在哪里?


解决方案

最佳位置分为两步操作:

  1. 提前获取着陆页URL:在代码开头初始化集合后,立即获取当前请求的完整URL(即访客的着陆页)。可以用Laravel的request()->fullUrl()获取包含所有参数的完整URL,或request()->url()获取不带参数的基础URL,按需选择。

  2. 绑定URL到UTM记录:在两个新增UTM记录的分支(空会话时首次记录、UTM source变化时新增记录)中,给$x数组添加landing_page字段,将获取到的URL存入其中。

修改后的完整代码如下:

$utmSources = session('source_details') ?? [];
$utmSources = collect($utmSources);
$x = [];

// 新增:获取当前着陆页完整URL
$landingPageUrl = request()->fullUrl();

if (count($utmSources) == 0) {
    $id = count($utmSources) + 1;
    $currentTimeUTC = now()->utc()->format('Y-m-d H:i:s');

    $x = [
        'id' => $id,
        'source_tag' => 'utm',
        'source_value' => Session::get('source_value'),
        'time' => $currentTimeUTC,
        'landing_page' => $landingPageUrl // 新增:存储着陆页URL
    ];

    $sources = !empty($x) ? $utmSources->add($x) : $utmSources;

    Session::put('source_details' , $sources);
} else {
    $lastElement = $utmSources->last();
    $sourceValue = $lastElement['source_value'];

    if (($sourceValue != $utmSource && $utmSource != null)) {
        $id = count($utmSources) + 1;
        $currentTimeUTC = now()->utc()->format('Y-m-d H:i:s');

        $x = [
            'id' => $id,
            'source_tag' => 'utm',
            'source_value' => $utmSource,
            'time' => $currentTimeUTC,
            'landing_page' => $landingPageUrl // 新增:存储着陆页URL
        ];

        $sources = !empty($x) ? $utmSources->add($x) : $utmSources;

        Session::put('source_details' , $sources);
    }
}

这样修改的逻辑合理性:只有当UTM参数为新值(首次访问或source变更)时,才需要记录对应着陆页,这两个分支正好是新增UTM记录的触发点,此时的URL就是访客进入该UTM渠道的着陆页,完全匹配业务需求。

内容的提问来源于stack exchange,提问作者minul hemasara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 16:33:19