Magento 1 3.4.2012

Magento-Module deaktivieren - the right way

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 Magento-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 beispielsweise auch 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 auch 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.