Où placez-vous les fichiers WSDL modifiés pour l'API pour remplacer les définitions principales?

10

Nous avons mis à jour les définitions WSDL standard pour prendre en charge les attributs de produit groupés pour sku_type et price_type. J'ai essayé de mettre les fichiers WSDL et WSI mis à jour app/code/local/Mage/Catalog/etc/, mais Magento ne les charge pas. Je ne veux pas les laisser dans la zone centrale, mais cela semble être le seul endroit où je peux demander à Magento de les trouver.

Aucune suggestion?

GregC
la source

Réponses:

14

Vous pouvez également avoir des définitions wsdl dans le dossier local. Ce que vous devez faire est de créer un module personnalisé. Dans votre module personnalisé, vous pouvez ajouter les fichiers api.xml, wsdl.xmlet wsi.xmlà l'intérieur du etcdossier.

Votre wsdl.xmlfichier doit être pris en considération lors de la construction du wsdl réel. Magento fusionne tous les wsdl.xmlfichiers de tous les modules qui en ont un (il en va de même pour api.xmlet wsi.xml). Ces fichiers sont fusionnés, vous n'avez donc pas besoin du fichier xml complet du Mage_Catalogmodèle. Vous pouvez ajouter uniquement les pièces dont vous avez besoin, assurez-vous simplement de garder le même chemin.

Voici un exemple simple. Dans wsdl.xmlde Mage_Cataloglà est ce morceau de 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>

Et vous voulez ajouter un autre champ à ce type, tout ce que vous avez à faire dans votre fichier wsdl.xml à partir de votre module personnalisé est le suivant:

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

(ajoutez les attributs pour les définitions de balises et le schéma que j'ai remplacés par '...').

Marius
la source
Merci Marius, cela a du sens. Je vais ajouter ces définitions à notre module personnalisé et le faire ajouter à la définition WSDL principale. Je ne les considérais pas comme similaires aux fichiers de mise en page et de configuration. La magie!
GregC
C'est vraiment pratique.
philwinkle
Marius, je veux écraser la réponse catalogProductAttributeSetAttributeAdd de bool à int. Mais maintenant, cela montre les deux. Comment je fais ça?
Refilon