JavaScript跟踪客户端

JavaScript跟踪客户端

您可以使用JavaScript跟踪客户端来跟踪任何支持JavaScript的应用程序:例如网站!

本指南将解释如何使用JavaScript跟踪客户端来自定义在Matomo(以前的Piwik)中记录一些web分析数据的方式。

寻找Matomo跟踪代码

要使用本页中描述的所有功能,您需要使用最新版本的跟踪代码。要找到您网站的跟踪代码,请遵循以下步骤:

  • 登录Matomo与您的管理或超级用户帐户
  • 点击右上角菜单中的“管理”(齿轮图标)
  • 点击左侧菜单中的“跟踪代码”(在“可测量”或“网站”菜单下)
  • 点击“JavaScript跟踪”部分
  • 选择要跟踪的网站
  • 复制并粘贴JavaScript跟踪代码到您的页面,就在打开之后身体< >标记(或在< >头部分)

跟踪代码如下所示:

<!——Matomo——>  

在你的追踪代码中,{$ MATOMO_URL}将被您的Matomo URL和{$ IDSITE}将被您正在马托莫跟踪的网站的idsite所取代。

对于熟悉JavaScript的人来说,这段代码可能看起来有点奇怪,但这是因为它是为异步运行而设计的。换句话说,浏览器不会等待matomo.js文件,以显示您的页面。

对于异步跟踪,配置和跟踪调用被推到全局_paq数组进行执行,与异步加载无关matomo.js.格式为:

_paq.push([ 'API_method_name', parameter_list ]);

您还可以推送要执行的函数。例如:

var visitor_id;_paq.push([ function() { visitor_id = this.getVisitorId(); }]);

或者,例如,获取一个自定义变量(名称,值)使用异步代码:

_paq.push ([' setCustomVariable ', ' 1 ', ' VisitorType ', '成员']);_paq.push([ function() { var customVariable = this.getCustomVariable(1); }]);

你可以推到_paq数组,即使在matomo.js文件已加载并运行。

如果您的Matomo跟踪代码与此不同,那么您可能正在使用已弃用的版本。旧版本仍然可以正常工作,并将跟踪您的访问者,但我们强烈建议您更新您的页面以使用最新的跟踪代码。

需求

支持的浏览器

JavaScript跟踪器运行在所有支持JSONAPI。这包括IE8及更高版本。点击这里查看支持的浏览器的完整列表。.如果你需要支持IE7和更老的版本,那么你可以加载一个使窗口。JSON可用的例如JSON3.在加载Matomo JS跟踪器之前,需要加载这个填充。

