Сейчас ваша корзина пуста!
Таблица регулярных выражений в GTM.
ТЗ:
- Виджет должны видеть ТОЛЬКО авторизованные в ВК пользователи, которые могут написать — подробно в этой статье.
- В профиле каждого специалиста на сайте должен запускаться виджет от его сообщества.
- У каждого специалиста должна всплывать своя подсказка (предложение).
Результат, чтобы было ясно к чему шли:
0:39
Определяем ID сообщества и текст Подсказки для каждого фотографа
Идентифицировать фотографов я решил по переменным в URL их профилей.
Пример ссылки профиля специалиста на сайте: https://fotkay.ru/member/13
fotkay.ru/ — хост
member/ — путь, означает, что мы в профиле специалиста
13 — ID специалиста.
Для работы я использовал пользовательские переменные типа «Таблица регулярных выражений» в Google Tag Manager.

GTM должен подставлять ID сообщества и Подсказку в зависимости от того, на чьей странице находится пользователь. Для этого я создам 2 переменных типа «Таблица регулярных выражений»:
- {{VK Widget ID PATH}} — определит id сообщества для каждого фотографа (скрин 1)
- {{VK Widget Text PATH}} — определит Подсказку для виджета у каждого фотографа (скрин 2)
Входная переменная — я выбрал {{Page Path}} — чтобы GTM ориентировался на инфу из пути URL, где находится пользователь.
Шаблон (ключ / регулярное выражение) — я прописал регулярные выражения в формате member/{ID}, перечислив ID специалистов на сайте.
Результат (значение / переменная) — ID сообщества (скрин 1), Подсказка (скрин 2, лимит 100 символов).

P.S. Таблица регулярных выражений очень сильно помогает упростить работу в GTM, если у вас большое количество однотипных тегов/триггеров/переменных.
Ну и сам код
Создайте ТЕГ типа «Пользовательский HTML».
Если у вас еще не настроено подключение к ВК (не установлен пиксель), то вставьте следующий код для подключения к ВК
<script src="https://vk.com/js/api/openapi.js?169" type="text/javascript"></script>
Далее код виджета с созданными переменными:
<div id="vk_community_messages"></div> <script type="text/javascript"> VK.Widgets.CommunityMessages("vk_community_messages", {{VK Widget ID PATH}}, { tooltipButtonText: {{VK Widget Text PATH}}, disableExpandChatSound: 1, disableNewMessagesSound: 1, expandTimeout: 30000, onCanNotWrite: function(reason) { // Проверка причины и удаление виджета if (reason === "offline" || reason === "no_access" || reason === "disabled_messages" || reason === "cant_write") { var widgetContainer = document.getElementById("vk_community_messages"); if (widgetContainer) { widgetContainer.innerHTML = ""; // Удаление содержимого контейнера } } } }); </script>
Условие триггера: URL содержит «member» (профиль специалиста)

Бонус
С помощью таблицы регулярных выражений можно сильно упростить работу с GTM при настройке однотипных целей, счетчиков и т.д. Вот пример установки динамических счетчиков mail.ru, VK, YA.Metrika:
<!-- Top.Mail.Ru counter --> <script type="text/javascript"> var _tmr = window._tmr || (window._tmr = []); _tmr.push({id: "{{Counter-Mail.ru}}", type: "pageView", start: (new Date()).getTime()}); (function (d, w, id) { if (d.getElementById(id)) return; var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.id = id; ts.src = "https://top-fwz1.mail.ru/js/code.js"; var f = function () {var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s);}; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "tmr-code"); </script> <noscript><div><img src="https://top-fwz1.mail.ru/counter?id={{Counter-Mail.ru}};js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div></noscript> <!-- /Top.Mail.Ru counter --> <!-- Yandex.Metrika counter --> <script type="text/javascript" > (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym({{Counter-YM}}, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true }); </script> <!-- Varioqub experiments --> <script type="text/javascript"> (function(e, x, pe, r, i, me, nt){ e[i]=e[i]||function(){(e[i].a=e[i].a||[]).push(arguments)}, me=x.createElement(pe),me.async=1,me.src=r,nt=x.getElementsByTagName(pe)[0],nt.parentNode.insertBefore(me,nt)}) (window, document, 'script', 'https://abt.s3.yandex.net/expjs/latest/exp.js', 'ymab'); ymab('metrika.({{Counter-YM}}', 'init'/*, {clientFeatures}, {callback}*/); </script> <noscript><div><img src="https://mc.yandex.ru/watch/{{Counter-YM}}" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <!-- VK Retargeting counter --> <script type="text/javascript">!function(){var t=document.createElement("script");t.type="text/javascript",t.async=!0,t.src='https://vk.com/js/api/openapi.js?169',t.onload=function(){VK.Retargeting.Init("{{Counter-VKold}}"),VK.Retargeting.Hit()},document.head.appendChild(t)}();</script><noscript><img src="https://vk.com/rtrg?p={{Counter-VKold}}" style="position:fixed; left:-999px;" alt=""/></noscript> <!-- /VK Retargeting counter -->
Пример пользовательской переменной типа «Таблица регулярных выражений» для счетчиков mail.ru:
