Додавання лічильника Stats4U за допомогою Google Tag Manager
Про це вже є інструкція в блозі з 2015 року. На її скриншотах Tag Manager виглядає вже не так, а один із семи кроків — позначання document.write — тепер узагалі не потрібен. Цей допис її замінює.
Він також відповідає на питання, яке стара інструкція просто залишила без відповіді. Там було сказано, що з Tag Manager слід використовувати невидимий лічильник, бо місце показу зображення Stats нібито неможливо контролювати. Насправді воно контролюється. Опис — унизу цієї сторінки.
Коротка версія
У Tag Manager: Tags → New → Custom HTML, і в поле HTML вставляється один рядок:
<script src="https://www.stats4u.net/s4u.js"
data-id="YOUR-ID" data-style="981" async></script>
Тригер — All Pages, далі контейнер зберігається й публікується. Замість YOUR-ID підставляється номер лічильника, який зазначено на сторінці статистики.
Це вся робота — три поля й тригер, тоді як у 2015 році було потрібно сім кроків. Нічого не потрібно позначати щодо document.write, бо скрипт більше його не використовує.
Що це насправді робить і чому підходить це не завжди
Скрипт розміщує лічильник одразу після себе на сторінці. Коли його вставляють безпосередньо в HTML сторінки, це саме так, як треба: лічильник з'являється там, куди вставлено код.
Через Tag Manager усе інакше, бо місце коду вже не визначається вручну. Це вирішує контейнер, а він зазвичай перебуває в head документа або там, куди встановили код контейнера. Тож лічильник вставляється саме там — не у футері, не в бічній панелі, а там, куди Tag Manager вставив тег.
Для невидимого лічильника це не має жодного значення, тому стара інструкція його й рекомендувала. Дизайн 980 не показує нічого, дизайн 981 показує лише маленьку іконку з посиланням на сторінку статистики. Якщо цього досить, коротка версія вище — вичерпна, і можна не читати далі.
Якщо видимий лічильник потрібен у конкретному місці, подробиці нижче.
Керування тим, де з'являється лічильник
У скрипта є другий режим, про який стара інструкція взагалі не згадувала. Замість атрибута data-id йому передається список, і він шукає елементи-заповнювачі за ID.
Крок перший — заповнювач розміщується на сторінці, там, де має бути лічильник. Це робиться у самому шаблоні сайту, а не в Tag Manager, бо саме Tag Manager ми й намагаємося виключити з цього рішення:
<div id="s4u_cp0"></div>
Крок другий — у Tag Manager іде це замість однорядкового варіанта. Той самий тип тегу Custom HTML:
<script>
(function () {
// No placeholder on this page? Then no counter, and no request either.
if (!document.getElementById('s4u_cp0')) { return; }
window.s4uid = ['YOUR-ID'];
window.s4u_paramsarr = [{ s4ustyleid: '100' }];
var s = document.createElement('script');
s.src = 'https://www.stats4u.net/s4u.js';
document.head.appendChild(s);
})();
</script>
Крок третій — зміна тригера. Це та частина, на якій найчастіше спотикаються. All Pages спрацьовує настільки рано, наскільки це вдається Tag Manager, а це часто відбувається ще до того, як заповнювач з'явиться в документі. Натомість потрібен вбудований тригер DOM Ready. Лічильник повинен з'явитися після div, а не до нього.
Тепер лічильник з'являється всередині цього div і більше ніде.
Керування тим, на яких сторінках він з'являється
Тут є два незалежні важелі, і варто розібратися з кожним окремо.
Заповнювач — це один з них. Уся річ у першому рядку всередині функції: якщо на сторінці немає s4u_cp0, вона зупиняється, і скрипт навіть не завантажується. Тож шаблон, що містить div, отримує лічильник, а той, що не містить, — ні: рішення ухвалюється у шаблонах сайту, без жодних змін у Tag Manager і без публікації.
Тригер — це другий. Те саме можна вирішити в самому Tag Manager: тригеру додається умова спрацьовувати на DOM Ready лише там, де Page Path відповідає потрібному значенню. Цей спосіб доречний, коли правило стосується URL-адрес, а заповнювач — коли правило стосується шаблонів.
Більше одного лічильника на сторінці
Список приймає скільки завгодно елементів. Позиція у списку — це число в ID заповнювача:
window.s4uid = ['ID-ONE', 'ID-TWO'];
window.s4u_paramsarr = [{ s4ustyleid: '981' }, { s4ustyleid: '100' }];
Перший потрапляє в s4u_cp0, другий — у s4u_cp1. Обидва перевірено в браузері під час написання цього допису: перший відобразився як іконка 20 на 20, другий — як смужка 162 на 25, кожен у своєму заповнювачі і більше ніде на сторінці.
Чотири речі, на яких легко спіткнутися
- Обидва методи одночасно не поєднуються. Якщо сам тег має атрибут data-id і водночас встановлює список, лічильників буде два, і обидва звернення зарахуються окремо.
- s4ustyleid завжди має стояти в списку. Якщо пропустити атрибут data-style, він мовчки відкотиться до дизайну 30. У версії зі списком такого запасного варіанта немає, і вона запитає порожній дизайн.
- Відсутній заповнювач не викликає жодної помилки. Немає ні лічильника, ні помилки, нічого в консолі. Якщо нічого не з'являється, спершу варто перевірити ID — s4u_cp0, із цифрою нуль, а не літерою O.
- У невидимого лічильника навмисно немає посилання. Дизайн 980 відображається без нього, бо прозора однопіксельна ціль для кліку на чужій сторінці — це пастка, а не корисна функція. Якщо посилання потрібне, підійде 981 — маленька іконка.
Перевірка, чи все спрацювало
Досить увімкнути режим Preview у Tag Manager і завантажити свою сторінку. Тег повинен з'явитися серед спрацьованих тегів для події DOM Ready. Потім — сторінка статистики: візит через Preview зараховується як будь-який інший, тож число повинно змінитися протягом кількох секунд.
Якщо тег спрацював, а нічого не з'явилося, річ або в заповнювачі, або в тригері — саме в такому порядку ймовірності.