2016-01-10 11 views
1

У меня есть плагин WordPress, который выводит Piwik отслеживания JS на сайте клиента:Multiple Piwik отслеживание JS

<script type="text/javascript"> 
     var _paq = _paq || []; 
     _paq.push(['trackPageView']); 
     _paq.push(['enableLinkTracking']); 
     (function() { 
     var u=(("https:" == document.location.protocol) ? "https" : "http") + "://piwik.com//"; 
     _paq.push(['setTrackerUrl', u+'piwik.php']); 
     _paq.push(['setSiteId', 1]); 
     var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; 
     g.defer=true; g.async=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); 
     })(); 

    </script> 
    <noscript><p><img src="http://piwik.com/piwik.php?idsite=1" style="border:0" alt="" /></p></noscript> 

Вопрос заключается в том, что некоторые из клиентов уже используют свои собственные JS отслеживания Piwik, и он заканчивает с отслеживанием два Piwik JS выводится на их сайт.

Тогда возникает конфликт, потому что два отслеживания JS Обращаемся к тем же JS объекта «_paq»

Так было бы здорово, если есть некоторые гуманные к этому, как noConflict() для JQuery.

Так что нам нужно было бы указать «piwik.js», который я включаю, чтобы не читать из «_paq» и читать с моего пользовательского объекта. Пока, как я вижу, мне нужно будет изменить piwik.js для этого.

Я видел, что Piwik имеет возможность для многократного отслеживания: Multiple Piwik trackers

Но у меня нет контроля над другим кодом отслеживания, у меня есть только контроль следящей JS outputed из моего плагина.

Итак, любая помощь будет полезна для этого.

+0

Может вы ваш использовать пользовательскую переменную (в виде нескольких секций Piwik трекеры предполагает), и пусть использование клиентов _paq по умолчанию? –

+0

Я пробую это. Единственная проблема в том, что мне нужно загрузить piwik.js на сайт, а клиент также загрузит собственный piwik.js. Теперь я не знаю, как управлять, из которого piwik.js будет инспектором трекера в моем коде с «Piwik.getTracker». Потому что, если он использует piwik.js клиентов, и он использует старую версию Piwik, у меня не будет никаких методов piwik – carpics

ответ

0

Единственный способ, с помощью которого я смог решить эту проблему, изменил имя (выберите странный) переменной _paq в piwik.js и загрузил piwik.js синхронно.

Нет больше столкновений после этого