MediaWiki:Common.js: diferenças entre revisões

Sem resumo de edição
Sem resumo de edição
Linha 23: Linha 23:
if($searchBox) $searchBox.style.display = 'block';
if($searchBox) $searchBox.style.display = 'block';
}
}
/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */


//Google Analytics
var GoogleCdn = document.createElement('script');
GoogleCdn.src = 'https://www.googletagmanager.com/gtag/js?id=G-YGT3D2Q9QW';
document.body.appendChild(GoogleCdn);
window.dataLayer = window.dataLayer || [];
function gtag() {
    dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-YGT3D2Q9QW');
/* TOP 버튼 */
/* TOP 버튼 */
var topButton = document.createElement('div');
var topButton = document.createElement('div');
Linha 319: Linha 308:
langDiv.insertAdjacentHTML('afterbegin', navHTML);
langDiv.insertAdjacentHTML('afterbegin', navHTML);
}
}
/* GA4: single ID + language tagging (MediaWiki 1.42.3) */
(function () {
// 중복 로드 방지
if (window.__GA4_LOADED__) return;
window.__GA4_LOADED__ = true;
var GA_ID = 'G-YGT3D2Q9QW';
// 언어 결정: 가장 신뢰도 높은 wgContentLanguage, 없으면 경로 프리픽스로 보완
var pathLang = (location.pathname.split('/')[1] || '').toLowerCase();
var lang = (mw.config && mw.config.get('wgContentLanguage'))
        || (['en','es','ko'].includes(pathLang) ? pathLang : 'ko');
// <head>에 gtag 로더 삽입
var s = document.createElement('script');
s.async = true;
s.src = 'https://www.googletagmanager.com/gtag/js?id=' + encodeURIComponent(GA_ID);
document.head.appendChild(s);
window.dataLayer = window.dataLayer || [];
function gtag(){ dataLayer.push(arguments); }
window.gtag = gtag;
gtag('js', new Date());
// page_view 설정: 언어 서브디렉터리 포함 경로를 명시
gtag('config', GA_ID, {
page_path: location.pathname + location.search
});
// 언어를 사용자 속성으로 항상 전송(보고서에서 맞춤차원으로 필터)
gtag('set', 'user_properties', { site_language: lang });
console.log('gtag', lang);
// (선택) 콘텐츠 그룹도 언어로 고정해두면 탐색에서 편함
// gtag('event', 'page_view', { content_group: lang }); // 필요 시 사용
})();