¿Dónde coloca los archivos WSDL modificados para que la API anule las definiciones principales?

10

Hemos actualizado las definiciones estándar de WSDL para admitir los atributos de productos agrupados para sku_type y price_type. Intenté poner los archivos WSDL y WSI actualizados app/code/local/Mage/Catalog/etc/, pero Magento no los carga. No quiero dejarlos en el área central, pero ese parece ser el único lugar donde puedo conseguir que Magento los encuentre.

¿Alguna sugerencia?

GregC
fuente

Respuestas:

14

También puede tener definiciones wsdl en la carpeta local. Lo que debe hacer es crear un módulo personalizado. En su módulo personalizado que puede agregar los archivos api.xml, wsdl.xmly wsi.xmldentro de la etccarpeta.

Su wsdl.xmlarchivo debe tenerse en cuenta al construir el wsdl real. Magento combina todos los wsdl.xmlarchivos de todos los módulos que tienen uno (lo mismo vale para api.xmly wsi.xml). Estos archivos se fusionan, por lo que no necesita el archivo xml completo del Mage_Catalogmodelo. Puede agregar solo las piezas que necesita, solo asegúrese de mantener el mismo camino.

Aquí hay un ejemplo simple. A wsdl.xmlpartir de Mage_Catalogahí está esta pieza de código:

<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>

Y desea agregar otro campo a este tipo, todo lo que tiene que hacer en su archivo wsdl.xml desde su módulo personalizado es esto:

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

(agregue los atributos para las definiciones de etiquetas y el esquema que he reemplazado con '...').

Marius
fuente
Gracias Marius, eso tiene sentido. Agregaré estas definiciones a nuestro módulo personalizado y lo agregaré a la definición maestra WSDL. No estaba pensando en estos como similares a los archivos de diseño y configuración. ¡Magia!
GregC
Esto es realmente útil.
philwinkle
Marius, quiero sobrescribir la respuesta catalogProductAttributeSetAttributeAdd de bool a int. Pero ahora está mostrando ambos. ¿Cómo puedo hacer eso?
Refilon