diff --git a/Classes/UserFunc/Footer.php b/Classes/UserFunc/Footer.php
index b66e56c..3f0b4b2 100644
--- a/Classes/UserFunc/Footer.php
+++ b/Classes/UserFunc/Footer.php
@@ -129,6 +129,7 @@ public function contentPostProc_output($trackingCode, $localConfig) {
$trackingCode .= $this->getPiwikCustomVariables();
$trackingCode .= $this->getPiwikCustomDimensions();
$trackingCode .= $this->getPiwiksetUserId();
+ $trackingCode .= $this->getAdditionalTrackers();
if (!$this->useAsyncTrackingApi) {
$trackingCode .= "\t\t" . 'piwikTracker.trackPageView();';
@@ -141,12 +142,7 @@ public function contentPostProc_output($trackingCode, $localConfig) {
$template = str_replace('###IDSITE###', $conf['piwik_idsite'], $template);
$template = str_replace('###BEUSER###', $beUserLogin, $template);
- if (strlen($this->piwikOptions['trackGoal'])) {
- $template = str_replace('###TRACKING_IMAGE_URL###', htmlentities($this->piwikTracker->getUrlTrackGoal($this->piwikOptions['trackGoal'])), $template);
- } else {
- $currentPageTitle = $this->getCurrentPageTitle();
- $template = str_replace('###TRACKING_IMAGE_URL###', htmlentities($this->piwikTracker->getUrlTrackPageView($currentPageTitle)), $template);
- }
+ $template = str_replace('###TRACKING_IMAGES###', $this->buildTrackingImages(), $template);
if (isset($this->piwikOptions['includeJavaScript']) && !(bool)$this->piwikOptions['includeJavaScript']) {
$templateService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(MarkerBasedTemplateService::class);
@@ -165,6 +161,65 @@ function is_backend() {
return false;
}
+ /**
+ * @return string
+ */
+ protected function buildTrackingImages()
+ {
+ $trackingImages = $this->buildTrackingImageTag($this->piwikTracker);
+
+ if (empty($this->piwikOptions['additionalTrackers.']) || !is_array($this->piwikOptions['additionalTrackers.'])) {
+ return $trackingImages;
+ }
+
+ foreach ($this->piwikOptions['additionalTrackers.'] as $trackerConfig) {
+ $addionalTrackerUrl = $trackerConfig['piwik_host'];
+ $addionalTrackerSiteId = (int)$trackerConfig['piwik_idsite'];
+ PiwikTracker::$URL = $addionalTrackerUrl;
+ $this->piwikTracker->setIdSite($addionalTrackerSiteId);
+ $trackingImages .= $this->buildTrackingImageTag($this->piwikTracker);
+ }
+
+ return $trackingImages;
+ }
+
+ /**
+ * @param PiwikTracker $piwikTracker
+ * @return string
+ */
+ protected function buildTrackingImageTag(PiwikTracker $piwikTracker)
+ {
+ if (strlen($this->piwikOptions['trackGoal'])) {
+ $imageSrc = $piwikTracker->getUrlTrackGoal($this->piwikOptions['trackGoal']);
+ } else {
+ $currentPageTitle = $this->getCurrentPageTitle();
+ $imageSrc = $piwikTracker->getUrlTrackPageView($currentPageTitle);
+ }
+
+ return sprintf('', htmlspecialchars($imageSrc)) . PHP_EOL;
+ }
+
+ protected function getAdditionalTrackers()
+ {
+ $additionalTrackerCode = '';
+ if (empty($this->piwikOptions['additionalTrackers.']) || !is_array($this->piwikOptions['additionalTrackers.'])) {
+ return $additionalTrackerCode;
+ }
+
+ foreach ($this->piwikOptions['additionalTrackers.'] as $trackerConfig) {
+ $addionalTrackerUrl = $trackerConfig['piwik_host'] . 'piwik.php';
+ $addionalTrackerSiteId = (int)$trackerConfig['piwik_idsite'];
+ $pushParameters = [
+ 'addTracker',
+ $addionalTrackerUrl,
+ $addionalTrackerSiteId,
+ ];
+ $additionalTrackerCode .= '_paq.push(' . json_encode($pushParameters, JSON_UNESCAPED_SLASHES) . ');' . PHP_EOL;
+ }
+
+ return $additionalTrackerCode;
+ }
+
/**
* Returns the page title set in the TSFE page renderer.
*
diff --git a/Resources/Private/Templates/Piwik/tracker.html b/Resources/Private/Templates/Piwik/tracker.html
index d6c90c0..52ecb8a 100644
--- a/Resources/Private/Templates/Piwik/tracker.html
+++ b/Resources/Private/Templates/Piwik/tracker.html
@@ -11,5 +11,5 @@
/* ]]> */
-
+
diff --git a/Resources/Private/Templates/Piwik/tracker_async.html b/Resources/Private/Templates/Piwik/tracker_async.html
index 2a1bafe..affdd90 100644
--- a/Resources/Private/Templates/Piwik/tracker_async.html
+++ b/Resources/Private/Templates/Piwik/tracker_async.html
@@ -21,5 +21,5 @@
/* ]]> */
-
-
\ No newline at end of file
+
+