Estoy usando MediaWiki y busco tener una carga de etiqueta de Google Analytics diferente para cada wiki dependiendo del nombre de la base de datos. Sin embargo, tengo problemas para hacer esto, dado que la etiqueta GA usa JavaScript y la matriz/variable que estoy usando está en PHP.
Esto es lo que tengo hasta ahora (la clave correcta => el valor ya será elegido por el script anteriormente en función del nombre de la base de datos, por lo que no tengo que preocuparme por eso):
$wgAnalyticsCode => [ 'wiki1' => '(code 1)', 'wiki2' => '(code 2)', 'wiki3' => '(code 3)' ]y luego tengo el enlace que se ejecuta antes de que se cargue la página y agrega la etiqueta (que es una combinación de PHP/JavaScript:
$wgHooks['BeforePageDisplay'][] = function( OutputPage &$out, Skin &$skin ) { $code = <<<HTML <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=CODEHERE"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'CODEHERE'); </script> HTML; $out->addHeadItem( 'gtag-insert', $code ); return true; }; No estoy completamente seguro de cómo obtener la etiqueta de la matriz de PHP en JavaScript. Por lo general, si fuera solo JavaScript, reemplazaría "CODEHERE" con $wgAnalyticsCode , pero obviamente no es tan fácil dado que la variable es PHP y el código es JavaScript.
¿Algún consejo sería apreciado?
puede usar la palabra use para pasar su matriz a la función anónima
Ejemplo
$wgHooks['BeforePageDisplay'][] = function (OutputPage &$out, Skin &$skin) use ($wgAnalyticsCode) {después de eso, puede usar su matriz dentro del cuerpo de la función
espero que sea útil