- Joomla Version
- alle
- PHP Version
- Unbekannt
- Hoster
- alle
Im Thread Class "JPlugin" not found - Deaktivierung von "Behaviour - Backward Compatibility" - Plugin aktivieren ohne Zugriff auf Datenbank! wurde um ein einfache Möglichkeit gebeten die das deaktivierte Plugin Verhalten – Abwärtskompatibilität in Joomla 5 einfach wieder zu aktivieren.
Dieser Thread enthält nun das geänderte Script um nur das deaktivierte Plugin
"Verhalten – Abwärtskompatibilität 6" in Englisch: "Behaviour - Backward Compatibility 6"
zu aktivieren ohne separaten Zugriff auf die Datenbank. Das Script ist nur für Joomla! 6 gedacht.
Habe jetzt mal in Anlehnung an die readmedia.php von SniperSister die kleine php-Datei geschrieben welche per aufruf das Backward Compatibility 6" - Plugin aktiviert.
Die Datei enthält den nachfolgenden Code im Spoiler:
Spoiler anzeigen
<?php
/**
* @copyright Copyright (C) 2026 Sieger66
* @package S66Compat6
* @version 1.0.0
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html>
*/
declare(strict_types=1);
use Joomla\CMS\Application\SiteApplication;
use Joomla\CMS\Application\AdministratorApplication;
use Joomla\CMS\Factory;
use Joomla\CMS\Session\Session;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Response\JsonResponse;
use Joomla\Session\Session as SessionAlias;
use Joomla\Session\SessionInterface;
/* Initialize Joomla framework */
const _JEXEC = 1;
// Load system defines
// aus /administrator/templates/atum/compat6.php drei Dateordnerebenen hoch
// drei Dateordnerebenen hoch um JPATH_BASE zu erreichen
// per dirname(__DIR__ , 3)
if (!defined('JPATH_BASE')) {
define('JPATH_BASE', dirname(__DIR__ , 3));
}
require_once JPATH_BASE . '/includes/defines.php';
require_once JPATH_BASE . '/includes/framework.php';
$container = Factory::getContainer();
$container->alias('session.web', 'session.web.site')
->alias('session', 'session.web.site')
->alias('JSession', 'session.web.site')
->alias(Session::class, 'session.web.site')
->alias(SessionAlias::class, 'session.web.site')
->alias(SessionInterface::class, 'session.web.site');
$app = $container->get(AdministratorApplication::class);
// $app = $container->get(SiteApplication::class);
// Load the extension Namespaces
JLoader::register('JNamespacePsr4Map', JPATH_LIBRARIES . '/namespacemap.php');
$extensionPsr4Loader = new JNamespacePsr4Map();
$extensionPsr4Loader->load();
// Set the application as global app
Factory::$application = $app;
// echo 'Die ID ist' . Factory::$application->getSession()->get('user')->id;
// Actual permission check starts here
if (!Factory::$application->getSession()->get('user')->id) {
header('HTTP/1.0 403 access denied');
echo '<h1>Zuerst anmelden um das Kompatibilitäts-Plugin compat6 wieder zu aktivieren!</h1>';
exit('Access denied');
}
// echo '<h1>Zuerst anmelden um ... wieder zu aktivieren</h1>';
// exit('Access denied');
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->update('#__extensions');
$query->set($db->qn('enabled') . ' = 1');
$query->where($db->qn('folder') . ' = ' . $db->q('behaviour'));
$query->where($db->qn('type') . ' = ' . $db->q('plugin'));
$query->where($db->qn('element') . ' = ' . $db->q('compat6'));
$query->where($db->qn('client_id') . ' = 0' );
$db->setQuery($query);
$db->execute();
$query = $db->getQuery(true);
$query->update('#__extensions');
$query->set($db->qn('params') . ' = \'{"classes_aliases":"1","legacy_classes":"1"}\'');
$query->where($db->qn('folder') . ' = ' . $db->q('behaviour'));
$query->where($db->qn('type') . ' = ' . $db->q('plugin'));
$query->where($db->qn('element') . ' = ' . $db->q('compat6'));
$query->where($db->qn('client_id') . ' = 0' );
$db->setQuery($query);
$db->execute();
echo '<h1>Das Kompatibilitäts-Plugin compat6 ist nun wieder aktiviert</h1>';
echo 'Die beiden Optionen im Plugin "Klassenaliase" und "Veraltete Klassen einbeziehen" sind beide nun aktiviert!';
exit;
Alles anzeigen
und habe ich als Dateianhang als txt-Datei beigefügt.
Die Datei muß entsprechend umbenannt und gespeichert und aufgerufen werden z.B. in
/administrator/templates/atum/compat6.php
Wie auch im obigen Beispieldateipfad ersichtlich funktioniert sie unverändert nur dann wenn sie genau 3 Dateiordnerebenen über dem Joomla-root Dateiordner abgelgt wird.
Übrigens muß man im Joomla-Backend angemeldet sein sonst wird durch den Aufruf der Datei das Plugin nicht aktiviert. Es sei denn man ändert den Code vom Script entsprechend ab.
Diese zusätzliche Sicherheitsvorkehrung wäre zwar nicht unbedingt erforderlich wenn man das Backend ohnehin per .htaccess geschützt hat. Habe ich aber im Script gelassen für alle Fälle.
Die beiden Optionen im Plugin "Klassenaliase" und "Veraltete Klassen einbeziehen" werden ebenfalls aktiviert!
Der Dateiname vor dem .php kann übrigens auch beliebig geändert werden z.B. in
/administrator/templates/atum/mycompat6secret0815.php