Skip to content

Instantly share code, notes, and snippets.

@Shoora
Shoora / ywactivitytracker.js
Last active April 7, 2024 22:22 — forked from dvygolov/ywactivitytracker.js
Script that measures interactions on your landing page. If the user is active for "checkTime" seconds - an interval is valid, if total count of valid seconds = totalTime - the goal is reached and sent to Yandex.Metrika.
class ActivityTracker {
constructor(totalTime, checkTime, metrikaId, debug = false) {
this.events = [
"touchmove",
"blur",
"focus",
"focusin",
"focusout",
"load",
"resize",
@Shoora
Shoora / admin-redirect
Created March 25, 2024 05:05 — forked from miziomon/admin-redirect
WordPress user admin redirect
/**
*
* redirect to homepage if has non "edit_posts" capabilities
*/
add_filter("admin_init", function () {
if (!current_user_can('edit_posts')) {
wp_redirect(WP_HOME);
exit;
@Shoora
Shoora / Preload CSS - Not blocking CSS.html
Created January 3, 2024 20:17 — forked from thedaviddias/Preload CSS - Not blocking CSS.html
Preload CSS and don't block the DOM with your CSS file request.
<link rel="preload" href="css/global.min.css" as="style" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="css/global.min.css"></noscript>
<script>
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
!function(a){"use strict";var b=function(b,c,d){function j(a){if(e.body)return a();setTimeout(function(){j(a)})}function l(){f.addEventListener&&f.removeEventListener("load",l),f.media=d||"all"}var g,e=a.document,f=e.createElement("link");if(c)g=c;else{var h=(e.body||e.getElementsByTagName("head")[0]).childNodes;g=h[h.length-1]}var i=e.styleSheets;f.rel="stylesheet",f.href=b,f.media="only x",j(function(){g.parentNode.insertBefore(f,c?g:g.nextSibling)});var k=function(a){for(var b=f.href,c=i.length;c--;)if(i[c].href===b)return a();setTimeout(function(){k(a)})};return f.addEventListener&&f.addEventListener("load",l),f.onloadcssdefined=k,k(l),f};"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b}("undefined"!=typeof global?global:this);
/*! loadCSS rel=preload po
@Shoora
Shoora / wp-schema-pro-filter-blog-posting.php
Created January 3, 2024 17:18 — forked from mihdan/wp-schema-pro-filter-blog-posting.php
Расширяет микроразметку BlogPosting в плагине WP Schema Pro для получения контентной аналитики (дочитываемость, категории, автора, тематики) в Яндекс.Метрике
<?php
add_filter(
'wp_schema_pro_schema_article',
/**
* Расширяет микроразметку BlogPosting для Яндекс.Метрики.
*
* @link https://metrika.yandex.ru/support/metrica/publishers/schema-org/json-ld.html#json-ld__identifier-desc
*
* @param array $schema Схема.
* @param array $data Данные.
@Shoora
Shoora / waitForYm.js
Created January 3, 2024 16:48 — forked from kernusr/waitForYm.js
Ожидание загрузки счетчика Яндекс.Метрики
/** Ожидание загрузки счетчика Яндекс.Метрики
* @param {?(number|string)} ymCounterNum - номер счетчика, если известен
* @param {function} callback - получает аргументами объект и номер счетчика
* @param {number} interval - интервал проверки готовности счетчика
*/
function waitForYm(ymCounterNum, callback, interval) {
if (!callback) return;
if (!ymCounterNum) {
let metrikaObj = (window.Ya && (window.Ya.Metrika || window.Ya.Metrika2)) || null;
ymCounterNum = (metrikaObj && metrikaObj.counters && (metrikaObj.counters() || [0])[0].id) || 0;
@Shoora
Shoora / js
Created January 3, 2024 16:47 — forked from golubev-alex/js
function scrollTo(element) {
window.scroll({
behavior: 'smooth',
left: 0,
top: element.getBoundingClientRect().top + document.documentElement.scrollTop - document.querySelector('header').offsetHeight + 20
})
}
https://github.com/RobinHerbots/Inputmask
$().inputmask('+7 (999) 999-99-99', {'clearIncomplete': true});
@Shoora
Shoora / readme.txt
Created January 3, 2024 16:44 — forked from Katia-Kovtun/readme.txt
Yandex Metrika для Opencart 2.3
Также необходимо внести правки в catalog/view/javascript/common.js
найти функцию cart.add
после if (json['success']) {
добавить sendYandexEcommerce(json, "add");
найти функцию cart.remove после success: function(json) {
добавить sendYandexEcommerce(json, "remove");
@Shoora
Shoora / gethatch.com-GA-event-widget.js
Created January 3, 2024 16:42 — forked from fewlme/gethatch.com-GA-event-widget.js
Add GA event tracking on widget retailer links
//Please ask Hatch to provide a list of all retailer IDs vs names
const retailer_mapping = {
94349 : 'MSI Store',
89105 : 'Walmart',
};
//Listener on any hatch links
document.addEventListener( "click", hatchRetailerWidgetClick );
function hatchRetailerWidgetClick(ev){
const el = ev.target;
@Shoora
Shoora / google_analytics.js
Created January 3, 2024 16:31 — forked from CGeohagan/google_analytics.js
GA4 Implementation
import VideoEvents from '@src/metrics/video_events';
import logger from '@src/shared/logger';
/**
* Custom Dimensions Map that is required for UA events with gtag
* This mapping is not required for GA4
*/
const concertCustomDimensionMap = {
'dimension1': 'video_id',
'dimension2': 'video_length',