【问题标题】:Google Tag Manager Virtual Page ViewGoogle 跟踪代码管理器虚拟页面视图
【发布时间】:2017-08-08 07:34:11
【问题描述】:

我在设置一个 virtualPageView 时遇到了一点问题,它应该覆盖在没有结果时发送给 google 的 URL。

这是我的 JavaScript 代码:

function returnNoSearchResultsGoogleTagManagerCode($searchterm){
    if ($searchterm == "") return "";

    $requestUri = $_SERVER['REQUEST_URI'] . "&no_result=".$searchterm;


    $js = "<script>
        $(document).ready(function(){
             dataLayer.push({
                 'event':'empty_result',
                 'virtualPageURL':'".$requestUri."'
                });
            });


    </script>";

    return $js;
}

如您所见,我想使用事件触发器(empty_result)。

在谷歌中,我使用触发器来确定页面是否为无结果页面。首先,我使用自定义 JS 创建了一个自定义变量

    function(){
       if (document.getElementsByClassName('ga-no-result').length > 0){
            return true;
       }else{
            return false
       }
   }

如果 SearchEngine 找不到结果,则设置类。到现在为止还挺好。 我还创建了一个 dataLayer 变量来保存 virtualPageURL

现在我需要一个在变量为真时触发的事件。

最后我创建了一个 PageView 类型的标签,当事件发生时触发:

到目前为止,它似乎还可以,标签已正确配置(我猜),但如果我进行没有结果的搜索,则页面 URL 不会被覆盖

标签被正确触发并且变量被填充。 dataLayer 的概览显示了正确的 dataLayer 事件。 但是 PageURL 没有被覆盖......即使我等了一整天,该类别也不会发送到 google。

我做错了什么? 如果有人有想法甚至解决方案,我将非常感激:)

提前致谢

exa.byte

更新:

嘿,我忘了提,我想使用新的页面变量作为谷歌应该用来确定搜索词和搜索类别的字符串 在 Google Analytics 中,我将搜索配置为“q”参数,将“no_result”配置为类别。 甚至可以更改谷歌最终解析的字符串吗?

【问题讨论】:

  • 我认为对于虚拟页面视图,您必须更改字段“页面”-在您的 GTM-OnSearchEmptyResult 中您正在更改“{{页面 URL}}”-我认为这不是正确的发送方式虚拟浏览量。此外,如果您需要更改主机名,请使用字段名“主机名”。
  • Matus 所说的(应该是 IMO 的答案)。同样,为空结果页面设置自定义事件在自定义变量中测试空结果似乎都是多余的。
  • 嘿,谢谢你的回答。变量“page”不存在...正如您在屏幕截图中看到的,我可以访问“Page URL”、“Page Path”和“Page Hostname”@EikePierstorff 我没有完全得到您的评论。我使用Boolean-Var 用于测试页面是否为empty_result。我在这里看不到冗余。你能解释一下吗?bool 只是用来有一个触发器,virtualPageView 是我在Tag 中配置的我需要的dataLayer , DataLayer 中的值可以覆盖内置变量。也许我弄错了:(
  • 在“设置字段”界面中,最左边的文本框不是用于变量,而是用于您要更改其值的字段。保存当前页面路径的数据字段称为“页面”。因此,如果您想用虚拟 URL 覆盖当前页面路径,您可以通过将“页面”字段设置为虚拟页面路径变量的值来实现。为了更好地理解这是如何工作的,请查看字段参考:developers.google.com/analytics/devguides/collection/…
  • 修改后不要忘记刷新页面。我知道这听起来很愚蠢,但实际上经常发生:p

标签: javascript google-analytics google-tag-manager google-datalayer


【解决方案1】:

要将虚拟网页浏览量发送到 Google Analytics,您需要更改的字段是 page 而不是 {{Page Url}} ,也是 title 经常使用字段。

这实际上是发送简单的虚拟网页浏览量需要做的仅有的两件事。

额外:我总是以 /virtual/ 开始我的页面路径,以便能够在 GA 中轻松识别哪些是虚拟页面浏览量

【讨论】:

    【解决方案2】:

    对于虚拟页面视图,您必须更改字段“页面” - 在您的 GTM-OnSearchEmptyResult 中,您正在更改“{{页面 URL}}” - 我认为这不是发送虚拟页面视图的正确方法。此外,如果您需要更改主机名,请使用字段名“主机名”。

    在预览模式下,您不会在变量选项卡中看到页面 URL 发生变化,您必须转到实际触发的 GA 代码并检查其值。您可以在 GTM 的预览工具中执行此操作,也可以使用标准开发人员工具 - 网络选项卡并查看发送到 GA 的值:

    您可以看到“dl”参数是当前页面,如果您设置了虚拟页面,您还应该看到名为“dp”的参数,这将是您GA中页面的新值。

    【讨论】:

    • 您好,谢谢您的回复。我可以在我的网络选项卡中看到一个“dp”变量。 @Matus googl 现在是否使用此变量来检查搜索词和搜索类别? (这就是我真正想要对 url 字符串做的事情)我会更新 questen,到目前为止谢谢!
    【解决方案3】:

    如果您想设置虚拟综合浏览量,您必须在 fieldname文档标题 中使用 page 而不是 {{Page URL}} > 在你的字段名中使用 title。 有关谷歌分析的更多字段参考,请点击以下链接 https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitType.

    【讨论】:

      【解决方案4】:

      如果您不想弄乱自定义跟踪代码管理器事件,仍然可以使用旧的 ga 方法,即使您没有在页面上包含 Google Analytics(分析)代码。您只需要动态获取正确的跟踪器,如 Simo Ahava in this thread 所述。

      if (typeof ga === "function") {
        ga.getAll().forEach((tracker) => {
          tracker.set('page', '/my/path'); // <- change here
          tracker.send('pageview');
        });  
      }
      

      我也把它放在gist here

      【讨论】:

        【解决方案5】:

        感谢您的帮助。我想我摆脱了这个问题,现在已经解决了。我将在下面描述我的解决方案:

        解决方法很简单。

        1. 我有一个错误/拼写错误@google 后端。我将 search_category 参数设置为“no_results”,但使用“no_result”来实现...... 相当愚蠢,但有时你就是只见树木不见森林......

        2. 我创建了一个新触发器作为助手“HelperDomReady”,仅当 DOM 准备好并且变量“isEmptySearch”等于“(bool)true”时才触发

        现在我可以在“站点搜索类别”摘要中看到在谷歌后端没有结果的搜索词。由于我根本不会设置参数,如果搜索至少有一次点击,则站点搜索类别显示“未设置”以表示成功的结果。因此,类别部分将仅显示没有命中的搜索。问题解决了:)

        缺点:搜索词也列在正常列表中。但我认为这可以忽略不计

        【讨论】:

          猜你喜欢
          • 2018-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-22
          • 1970-01-01
          • 2017-12-20
          • 2016-01-21
          • 2013-08-14
          相关资源
          最近更新 更多