Frage

Ich muss neu schreiben Mage_Catalog_Model_Resource_Category_Flat.

Die alte Ressourcenklasse Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Flat ist immer noch in Magento 1.7 für die Rückwärtskompatibilität und erweitert den neuen.

Eine Suche in der Codebasis nach dem vollständigen Modellalias resource_eav_mysql4_category_flat hat kein Ergebnis erzielt. Aber die config.xml von mage_catalog enthält diese Zeile:

<deprecatedNode>catalog_resource_eav_mysql4</deprecatedNode>

Und ich weiß nicht wo und wie deprecatedNode wird genutzt.

Welche Schwierigkeiten haben es zu erwarten, wenn Sie ein solches Ressourcenmodell neu schreiben? Soll ich beide Klassen neu schreiben? Oder kann ich die MySQL4 -Klasse sicher ignorieren?

War es hilfreich?

Lösung

Wenn Sie eine Erweiterung für den persönlichen Gebrauch entwickeln, der nur für Ihr Projekt auf Magento 1.6+ funktionieren soll, gibt es keine Sorgen. Sie sollten nur außer Kraft setzen Mage_Catalog_Model_Resource_Category_Flat durch Hinzufügen dieses in die config.xml Datei Ihrer Erweiterung:

<models>
    <catalog_resource>
        <rewrite>
            <category_flat>Namespace_Module_Model_Resource_Category_Flat</category_flat>
        </rewrite>
    </catalog_resource>
</models>

Wenn Sie eine Erweiterung erstellen und möchten, dass sie vor 1.6 auf der Version funktioniert Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Flat Klasse auch. In diesem Fall Ihr config.xml Abschnitt sollte so aussehen:

<models>
    <catalog_resource><!--used for 1.6+ -->
        <rewrite>
            <category_flat>Namespace_Module_Model_Resource_Category_Flat</category_flat>
        </rewrite>
    </catalog_resource>
    <catalog_resource_eav_mysql4><!-- used for versions before 1.6 -->
        <rewrite>
            <category_flat>Namespace_Module_Model_Resource_Eav_Mysql4_Category_Flat</category_flat>
        </rewrite>
    </catalog_resource_eav_mysql4>
</models>

Sie sollten Ihre gesamte Logik einsetzen Namespace_Module_Model_Resource_Category_Flat Und die Klasse für Versionen vor 1.6 sollte so aussehen:

class Namespace_Module_Model_Resource_Eav_Mysql4_Category_Flat extends Namespace_Module_Model_Resource_Category_Flat
{
}

Auf diese Weise verwenden beide Versionen den gleichen Code.

Andere Tipps

deprecatedNode wird von Magento verwendet, um zu versuchen, zu laden mysql4* Ressourcenmodell if resource*wurde nicht gefunden. Verweisen Sie auf die Kommentare von Mage_Core_Model_Config::getGroupedClassName und Mage_Core_Model_Resource::getEntity:

/**
 * Backwards compatibility for pre-MMDB extensions.
 * In MMDB release resource nodes <..._mysql4> were renamed to <..._resource>. So <deprecatedNode> is left
 * to keep name of previously used nodes, that still may be used by non-updated extensions.
 */

Wenn da ist resource* Modell, das Sie umschreiben sollten, ansonsten neu schreiben mysql4* eines. Beispiel für das Umschreiben mysql4* Ressourcenmodell:

<config>
    <global>
        <models>
            <review_mysql4>
                <rewrite>
                    <review_collection>AW_AdvancedReviews_Model_Mysql4_Review_Collection</review_collection>
                    <review>AW_AdvancedReviews_Model_Mysql4_Review</review>
                </rewrite>
            </review_mysql4>
        </models>
    </global>
</config>

Das mysql4* Die Klassen sind nur für die Rückwärtskompatibilität für vorhandene Implementierungen vorhanden, die sie bereits erweitert haben. IE -Shell -Klassen, um zu vermeiden, dass vorhandene Code die Erweiterung auf alles aktualisiert, um weiter zu funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top