Preview is also active if a preview link is shared via EXT:workspace. Those views should probably not be tracked, just like active backend sessions.
3.3 KiB
Pageview
Each view of a TYPO3 page is tracked by default. Requests can be ignored by configuring a rule that has to match the current request.
All configuration happens via t3coreapi:DependencyInjection
inside of Services.yaml
of your
Sitepackage.
Saved record
Whenever a pageview is tracked, a new record is created. The record can be viewed via TYPO3 list module. That way all collected information can be checked.
Configure tracking
Let us examine an concrete example:
services:
_defaults:
autowire: true
autoconfigure: true
public: false
DanielSiepmann\Tracking\Middleware\Pageview:
public: true
arguments:
$rule: >
not (context.getAspect("backend.user").isLoggedIn())
and not (context.getAspect("frontend.preview").isPreview())
and not (request.getHeader("User-Agent")[0] matches "/^TYPO3|TYPO3 linkvalidator/")
and not (request.getHeader("User-Agent")[0] matches "/^Codeception Testing/")
and not (request.getHeader("User-Agent")[0] matches "/Wget|curl|Go-http-client/")
and not (request.getHeader("User-Agent")[0] matches "/bot|spider|Slurp|Sogou|NextCloud-News|Feedly|XING FeedReader|SEOkicks|Seekport Crawler|ia_archiver|TrendsmapResolver|Nuzzel/") and not (request.getHeader("User-Agent")[0] matches "/mattermost|Slackbot|WhatsApp/")
The first paragraph will not be explained, check out t3coreapi:configure-dependency-injection-in-extensions
instead.
The second paragraph is where the tracking is configured. The PHP
class DanielSiepmann\Tracking\Middleware\Pageview
is
registered as PHP middleware and will actually track the request.
Therefore this class is configured. The only interesting argument to
configure is $rule
, which is a Symfony
Expression. The same is used by TYPO3 for TypoScript conditions and
is not explained here.
This rule is evaluated to either true
or
false
, where true
means that the current
request should be tracked.
The current request is available as
Psr\Http\Message\ServerRequestInterface
via
request
, while TYPO3\CMS\Core\Context\Context
is available via context
. That way it is possible to check
all kind of information like frontend user, backend user or cookies and
parameters, as well as request header.
Check PSR-7:
HTTP message interfaces as well as t3coreapi:context-api
.
The above example blocks tracking for requests with logged in backend user, as well as specific user agents like bots, TYPO3 itself and other systems.
Widgets
The extension does not provide any widgets, but providers for widgets of EXT:dashboard. That way widgets of EXT:dashboard can be combined with all providers of this extension.
The concepts are not documented here, check t3dashboard:start
instead.
PageviewWidgets/*