Wo legen Sie geänderte WSDL-Dateien für die API ab, um die Kerndefinitionen zu überschreiben?

10

Wir haben die Standard-WSDL-Definitionen aktualisiert, um gebündelte Produktattribute für sku_type und price_type zu unterstützen. Ich habe versucht, die aktualisierten WSDL- und WSI-Dateien einzulegen app/code/local/Mage/Catalog/etc/, aber Magento lädt sie nicht. Ich möchte sie nicht im Kernbereich belassen, aber das scheint der einzige Ort zu sein, an dem ich Magento dazu bringen kann, sie zu finden.

Irgendwelche Vorschläge?

GregC
quelle

Antworten:

14

Sie können auch WSDL-Definitionen im lokalen Ordner haben. Sie müssen lediglich ein benutzerdefiniertes Modul erstellen. In Ihrem benutzerdefinierten Modul können Sie die Dateien hinzufügen api.xml, wsdl.xmlund wsi.xmlinnerhalb des etcOrdners.

Ihre wsdl.xmlDatei sollte beim Erstellen der eigentlichen WSDL berücksichtigt werden. Magento führt alle wsdl.xmlDateien aus allen Modulen zusammen, die eines haben (dasselbe gilt für api.xmlund wsi.xml). Diese Dateien werden zusammengeführt, sodass Sie nicht die vollständige XML-Datei aus dem Mage_CatalogModell benötigen . Sie können nur die Teile hinzufügen, die Sie benötigen. Stellen Sie jedoch sicher, dass Sie den gleichen Pfad beibehalten.

Hier ist ein einfaches Beispiel. In wsdl.xmlaus Mage_Cataloggibt es dieses Stück Code:

<definitions...>
    <types>
        <schema ...>
            <complexType name="catalogProductEntity">
                <all>
                    <element name="product_id" type="xsd:string"/>
                    <element name="sku" type="xsd:string"/>
                    <element name="name" type="xsd:string"/>
                    <element name="set" type="xsd:string"/>
                    <element name="type" type="xsd:string"/>
                    <element name="category_ids" type="typens:ArrayOfString"/>
                    <element name="website_ids" type="typens:ArrayOfString"/>
                </all>
            </complexType>
        </schema>
    </types>
</definitions>

Wenn Sie diesem Typ ein weiteres Feld hinzufügen möchten, müssen Sie in Ihrer Datei wsdl.xml von Ihrem benutzerdefinierten Modul aus Folgendes tun:

    <definitions...>
        <types>
            <schema ...>
                <complexType name="catalogProductEntity">
                    <all>
                        <element name="custom_attribute" type="xsd:string"/>
                    </all>
                </complexType>
            </schema>
        </types>
    </definitions>

(Fügen Sie die Attribute für die Tag-Definitionen und das Schema hinzu, die ich durch '...' ersetzt habe.)

Marius
quelle
Danke Marius, das macht Sinn. Ich werde diese Definitionen zu unserem benutzerdefinierten Modul hinzufügen und es zur Master-WSDL-Definition hinzufügen lassen. Ich habe diese nicht als ähnlich wie Layout- und Konfigurationsdateien angesehen. Magie!
GregC
Das ist wirklich praktisch.
Philwinkle
Marius, ich möchte die Antwort catalogProductAttributeSetAttributeAdd von bool nach int überschreiben. Aber jetzt zeigt es beides. Wie mache ich das?
Refilon