Tipps & Tricks: Magento 2 Modul-Ausgabe unterbinden

In unserer Kategorie „Tipps &Tricks“ stellen wir euch kleine Handgriffe und Kniffe vor, die euch das Leben erleichtern und Fehler beseitigen.

Magento 2 Modul-Ausgabe unterbinden

Kennt ihr auch das Problem, dass ein Modul, das ihr eigentlich garnicht benötigt ungefragt Daten im Frontend eures Shops ausgibt?

Die erste logische Konsequenz, die einem hier in den Sinn kommt: Das Modul deaktivieren und so zwei Fliegen mit einer Klatsche schlagen – wir brauchen nicht lange suche, wo die Ausgabe herkommt und wie wir sie unterbinden können und wir sparen auch noch Code ein, der ausgeführt werden muss.

Wenn das Alles ist – wozu dann dieser Artikel?

Leider ist es aber oft  nicht möglich ein Modul einfach zu deaktivieren. Vor allem Abhängigkeiten zu anderen Modulen oder gewisse andere Funktionen werden benötigt, um den optimalen Output zu bekommen.

Ok – und was jetzt?

Was können wir also tun, damit wir die unerwünschten Frontend-Ausgaben loswerden, ohne das Modul zu deaktiveren?

Magento 1 hat uns hier über das Backend eine komfortable Möglichkeit geboten, genau das zu erreichen. Aber mit Magento 1 ist leider auch dieses Feature Geschichte 😔

In Magento 2 müssen wir daher den etwas unkomfortableren Weg über die config.xml wählen:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <advanced>
            <modules_disable_output>
                <Magento_Newsletter>1</Magento_Newsletter>
            </modules_disable_output>
        </advanced>
    </default>
</config>

Dieses Beispiel deaktiviert sämtliche Frontend-Ausgaben des Magento_Newsletter Moduls, das Modul selber bleibt im Hintergrund jedoch weiterhin aktiv.

Und wie kann ich jetzt verifizieren, dass keine Ausgaben mehr generiert werden?

Die Ausgaben, wegen der ihr überhaupt nach einer Lösung gesucht habt sollten natürlich verschwunden sein.
Um aber auf Nummer sicher zu gehen, dass ein Modul keine Ausgaben mehr ins Frontend schreibt, könnt ihr folgendes Snippet als Ausgangsbasis verwenden:

/**
 * @var \Magento\Framework\Module\Manager
 */
protected $_moduleManager;
/**
 * Newsletter module availability
 *
 * @return bool
 */
public function isNewsletterEnabled()
{
    return $this->_moduleManager->isOutputEnabled('Magento_Newsletter');
}

Hier prüfen wir mit Hilfe des Module Managers, ob ein bestimmtes Modul noch Ausagaben produziert oder nicht. Die Klasse \Magento\Framework\Module\Manager muss vor der Verwendung natürlich noch über die in Magento 2 übliche Dependency Injection geladen werden.

Weiterführende Informationen

Weiterführende Informationen zu diesem Thema findet ihr in der offiziellen Magento 2 Dokumentation unter http://devdocs.magento.com/guides/v2.2/config-guide/config/disable-module-output.html

Fragen, Wünsche & Anregungen

Habt ihr noch Fragen, Wünsche oder Anregungen?
Teilt sie uns in den Kommentaren mit 🙂

Gerne könnt ihr uns auch auf Twitter oder Facebook folgen und so immer auf dem Laufenden bleiben:

https://www.facebook.com/ebizarchitects

Wenn ihr mehr von mir hören wollt, folgt mir auch gerne direkt:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.