Нужна помощь с Яндекс.Метрика [как инициализировать метрику динамически своей функцией?]

Приветствую всех!
Есть 2 вопроса:
Как из этого

Спойлер

(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(XXXXXX, “init”, {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});

сделать универсальную функцию, кинуть её в *.js и как потом её прикреплять к страницам, просто подставляя вместо “XXXXXX” номера счётчиков?
Я очень слаб в JS. По идее можно так:

Спойлер

(function(m,e,t,r,i,k,a, N)

ym(N, “init”, {…

Даже, если это правильно, то как прикрепить её к странице?
Заранее благодарен.

function ymInit(XXXXXX) {
	(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(XXXXXX, “init”, {
	clickmap:true,
	trackLinks:true,
	accurateTrackBounce:true
	});
}

// Использование

ymInit('ym-12312312313')

Можно просто обернуть весь вызов метрики в функцию и передавать в функцию айдишник метрики.


Достаточно объявить эту функцию в <script>. Просто убедись что этот идеть раньше того места где ты вызываешь инициализацию метрики:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Blah blah</title>
	<script>
		function ymInit(XXXXXX) {
			(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(XXXXXX, “init”, {
			clickmap:true,
			trackLinks:true,
			accurateTrackBounce:true
			});
		}
	</script>
</head>
<body>
	... blah, blah
	<script>ymInit('tracking-id')</script>
</body>
</html>

Если у тебя есть доступ к LLM-ам (ии типа chatgpt или anthropic), то они на подобные вопросы про программирование ответят достаточно хорошо чтобы смочь решить задачу без знаний программирования. Надо только уметь формулировать вопросы.

1 лайк

Благодарю! Но наверное делаю что-то не так. Создал файл YaMetrika.js с содержимым:
function ymInit(XXXXXX) {
(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(XXXXXX, “init”, {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
}

На одной из страниц, для проверки вначале добавил:

script src=“https://bla-bla/scripts/YaMetrika.js” type=“text/javascript”></script

(не знаю, как правильно сюда написать без символов <>)
Далее, в коде страницы добавил скрипт:
script>ymInit(‘98826527’)</script
Итог: проверка на подключение Яндекс.Метрика не пройдена
P.S. Или код неправильно скопировал, или надо было сбросить кэш. Сегодня заработало, благодарю!
P.S.P.S. на patreon зайти не могу(((

1 лайк

Спасибо что заморочился. Понятная история с отсутствием доступа. А buy me a coffie работает?

https://buymeacoffee.com/experai_bot

Если задонатешь, напишешь боту Telegram: Contact @experai_bot и кинешь свое телеграммное имя, я открою продвинутый доступ к ИИ боту (chatgpt + claude) пропорционально донату (10$ в месяц). Он отлично решает как раз такого уровня задачи как стоят перед тобой.

Я в любом случае крайне рекомендую посмотреть в сторону современных LLM (large language models, большие языковые модели) типа ChatGPT (компания OpenAI), Claude (Anthropic), Gemini (Google), у яндекса тоже должно быть решение, но я я ним перестал работать и за ним следить, так что советовать не знаю что. Научившись работать с ними (одной LLM достаточно, нет необходимости закапыться в каждую), будешь решать свои задачи в разы быстрее. От написания писем и постов до генерации кода и подсказывания как изменить существующий код чтобы сделать то чего хочешь.

В боте можно переключаться между claude и chatgpt. Особенно полезно когда через опыт становится понятно какая модель какую задачу лучше решает.

[quote=“dmitry, post:4, topic:3379”]
https://buymeacoffee.com/experai_bot
[/quote]Sorry, you have been blocked. А можно просто на карту кинуть, если ты в России, конечно?

Не, для меня такое не работает. Оставим все как есть, ничего не надо пересылать.