【问题标题】:Matomo - Multiple Containers / Tag Managers on Single SiteMatomo - 单个站点上的多个容器/标签管理器
【发布时间】:2021-07-02 08:14:02
【问题描述】:

设置

  • 我的团队正在构建一个 Web 组件,该组件集成在许多主机站点上
  • 这些主机站点中的每一个都由不同的团队管理,并拥有自己的 Matomo 跟踪代码管理器,具有自己的 ID,例如<script src="https://.../container_ugas78d7sg.js">
  • 我们只想在仪表板中可视化我们自己的事件。我们不关心托管站点的分析,托管站点也不关心我们的分析。
  • 我的想法是加载第二个标签管理器脚本,例如<script src="https://.../container_asd3s99ssd.js"> 并使用第二个容器发送事件。然而,这两个脚本都想在window._mtm 中加载标签管理器。
  • Multiple containers on the same site should to be possible,但是文档中没有示例

问题:

  • 如何在不覆盖_mtm的情况下加载第二个容器并向其发送事件?
  • 在不装载第二个容器的情况下是否有更好的选择?

【问题讨论】:

  • 也许你可以尝试声明一次_mtm,然后为不同的容器多次声明_mtm.push
  • _mtm.push 如何知道要推送到哪个容器?
  • 我认为脚本本身正在设置_mtm。我无法控制它的命名。如果我加载第二个脚本,它会被忽略并且 _mtm 仍然引用第一个跟踪代码管理器。

标签: javascript analytics matomo


【解决方案1】:

看来我想多了。一个可以只加载 2 个不同的容器脚本,第二个不会覆盖 _mtm。两者都可以单独配置,并将事件发送到各自的 siteId。

【讨论】:

    【解决方案2】:

    你可以做吗例如:

    <!-- Matomo Tag Manager -->
    <script type="text/javascript">
        var _mtm1 = window._mtm1 = window._mtm1 || [];
        _mtm1.push({'mtm1.startTime': (new Date().getTime()), 'event': 'mtm1.Start'});
    
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.type='text/javascript'; g.async=true; g.src='https://{$MATOMO_URL}/js/container_{$CONTAINER}.js'; s.parentNode.insertBefore(g,s);
    
        var d1=document, g1=d1.createElement('script'), s1=d1.getElementsByTagName('script')[1];
        g1.type='text/javascript'; g.async=true; g1.src='https://{$MATOMO_URL}/js/container_{$CONTAINER}.js'; s1.parentNode.insertBefore(g1,s1);
    </script>
    <!-- End Matomo Tag Manager -->
    

    我认为整个窗口中只需要一个 _mtm,因为它只包含 startTime。您唯一需要做的就是将第二个容器加载到页面,它们都将使用相同的“startTime”变量——我认为这两个容器没有理由使用不同的“startTime”变量。

    我不太确定在getElementsByTagName 期间是否应该获取数组的第一个或第二个元素。

    希望它有效!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多