Kurzinfo


Andreas von Studnitz

mehr »

Andreas von Studnitz arbeitet seit 2012 als Geschäftsführer und Entwickler für die Magento-Agentur integer_net GmbH. Aktuelle Informationen finden Sie unter www.integer-net.de

Kontakt

Telefon:
0170 486 0 464

E-Mail:
avs(at)avs-webentwicklung.de

Twitter: twitter.com/avstudnitz

mehr »

< Magento: German Setup - die Alternative zu Market Ready Germany u.a.

Magento-Module deaktivieren - the right way

03.04.2012 16:58

Das Deaktivieren von nicht benötigten Magento-Kern-Modulen spart Ressourcen und beschleunigt das System. Wie man Produkte vollständig und updatesicher deaktiviert, zeigt dieser Artikel.

Wie man Module nicht deaktiviert

1. System -> Konfiguration -> Erweitert -> Modulausgaben deaktivieren
Wie der Name schon sagt: hierüber werden keine Module deaktiviert, sondern nur Modulausgaben. Sprich, die Layoutanpassungen greifen nicht mehr, aber das Modul bleibt aktiv. Observer und Rewrites funktionieren z.B. weiterhin.

2. Bearbeitung bzw. Löschen der XML-Dateien unter app/etc/modules/
Im Prinzip ist dieser Weg richtig: die zu einem Modul gehörige Datei kann gelöscht werden. Alternativ kann der Wert "active" auf "false" gestellt werden.
Aber: diese Methode übersteht das nächste Update nicht, sofern es sich um Kerndateien handelt.

3. Einsatz eines Moduls zum Deaktivieren von Modulen
Siehe 2. Das Modul macht üblicherweise nichts anderes, als die XML-Dateien zu modifizieren. Auch diese Änderungen sind nach dem nächsten Update weg.

Wie man Module deaktiviert

Man kann sich das Fakt zunutze machen, dass alle XML-Dateien in app/etc/modules/ eingelesen werden. Intern werden Sie zu einer großen XML-Struktur zusammengefügt. Dabei überschreiben später geladene Dateien die Informationen aus früher geladenen. Die Reihenfolge ist wie folgt:

1. Mage_All.xml
2. Mage_*.xml
3. *.xml (alphabetisch)

Wenn die eigene Datei jetzt zuletzt geladen wird, überschreibt sie alle vorherigen Definitionen.
Leider gibt es im Magento-Core Module wie Phoenix_Moneybookers, die häufig nicht benötigt werden und (auch aus Sicherheitsgründen) deaktiviert werden sollten, aber nicht dem Namespace "Mage" zugeordnet sind. Um auch solche Fälle abzudecken, sollte die eigene Datei möglichst weit hinten im Alphabet stehen, um zuletzt geladen zu werden. Als Dateiname bietet sich dabei z.B. ZZZ_MageDeactivator.xml an.