已知的不兼容问题

  • prototype js库覆盖了浏览器的JSON API,并导致问题,例如自定义变量导致错误(参见# 16596).解决方法是删除原型JS库或手动覆盖JSON对象(参见上文,例如使用JSON3)。

JavaScript跟踪器特性

自定义页面标题

默认情况下Matomo使用HTML页面的标题来跟踪页面标题,您可以使用该函数自定义它setDocumentTitle

_paq.push(['setDocumentTitle', document.title]); _paq.push(['trackPageView']);

如果你追踪同一网站的多个子域名,你可能想要你的页面标题前缀子域,让你很容易看到每个子域的流量和数据。你可以简单地这样做:

_paq.push(['setDocumentTitle', document.domain + "/" + document.title]); _paq.push(['trackPageView']);

高级用户也可以动态生成页面名称,例如,使用PHP:

_paq.push(['setDocumentTitle', ""]); _paq.push(['trackPageView']);

自定义页面URL

默认情况下,Matomo使用当前页面的URL作为报表中的page URL。您可以使用该函数自定义要跟踪的页面URLsetCustomUrl,在FAQ中了解更多如何使用Matomo Javascript跟踪器设置自定义URL ?

手动触发事件

默认情况下,当JavaScript跟踪代码加载并在每个页面视图上执行时,Matomo会跟踪页面视图。

然而,在现代web应用程序中,用户交互不一定涉及加载新页面。例如,当用户点击一个JavaScript链接,或者当他们点击一个标签(这会触发一个JS事件),或者当他们与用户界面的元素交互时,您仍然可以用Matomo跟踪这些交互。

要跟踪任何用户交互或点击Matomo,可以手动调用JavaScript函数trackEvent ().例如,如果你想跟踪JavaScript菜单上的一次点击,你可以这样写:

页< / >

你可以了解更多跟踪事件请参见用户指南。

手动触发目标转换

默认情况下,Matomo中的目标被定义为URL的“匹配”部分(以匹配开头、包含匹配或正则表达式匹配)。您还可以跟踪给定的页面视图、下载或外链接点击的目标。

在某些情况下,你可能想要在其他类型的动作上注册转换,例如:

  • 当用户提交表单时
  • 当用户在页面上停留的时间超过一定数量时
  • 当用户在你的Flash应用程序中进行交互时
  • 当用户提交了购物车并完成了付款:你可以给Matomo跟踪代码到付款网站,然后在你的Matomo数据库中注册转换,转换的自定义收入

要触发目标转换:

//记录目标1 _paq的转换。推动([trackGoal, 1]);

您还可以使用自定义收益为这个目标注册一个转换。例如,您可以生成对trackGoal ()动态设置事务的收益:

//使用自定义收益集_paq记录目标1的转换。push(['trackGoal', 1, ]);

在Matomo中找到更多关于目标跟踪的信息跟踪目标文档。

准确衡量花在每一页上的时间

默认情况下,当用户在一次访问中只访问一个页面视图时,Matomo将假设访问者在网站上花费了0秒。这有几个后果:

  • 当访问者只浏览一个页面视图时,“访问时长”为0秒。
  • 当访问者浏览多个页面时,该访问的最后一个页面视图的“花费在页面上的时间”为0秒。

可以对Matomo进行配置,使其准确地测量访问所花费的时间。为了更好地衡量在访问中花费的时间,在JavaScript代码中添加以下内容:

//准确地测量访问花费的时间_paq.push(['enableHeartBeatTimer']);

然后Matomo将发送请求,以计算用户在访问中所花费的实际时间,只要用户正在积极地查看页面(即当标签处于活动和焦点状态时)。心跳请求在以下情况下执行:

  • 在当前选项卡激活至少15秒后切换到另一个浏览器选项卡(可以在下面配置)。
  • 导航到同一选项卡中的另一个页面。
  • 关闭选项卡。
//更改一个标签需要活跃多长时间才能被计算为以秒为单位的浏览// /需要一个页面被活跃浏览30秒才能发送任何心跳请求。_paq.push(['enableHeartBeatTimer', 30]);

注意:当测试心脏跳动计时器,记得确保浏览器标签有焦点,而不是eg。开发人员工具或另一个面板。

电子商务跟踪

Matomo允许先进和强大的电子商务跟踪。请查看电子商务分析有关电子商务报告和如何设置电子商务跟踪的更多信息的文档。

内部搜索跟踪

Matomo提供高级服务网站搜索分析功能,让您跟踪您的访问者如何使用您的内部网站搜索引擎。默认情况下,Matomo可以读取包含搜索关键字的URL参数。但是,您也可以使用JavaScript函数手动记录站点搜索关键字trackSiteSearch(…)

在你的网站中,在标准的页面中,你通常会调用通过来记录页面浏览量matomoTracker.trackPageView ().在你的搜索结果页面,你会呼叫而不是piwikTracker。trackSiteSearch(关键字,类别,搜索计数)函数记录内部搜索请求。注意:'keyword'参数是必需的,category和searchCount是可选的。

_paq.push(['trackSiteSearch', // Search keyword searched for "Banana", // Search category selected in your search engine. If you do not need this, set to false "Organic Food", // Number of results on the Search results page. Zero indicates a 'No Result Search Keyword'. Set to false if you don't know 0 ]); // We recommend not to call trackPageView() on the Site Search Result page // _paq.push(['trackPageView']);

我们还强烈建议设置searchCount参数,因为Matomo将特别报告“无结果关键字”,即。已搜索但未返回任何结果的关键字。知道用户在你的网站上搜索什么却找不到(还没有?)通常是非常有趣的。了解更多用户文档中的网站搜索分析

自定义变量

自定义变量是一个强大的功能,它使您能够跟踪每次访问和/或每次页面视图的自定义值。请参阅跟踪自定义变量一般信息的文档页。

您可以为每次访问您的网站设置最多5个自定义变量(名称和值),和/或为每次页面视图设置最多5个自定义变量。如果您为访问者设置了一个自定义变量,当他们在一小时或两天后回来时,这将是一次新的访问,他们的自定义变量将为空。

有两个“范围”,你可以设置你的自定义变量。scope是函数的第四个参数setCustomVariable ()

  • 当scope = "visit"时,自定义变量的名称和值将存储在数据库中的visit中。因此,您最多可以为每次访问存储5个范围为“visit”的自定义变量。
  • 当scope = "page"时,自定义变量的名称和值将存储在被跟踪的页面视图中。因此,您可以为每个页面视图存储最多5个范围为“page”的自定义变量。

“index”参数是自定义变量槽位索引,取值为1 ~ 5的整数。(注意:阅读这个常见问题如果你需要超过默认的5个插槽)。

自定义变量统计报告在Matomo下访问者>自定义变量.范围“visit”和“page”的两个自定义变量都聚合在这个报告中。

访问的自定义变量

setCustomVariable(index, name, value, scope = "visit")

此函数用于创建或更新自定义变量名和值。例如,假设您想在每次访问中存储用户的性别。你可以用name = "gender", value = "male"或"female"来存储自定义变量。

重要的是:给定的自定义变量名必须始终存储在相同的“索引”中。例如,如果您选择存储变量name = "性别"索引= 1并且在index = 1中记录另一个自定义变量,那么“Gender”变量将被删除,并被存储在index 1中的新自定义变量所取代。

_paq.push(['setCustomVariable', // Index, the number from 1 to 5 where this custom variable name is stored 1, // Name, the name of the variable, for example: Gender, VisitorType "Gender", // Value, for example: "Male", "Female" or "new", "engaged", "customer" "Male", // Scope of the custom variable, "visit" means the custom variable applies to the current visit "visit" ]); _paq.push(['trackPageView']);

您只需要设置一次范围为“visit”的变量,该值将被记录整个访问过程。

页面视图的自定义变量

setCustomVariable(index, name, value, scope = "page")

与跟踪“访问”的自定义变量一样,有时单独跟踪每个页面视图的自定义变量也很有用。例如,对于“新闻”网站或博客,一篇给定的文章可以分为一个或几个类别。在这种情况下,可以设置一个或多个自定义变量name = "类别",一个值= "运动"另一个是值=“欧洲”如果文章属于体育类和欧洲类。然后,自定义变量报告将报告在您的网站的每个类别中有多少访问和页面视图。这些信息很难通过标准Matomo报告获得,因为它们报告的“最佳页面url”和“最佳页面标题”可能不包含“类别”信息。

//跟踪2个名称相同但位置不同的自定义变量。//您将在“访问者>自定义变量的报告_paq。push(['setCustomVariable', 1, 'Category', 'Sports', 'page']);//在不同的Index _paq中跟踪相同的名称。push(['setCustomVariable', 2, 'Category', 'Europe', 'page']);//这里你可以在索引3,4,5中跟踪其他范围为"page"的自定义变量//顺序很重要:首先setCustomVariable被调用,然后trackPageView记录请求_paq.push(['trackPageView']);

重要的是:可以在“索引”1中存储范围为“visit”的自定义变量,而在同一个“索引”1中存储范围为“page”的不同自定义变量。因此,从技术上讲,你可以在每个页面上跟踪多达10个自定义变量名称和值你的网站(5个“页面”范围存储在实际页面视图中,5个“访问”范围存储在访问中)。

_paq.push(['setCustomVariable', // Index, the number from 1 to 5 where this custom variable name is stored for the current page view 1, // Name, the name of the variable, for example: Category, Sub-category, UserType "category", // Value, for example: "Sports", "News", "World", "Business", etc. "Sports", // Scope of the custom variable, "page" means the custom variable applies to the current page view "page" ]); _paq.push(['trackPageView']);

删除自定义变量

deleteCustomVariable(指数、范围)

如果您创建了一个自定义变量,然后决定从访问或页面视图中删除该变量,则可以使用deleteCustomVariable。

要在Matomo服务器中持久化更改,必须在调用trackPageView ();

_paq.push(['deleteCustomVariable', 1, "visit"]); // Delete the variable in index 1 stored for the current visit _paq.push(['trackPageView']);

检索自定义变量

getCustomVariable(指数、范围)

此函数可用于获取自定义变量名和值。默认情况下,它只适用于在同一页面加载期间设置的自定义变量。

注意:可以这样配置MatomogetCustomVariable还将返回范围为“visit”的自定义变量的名称和值,即使它是在同一次访问的前一个页面视图中设置的。要启用此行为,请调用JavaScript函数storeCustomVariablesInCookie在调用trackPageView.这将允许在第一方cookie中存储范围为“visit”的自定义变量。自定义变量cookie将在访问期间有效(在最后一个操作后30分钟)。然后可以使用。检索自定义变量名和值getCustomVariable.如果请求的索引中没有自定义变量,则返回false。

_paq.push([ function() { var customVariable = this.getCustomVariable( 1, "visit" ); // Returns the custom variable: [ "gender", "male" ] // do something with customVariable... }]); _paq.push(['trackPageView']);

自定义尺寸

自定义尺寸是一个强大的功能,使您能够跟踪每次访问的自定义值,和/或每个操作(页面视图,输出链接,下载)。该特性不直接随Matomo一起提供,但可以通过插件安装Matomo市场(CustomDimensions插件).在使用自定义维度之前,您需要安装插件并配置至少一个维度,请参阅自定义尺寸指南.您将为每个配置的自定义维度获得一个数字ID,该ID可用于为其设置值。

跨跟踪请求跟踪自定义维度

要跟踪一个值,只需指定ID后跟一个值:

_paq.push(['setCustomDimension', customDimensionId = 1, customDimensionValue = 'Member']);

请注意,一旦设置了自定义维度,该值将用于所有后续跟踪请求,如果不希望这样,可能会导致不准确的结果。例如,如果您跟踪一个页面视图,自定义维度值将在同一页面加载中跟踪每个后续事件、出站链接、下载等。调用此方法实际上不会触发跟踪请求,相反,这些值将与以下跟踪请求一起发送。在跟踪请求调用之后删除自定义维度值_paq.push(['deleteCustomDimension', customDimensionId]);

为初始页面视图设置自定义维度

若要为初始页面视图设置自定义维度,请确保对方法调用进行定位setCustomDimension之前trackPageView

_paq.push(['setCustomDimension', customDimensionId = 1, customDimensionValue = 'Member']); _paq.push(['trackPageView']); // _paq.push(['enableLinkTracking']); // rest of tracking code

仅跟踪一个特定操作的自定义维度

可以仅为一个特定操作设置自定义维度。如果您想跟踪一个Page视图,您可以发送一个或多个特定的自定义维度值与此跟踪请求,如下所示:

_paq.push(['trackPageView', pageTitle, {dimension1: 'DimensionValue'}]);

要定义维度值,将定义一个或多个属性的对象传递给最后一个参数(确保指定方法中定义的所有参数,我们不会自动假设最后一个参数是customData,而是需要将方法定义的所有参数传递给每个方法)。维度的属性名以例如,后面跟着一个自定义维度IDdimension1.同样的行为也适用于其他几种方法:

_paq.push(['trackEvent', category, action, name, value, {dimension1: 'DimensionValue'}]); _paq.push(['trackSiteSearch', keyword, category, resultsCount, {dimension1: 'DimensionValue'}]); _paq.push(['trackLink', url, linkType, {dimension1: 'DimensionValue'}]); _paq.push(['trackGoal', idGoal, customRevenue, {dimension1: 'DimensionValue'}]);

这样做的好处是,所设置的维度值将仅用于此特定操作,并且您不必在跟踪请求之后删除该值。你可以像这样设置多个维度的值:

_paq.push(['trackPageView', pageTitle, {dimension1: 'DimensionValue', dimension4: 'Test', dimension7: 'Value'}]);

检索自定义维度值

getCustomDimension (customDimensionId)

此函数可用于获取自定义维度的值。只有在同一页面加载期间设置了自定义维度,它才会工作。

用户ID

用户ID是Matomo的一个功能,它可以让你将从多个设备和多个浏览器收集的给定用户数据连接在一起。实现User ID有两个步骤:

  • 必须分配一个唯一且持久的非空字符串,表示每个登录用户。通常,这个ID将是您的身份验证系统提供的电子邮件地址或用户名。
  • 您必须为每个页面视图设置用户ID,否则页面视图将在没有设置用户ID的情况下被跟踪。
  • 然后,您必须将此用户ID字符串通过setUserId方法调用跟踪*函数(trackPageviewtrackEventtrackGoaltrackSiteSearch等),例如:
_paq.push(['setUserId', 'USER_ID_HERE']); _paq.push(['trackPageView']);

注意:USER_ID_HERE必须是唯一且持久的非空字符串,表示跨设备的用户。

当用户登录时,设置“用户ID”

让我们举个例子。想象一下,您的网站通过使用PHP脚本的登录表单对用户进行身份验证。下面是你的Matomo JavaScript代码片段:

Var _paq = window。_paq = window。_paq || [];<?php //如果用户已经登录,那么调用'setUserId' //当用户成功验证到你的应用程序时,$userId变量必须由服务器设置。push(['setUserId', '%s']);", $userId);} ?> _paq.push(['trackPageView']);_paq.push ([' enableLinkTracking ']);

当用户退出时,重置“用户ID”

当用户已注销且用户ID不再可用时,建议通过调用resetUserId之前的方法trackPageView

如果您想在用户注销时创建一个新的访问,那么您也可以通过调用强制Matomo创建一个新的访问resetUserId而且appendToTrackingUrl(两次)如下:


//用户刚刚注销,我们重置用户ID _paq.push(['resetUserId']);//我们也强制为登出_paq后的页面视图创建一个新的访问。推([‘appendToTrackingUrl’,‘new_visit = 1]);_paq.push ([' trackPageView ']);//我们最终确保不会再次创建一个新的访问之后(重要的单页应用程序)_paq。推动([‘appendToTrackingUrl’,”]);

内容跟踪

有几种方法可以手动、半自动和自动跟踪内容印象和互动。请注意,内容印象将跟踪使用批量跟踪,这将始终发送一个帖子请求,即使得到配置为默认值。欲了解更多细节,请参阅内容跟踪的深入指南

跟踪页面内所有内容的印象

你可以使用这个方法trackAllContentImpressions ()来扫描整个DOM的内容块。对于每个内容块,我们将立即跟踪内容印象。如果你只想追踪可见内容的印象就看一看trackVisibleContentImpressions ()

_paq.push ([' trackPageView ']);_paq.push ([' trackAllContentImpressions ']);

如果您多次调用此方法,我们将不会发送同一内容块的印象两次,除非trackPageView ()同时调用。这对于单页应用程序非常有用。

只跟踪页面中可见内容的印象。

允许跟踪仅可见内容印象通过trackVisibleContentImpressions (checkOnScroll timeIntervalInMs).可见意味着内容块已经在视图端口中,并且没有被隐藏(不透明度、可见性、显示等等)。

  • 您还可以告诉我们在每次滚动后不重新扫描DOMcheckOnScroll = false.否则,我们将检查之前隐藏的内容块是否在滚动后同时变得可见,如果是,则跟踪印象。
    • 限制:如果内容块被放置在可滚动元素中(溢出:滚动),我们目前不会检测到这种元素何时可见。
  • 你还可以告诉我们每隔X毫秒重新扫描整个DOM的新内容timeIntervalInMs = 500.默认情况下,我们将每750ms重新扫描一次DOM。让它失效timeIntervalInMs = 0
    • 重新扫描整个DOM并检测内容块的可见状态可能需要一段时间,具体取决于浏览器、硬件和内容量。如果你的每秒帧数下降,你可能想要增加间隔或完全禁用它。如果您禁用它,您仍然可以在任何时候通过再次调用此方法或手动重新扫描DOMtrackContentImpressionsWithinNode ()

这两个checkOnScroll而且timeIntervalInMs第一次调用此方法后不能更改。

_paq.push ([' trackPageView ']);_paq.push(['trackVisibleContentImpressions', true, 750]);

只跟踪页面的一部分内容印象

使用方法contentTarget trackContentImpressionsWithinNode (domNode)如果你是在我们跟踪了初始印象之后才向DOM添加元素。调用此方法将确保跟踪该节点中包含的所有内容块的印象。

例子

Var div = $('
…< div data-track-content > < / div >…< div data-track-content >…< / div > < / div >”);$ (' # id ') .append (div);_paq.push(['trackContentImpressionsWithinNode', div[0]]);

在这个例子中,我们将检测到两个新的内容印象。如果您只跟踪可见内容块,我们将尊重这一点。

半自动跟踪交互

与内容块的交互通常在访问者点击它时自动跟踪。有时,您可能希望手动触发交互,例如,如果您希望基于表单提交或双击触发交互。为此,调用方法contentInteraction trackContentInteractionNode (domNode)

例子

formElement。addEventListener('submit', function () {_paq. addEventListener)push(['trackContentInteractionNode', this, 'submittedForm']);});
  • 传递的domNode可以是内容块中的任何节点,也可以是内容块元素本身。如果没有找到内容块,就不会跟踪任何内容。
  • 例如,您可以选择设置内容交互的名称点击提交.如果没有提供,则值未知的将被使用。
  • 您应该通过设置CSS类来禁用该内容块的自动交互跟踪piwikContentIgnoreInteraction或者属性data-content-ignoreinteraction.否则,只要访问者执行单击,交互就可能被跟踪。

我们称这种跟踪为半自动,因为你手动触发交互,但内容名称、片段和目标是自动检测的。自动检测内容名称和片段确保我们可以将交互与先前跟踪的印象映射。

手动跟踪内容印象和互动

你应该使用这些方法trackContentImpression(contentName, contentPiece, contentTarget)而且trackContentInteraction(contentInteraction, contentName, contentPiece, contentTarget)只有结合在一起。不建议使用trackContentInteraction ()在一个印象被自动跟踪后,我们可以将一个互动映射到一个印象,只有当你设置了相同的内容名称和片段,用于跟踪相关的印象。

例子

_paq.push(['trackContentImpression', 'Content Name', 'Content Piece', 'https://www.example.com']); div.addEventListener('click', function () { _paq.push(['trackContentInteraction', 'tabActivated', 'Content Name', 'Content Piece', 'https://www.example.com']); });

请注意,对这些方法的每次调用都会向Matomo跟踪器实例发送一个请求。多次这样做会导致性能问题。

测量域和/或子域

无论您是跟踪一个域,还是子域,或者同时跟踪两个域,等等,您都可能需要配置Matomo JavaScript跟踪代码。有两件事可能需要配置:1)跟踪cookie是如何创建和共享的,2)哪些点击应该被跟踪为“外链接”。

跟踪一个域

这是标准用例。Matomo跟踪访问的一个域名没有子域名,在一个单一的Matomo网站。

//默认跟踪代码_paq. //推动([setSiteId, 1]);_paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['trackPageView']);

如果您正在跟踪一个特定的子域,这个默认跟踪代码也可以工作。

在同一网站中跟踪一个域及其子域

为了跨主域名及其任何子域名记录用户,我们告诉Matomo跨所有子域名共享cookie。setCookieDomain ()在example.com/*和所有子域的Matomo跟踪代码中调用。

_paq.push(['setSiteId', 1]); _paq.push(['setTrackerUrl', u+'matomo.php']); // Share the tracking cookie across example.com, www.example.com, subdomain.example.com, ... _paq.push(['setCookieDomain', '*.example.com']); // Tell Matomo the website domain so that clicks on these domains are not tracked as 'Outlinks' _paq.push(['setDomains', '*.example.com']); _paq.push(['trackPageView']);

跟踪您的访客在同一网站的多个域名

为了在一个Matomo网站中准确地跟踪跨不同域名的访问者的一次访问,我们需要建立所谓的跨域名链接。Matomo中的跨域跟踪可以确保当访问者访问多个网站和域名时,访问者数据将存储在同一次访问中,并且访问者ID在多个域名中重复使用。需要跨域的典型用例是,例如,当电子商务在线商店打开时www.awesome-shop.com而电子商务购物车技术是在另一个领域,如secure.cart.com

跨域链接使用两种跟踪器方法的组合setDomains而且enableCrossDomainLinking.在我们的指南中学习如何设置跨域链接:我如何准确地衡量相同的访问者跨多个域名(跨域链接)?

在不同的网站中跟踪一个域的子目录

当在自己独立的Matomo网站中跟踪一个域的子目录时,建议自定义跟踪代码以确保最佳的数据准确性和性能。

例如,如果您的网站提供“用户简介”功能,您可能希望在Matomo的单独网站中跟踪每个用户简介页面。在主域主页中,您将使用默认的跟踪代码:

//在“Administration > Websites for idSite=X”中,URL设置为“example.com/”_paq。推动([setSiteId, X]);_paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['trackPageView']);

example.com/user/MyUsernamePage(以及所有其他用户配置文件)中,您将构造对自定义的调用setSiteIdsetCookiePath而且setDomains

// The idSite Y将不同于其他用户页面//在Administration > sites for idSite=Y中,URL被设置为' example.com/user/MyUsername ' _paq。推动([setSiteId, Y]);//在' example.com/user/MyUsername ' _paq中创建专门的跟踪cookie。push ([' setCookiePath ', ' '上的用户名都/ user / dangillmor]);//告诉Matomo网站域名,以便点击其他页面(例如:/user/AnotherUsername)将被跟踪为'Outlinks' _paq。push ([' setDomains ', ' example.com/user/MyUsername ']);_paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['trackPageView']);

当跟踪多个子目录在不同的网站,函数setCookiePath防止cookies数量快速增加,并防止浏览器删除某些cookies。这确保了最佳的数据准确性,并提高了用户的性能(每个请求发送的cookie更少)。

这个函数setDomains确保用户的点击离开你的网站(子目录example.com/user/MyUsername)被正确地追踪为“外链”。

跟踪一个单独网站中的一组页面

(自Matomo 2.16.1起可用)

在一些罕见的情况下,您可能希望跟踪特定网站中匹配通配符的所有页面,并将其他页面(不匹配通配符)的点击跟踪为“Outlinks”。

在书页中/ index_fr.htm/ index_en.htm写:

//点击不以example.com/index开头的链接将被跟踪为“Outlinks”_paq。推动([setDomains, ' example.com/index * ']);//当使用通配符*时,我们不需要使用' setCookieDomain '或' setCookiePath '配置cookie,因为默认_paq在主域中正确创建了cookie。推动([setTrackerUrl, u + ' matomo.php ']);_paq.push ([' trackPageView ']);

注:

  • 通配符仅当在字符串末尾指定时才受支持。
  • 由于通配符可以匹配多个路径,因此调用setCookieDomainsetCookiePath为确保所有匹配通配符的页面正确共享跟踪cookie而省略。

有关在Matomo跟踪网站和子域名的更多信息,请参阅常见问题解答:如何配置Matomo监控几个网站,域名和子域名

默认的Matomo JavaScript跟踪器代码自动启用下载和输出链接跟踪,这是通过调用enableLinkTracking功能:


//启用下载和输出链接跟踪_paq.push(['enableLinkTracking']);

建议在第一次调用之后添加该行trackPageViewtrackEvent

默认情况下,所有到当前域以外的域的链接都启用了点击跟踪,每次点击都将被算作一个外链接。如果您使用多个域和子域,您可能会看到子域上出现的单击页面>出站报告。

如果你只想点击外部网站显示在你的外链报告,你可以使用该功能setDomains ()要指定别名域或子域的列表。支持通配符域(*.example.org),使您可以轻松忽略对所有子域的单击。

//不跟踪所有指向*.hostname1.com或*.hostname2.com的点击的外链接//注意:当前跟踪的网站会自动添加到这个数组_paq(['setDomains', ["*.hostname1.com", "hostname2.com"]]);_paq.push ([' trackPageView ']);

因为Matomo 2.15.1,你也可以添加一个路径到一个域,Matomo将正确地检测链接到同一个域,但不同的路径作为外链接。

//不跟踪所有指向*.hostname1.com/product1/*或*.hostname2.com/product1/*的点击的外链接//跟踪所有不指向*.hostname1.com/product1/*或*.hostname2.com/product1/*的点击作为外链接。_paq(['setDomains', ["*.hostname1.com/product1", "hostname2.com/product1"]]);

了解关于此用例的更多信息在不同的网站中跟踪一个域的子目录

如果希望强制Matomo将链接视为外链接(到当前域或别名域之一的链接),可以添加matomo_linkpiwik_linkCSS类的链接:

链接我想跟踪作为一个外链接

注意:您可以自定义和重命名用于强制单击的CSS类,将其记录为输出链接:

//现在所有点击CSS类“external”的链接将被计数为外链接//你也可以传递一个字符串数组_paq。push([“setLinkClasses”、“外部”]);_paq.push ([' trackPageView ']);

或者,您也可以使用JavaScript手动触发对外链接的单击(对于页面视图或文件下载也一样)。在本例中,当单击电子邮件地址时触发自定义外链接:

namexyz@mydomain.co.uk  .uk /mailto/Agent namexyz', 'link']);

跟踪文件下载

默认情况下,任何以这些扩展名之一结尾的文件将在Matomo界面中被视为“下载”:

7z|aac|arc|arj|apk|asf|asx|avi|bin|bz| gif|gz|gzip| jpg|jpeg|js|mp2|mp3|mp4|mpg| mpeg|mov|movie|msi|msp| odf|odg|odp| odt| ppt|qt|qtm|ra|ram|rar|rpm|sea| tar| tbz|tbz2|tgz|torrent|txt|wav|wma|wmv|wpd||xls|xml|z|zip

自定义下载时跟踪的文件类型

要将要跟踪的扩展名列表替换为文件下载,可以使用setdownloadadextensions(字符串)

//我们现在只跟踪图像_paq上的点击。推([setDownloadExtensions, " jpg | png | gif "]);_paq.push ([' trackPageView ']);

如果你想跟踪一个新的文件类型,你可以使用adddownloadadextensions(文件类型)

//按mp5或mp6完成的url的点击将被计算为下载_paq。push ([' addDownloadExtensions’,”里| mp6 "));_paq.push ([' trackPageView ']);

如果你想忽略一个特殊的文件类型,你可以使用removedownloadadextensions(文件类型)

//在以png或mp4结尾的url上的点击将不会被算作下载_paq。推动([removeDownloadExtensions, " png | mp4 "]);_paq.push ([' trackPageView ']);

将单击记录为下载

如果您希望强制Matomo将链接视为下载,您可以添加matomo_downloadpiwik_downloadCSS类的链接:

链接我想跟踪作为下载

注意:你可以自定义和重命名CSS类用来强制点击被记录为下载:

//现在所有点击CSS类"download"的链接都将被算作下载//你也可以传递一个字符串数组_paq。push([“setDownloadClasses”、“下载”]);_paq.push ([' trackPageView ']);

或者,您也可以使用JavaScript手动触发下载时的单击。在这个例子中,自定义下载是在点击链接时触发的:

 < / >

修改暂停定时器

当用户点击下载文件,或点击出站链接时,Matomo会记录下来。为了做到这一点,它在用户被重定向到所请求的文件或链接之前添加了一个小延迟。默认值是500ms,但您可以将其设置为更短的时间长度。然而,应该注意的是,这样做会导致这段时间不够长,无法在Matomo中记录数据的风险。

_paq.push(['setLinkTrackingTimer', 250]); // 250 milliseconds _paq.push(['trackPageView']);

默认情况下,Matomo跟踪代码支持点击和下载跟踪。要禁用所有自动下载和输出链接跟踪,必须删除对enableLinkTracking ()功能:

_paq.push ([' trackPageView ']);//我们注释掉启用链接跟踪的函数// _paq.push(['enableLinkTracking']);

禁用特定的CSS类

你可以对特定CSS类的链接禁用自动下载和输出跟踪:

//你也可以传递一个字符串数组_paq。push([“setIgnoreClasses”,“没有记录”]);_paq.push ([' trackPageView ']);

这将导致点击链接Test没有被计算在内。

如果要忽略特定链接上的下载或外链接跟踪,可以添加matomo_ignore或'piwik_ignore' CSS类到它:

文件我不想跟踪作为下载

查看我们的集成指南以实现跟踪或cookie同意。

查看使用内置Matomo选项实现退出表单的退出指南

可选:创建自定义退出表单

如果您希望为用户提供完全退出跟踪的功能,则可以使用退出表单。Matomo附带了一个选择退出表单实现,它使用第三方cookie(您可以在Matomo中对其进行配置)Matomo >管理>隐私页面)。

这种形式很容易嵌入,因为它只需要你添加一个iframe到你的网站,但它并不总是理想的。一些用户会屏蔽第三方cookie,因此退出表单对他们不起作用。您可能还希望在退出表单中显示自定义文本或图形,或者您可能希望允许用户单独退出您的网站,而不是全部退出。

在这种情况下,您可能需要考虑创建一个自定义选择退出表单。创建HTML/JS表单的细节超出了本文的范围,但是每个自定义选择退出表单都必须做一些事情:检查用户当前是否已选择退出选择用户退出而且选择用户.以下是如何做这些事情:

检查用户当前是否已选择退出

使用isUserOptedOut ()方法如下:

_paq.push([function () { if (this.isUserOptedOut()) { // ... change form to say user is currently opted out ... } else { // ... change form to say user is currently opted in ... } }])

选择用户退出

使用optUserOut ()方法:

_paq.push ([' optUserOut ']);

选择用户

使用forgetUserOptOut ()方法:

_paq.push ([' forgetUserOptOut ']);

下面是一个选择退出表单的例子,它复制了内置的Matomo选择退出表单:

您可以选择不为您的计算机分配唯一的网络分析cookie识别号,以避免本网站收集的数据被聚合和分析。

要做出选择,请点击下面以接收一个选择退出cookie。

多个Matomo跟踪器

默认情况下,Matomo JavaScript跟踪代码收集您的分析数据到一个Matomo服务器。Matomo服务URL在你的JavaScript跟踪代码中指定(例如:var u = " / / matomo.example.org”;).在某些情况下,您可能希望将分析数据跟踪到多个Matomo服务器或同一Matomo服务器上的多个网站。

如果您还没有升级到Matomo 2.16.2或更高版本,请立即升级!(2.16.1或更老版本的说明见下文。)

复制您的数据到不同的网站在一个Matomo服务器

您可能需要收集您的网页分析数据的副本到同一个Matomo服务器,但在另一个网站。

当您需要将数据复制到另一个网站,或将多个网站合并到一个或多个组(称为rollup)时,推荐的解决方案是使用RollUp报告高级插件.与其他解决方案相比,使用这个插件有几个优点,因为您可以轻松地将一个或多个网站组合在一起,并且rollup不会导致跟踪数据复制,从而提高了整体性能。

替代方案:复制跟踪数据

或者使用RollUp Reporting插件,您可以复制跟踪数据。复制可以调用的数据addTracker使用Matomo URL和您的网站ID复制数据:

var u = " / / matomo.example.org/”;_paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '1']); // We will also collect the website data into Website ID = 7 var websiteIdDuplicate = 7; // The data will be duplicated into `piwik.example.org/matomo.php` _paq.push(['addTracker', u+'matomo.php', websiteIdDuplicate]); // Your data is now tracked in both website ID 1 and website 7 into your piwik.example.org server!

由于这种解决方案会导致每个访问者的事件,页面浏览量等在你的Matomo服务器上被跟踪两次,我们通常不推荐它。

收集您的分析数据到两个或更多的Matomo服务器

下面的例子展示了如何使用addTracker方法来跟踪相同的分析数据到第二个Matomo服务器。主Matomo服务器是piwik.example.org/matomo.php哪里的数据存储到网站ID1.第二个Matomo服务器是analytics.example.com/matomo.php哪里的数据存储到网站ID77.当你在你的网站中实现这一点时,请用你自己的Matomo url和网站id替换这两个Matomo url和网站id。

自定义一个跟踪器对象实例

注意:默认添加任何跟踪器通过addTracker与主默认跟踪器对象配置相同(关于cookie、自定义维度、用户id、下载和链接跟踪、域和子域等)。如果您想配置通过添加的Matomo跟踪器对象实例之一addTracker,你可致电Matomo。getAsyncTracker (optionalMatomoUrl optionalPiwikSiteId)方法。此方法返回跟踪器实例对象,您可以对其进行不同于主JavaScript跟踪器对象实例的配置。

在直接调用JavaScript API时复制跟踪数据_paq.push

可以跟踪您的分析数据到同一服务器上的不同网站ID,或者您可以将数据的副本记录到另一个Matomo服务器中。每次呼叫Matomo.getTracker ()返回一个唯一的Matomo Tracker对象(实例),可以配置。