Natürlich gibt es die common.css und die common.js, um eignen CSS- respektive JavaScript-Code in die Wiki zu integrieren.

Allerdings bekam ich mit wachsender Anzahl von Modifikationen und wachsender Anzahl von Wikis Probleme, die beiden common.*-Seiten aller Wikis zu pflegen.

Sei es ein Verbund von drei Wikis, die auf einem Server installiert sind, um die Infos verschiedener Unter-Unternehmen abzugrenzen oder ein Verbund von 10 Wikis, die auf einem anderen Server installiert sind, (Tendenz steigend), um verschiedene Kundengruppen mit verschiedenen Informationen zu versorgen.
Sollen alle Wikis gleich aussehen und dann mal eine Farbe geändert werden, ist man eine Weile beschäftigt.

Deshalb habe ich mir Gedanken gemacht, wie ich den Code, der bei allen Wikis gleich ist, in eine separate Datei auslagere, auf die alle Wikis zugreifen können.
Weiteres Benefit: Den Code in der Textdatei zu ändern ist für mich schneller erledigt, als erst in der Wiki zur common.*-Seite zu gelangen und dort den Text zu bearbeiten.

Ich habe eine Extension namens jscssfiles erstellt.
An sich eine php-Datei in einem gleichnamigen Verzeichnis im Mediawiki-Extensions-Verzeichnis.

Die Inhalte der js/css-Dateien werden über Mediawikis ResourceLoader verwurstelt. Werden also nicht im HTML-Head als externe Resource-Dateien eingebunden, sondern über das load.php-skript ausgeliefert.

In einer JavaScript-Datei definierte Funktionen sollten wie folgt deklariert sein, damit sie funktionieren:
test = function() { console.log("Funktion funktioniert."); }
statt
function test() { console.log("Funktion funktioniert nicht."); }

Das ganze sollte ab MediaWiki 1.17 funktionieren.

extensions/jscssfiles/jscssfiles.php
<?php
if( !defined( 'MEDIAWIKI' ) ) die( 'Not an entry point.' );

/**
 * Externe Quellen
 * Lädt externe Stylesheets und JavaScript Dateien
 *
 * Version 1.0 - September 2022
 *
 * @file
 * @ingroup Extensions
 * @author apfelz
 * @copyright © 2022 apfel-z.net
 * @license GNU General Public Licence 2.0 or later
 */

 
define('JSCSSFILES_VERSION', '1.0, 2022-09-21' );

$wgExtensionCredits['parserhook'][] = array(
        'path'        => __FILE__,
        'name'        => "jscssfiles",
        'description' => 'Lädt externe Stylesheets und JavaScript Dateien',
        'author'      => "apfelz",
        'url'         => "http://www.apfel-z.net",
        'version'     => JSCSSFILES_VERSION
        );
$wgHooks['BeforePageDisplay'][] = 'efCustomBeforePageDisplay';

function efCustomBeforePageDisplay( &$out, &$skin ) {
        global $wgjscssfiles;
        $out->addModules($wgjscssfiles);
        }

?>

Um die Extension zu verwenden muss in der LocalSettings.php der jeweiligen Wiki folgends hinzugefügt werden:

include 'extensions/jscssfiles/jscssfiles.php';

Vor dieser Zeile werden die einzelnen Dateien aufgelistet, die geladen werden sollen. Achtung: Die Dateien müssen auf dem Webserver liegen, wo auch die Wiki liegt, da ich nur die Möglichkeit gefunden habe, einen lokalen Pfad zu der Datei anzugeben (kein https://...).

Hier lade ich ein JavaScript wikieditor-addons.js, welches sich auf dem Webserver im Verzeichnis /var/www/html/wiki/global befindet.

$wgResourceModules['jscssfiles1'] = array(
   'scripts'       => "wikieditor-addons.js",
   'localBasePath' => "/var/www/html/wiki/global",
   );
$wgjscssfiles = array('jscssfiles1');
include 'extensions/jscssfiles/jscssfiles.php';

Es können sowohl JavaScript-Dateien wie auch CSS-Dateien geladen werden. Es können auch mehrere Dateien geladen werden, die im selben Verzeichnis liegen, indem statt einem String ein Array von Strings mitgegeben wird.

// css-Datei laden
$wgResourceModules['jscssfiles1'] = array(
   'styles'          => "test.css",
   'localBasePath'   => "/var/www/html/test",
   );
// 2 css-Dateien laden
$wgResourceModules['jscssfiles2'] = array(
   'styles'          => array("test.css","test2.css"),
   'localBasePath'   => "/var/www/html/test",
   );
// JavaScript-Datei laden
$wgResourceModules['jscssfiles3'] = array(
   'scripts'          => "test.js",
   'localBasePath'    => "/var/www/html/test",
   );
// JavaScript und CSS-Datei laden
$wgResourceModules['jscssfiles4'] = array(
   'styles'          => "test.css",
   'scripts'         => "test.js",
   'localBasePath'   => "/var/www/html/test",
   );