Im Folgenden ein Extrembeispiel einer solchen Datei, welche Module deaktiviert werden können, so dass das System dennoch läuft (hier für die Enterprise Edition, kann aber problemlos auch in der Community Edition benutzt werden):

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Mage_Newsletter>
            <active>false</active>
        </Mage_Newsletter>
        <Mage_Usa>
            <active>false</active>
        </Mage_Usa>
        <Mage_PaypalUk>
            <active>false</active>
        </Mage_PaypalUk>
        <Mage_GoogleCheckout>
            <active>false</active>
        </Mage_GoogleCheckout>
        <Mage_Poll>
            <active>false</active>
        </Mage_Poll>
        <Mage_Tag>
            <active>false</active>
        </Mage_Tag>
        <Mage_ProductAlert>
            <active>false</active>
        </Mage_ProductAlert>
        <Mage_Bundle>
            <active>false</active>
        </Mage_Bundle>
        <Mage_Authorizenet>
            <active>false</active>
        </Mage_Authorizenet>
        <Mage_Centinel>
            <active>false</active>
        </Mage_Centinel>
        <Mage_Compiler>
            <active>false</active>
        </Mage_Compiler>
        <Mage_Downloadable>
            <active>false</active>
        </Mage_Downloadable>
        <Mage_LoadTest>
            <active>false</active>
        </Mage_LoadTest>
        <Mage_Ogone>
            <active>false</active>
        </Mage_Ogone>
        <Mage_XmlConnect>
            <active>false</active>
        </Mage_XmlConnect>
        <Phoenix_Moneybookers>
            <active>false</active>
        </Phoenix_Moneybookers>
       
        <Enterprise_AdminGws>
            <active>false</active>
        </Enterprise_AdminGws>
        <Enterprise_Banner>
            <active>false</active>
        </Enterprise_Banner>
        <Enterprise_CatalogEvent>
            <active>false</active>
        </Enterprise_CatalogEvent>
        <Enterprise_CatalogPermissions>
            <active>false</active>
        </Enterprise_CatalogPermissions>
        <Enterprise_Checkout>
            <active>false</active>
        </Enterprise_Checkout>
        <Enterprise_CustomerBalance>
            <active>false</active>
        </Enterprise_CustomerBalance>
        <Enterprise_GiftCard>
            <active>false</active>
        </Enterprise_GiftCard>
        <Enterprise_GiftCardAccount>
            <active>false</active>
        </Enterprise_GiftCardAccount>
        <Enterprise_GiftRegistry>
            <active>false</active>
        </Enterprise_GiftRegistry>
        <Enterprise_Invitation>
            <active>false</active>
        </Enterprise_Invitation>
        <Enterprise_Pbridge>
            <active>false</active>
        </Enterprise_Pbridge>           
        <Enterprise_PricePermissions>
            <active>false</active>
        </Enterprise_PricePermissions>
        <Enterprise_PromotionPermissions>
            <active>false</active>
        </Enterprise_PromotionPermissions>
        <Enterprise_Reminder>
            <active>false</active>
        </Enterprise_Reminder>
        <Enterprise_Reward>
            <active>false</active>
        </Enterprise_Reward>
        <Enterprise_Staging>
            <active>false</active>
        </Enterprise_Staging>
        <Enterprise_WebsiteRestriction>
            <active>false</active>
        </Enterprise_WebsiteRestriction>
    </modules>      
</config>

Natürlich sollte der Inhalt der Datei immer an die eigenen Anforderungen angepasst werden.

Dateien:
ZZZ_MageDeactivator.xml2.9 K

Kommentare

Björn Kraus, 03.04.12 19:17:
Schöner Beitrag, auch wenn das Beispiel mit Phoenix_Moneybookers nicht ganz nett ist, zumal es auch kein Sicherheitsproblem darstellt, das Modul aktiviert zu lassen.

Module kann man übrigens auch direkt in der app/etc/local.xml deaktivieren:


<config>
...
<!-- deactivate core modules -->
<modules>
<Mage_PaypalUk><active>false</active></Mage_PaypalUk>
<Mage_Ogone><active>false</active></Mage_Ogone>
...
</modules>

</config>
Andreas von Studnitz, 03.04.12 20:36:
Hallo Björn,
sorry für das Moneybookers-Beispiel - aber es ist das einzige Core-Modul mit anderem Namespace.
Das mit der app/etc/local.xml ist richtig - der Nachteil ist aber, dass die Datei häufig nicht mit versioniert wird, da bei verschiedenen Installationen auch der Datenbank-Zugang unterschiedlich ist. Danke aber für den Hinweis.
Miguel , 26.10.12 09:27:
Hallo Andreas,

zunächst vielen Dank für diesen tollen Beitrag...Ich möchte unser System "aufräumen" und bin auf Module gestoßen, die wir definitiv nicht mehr benötigen. Sollte ich dann nicht diese Module vollständig löschen und nicht nur deaktivieren?

Ganz lieben Gruß
Andreas von Studnitz, 06.11.12 20:46:
Hallo Miguel,
theoretisch hast du recht. Praktisch sollten aber grundsätzlich keine Core-Dateien gelöscht werden - beim nächsten Update sind sie wieder da. Wenn das Modul gelöscht ist, ist es normalerweise genauso sicher, da kein Zugriff mehr auf die Moduldateien erfolgt.
Kommentar hinzufügen












Den Code eingeben: *


* - Pflichtfeld