Onde você coloca os arquivos WSDL modificados para que a API substitua as definições principais?

10

Atualizamos as definições padrão do WSDL para oferecer suporte aos atributos do produto em pacote para sku_type e price_type. Eu tentei colocar os arquivos WSDL e WSI atualizados app/code/local/Mage/Catalog/etc/, mas o Magento não os carrega. Não quero deixá-los na área central, mas esse parece ser o único lugar em que o Magento pode encontrá-los.

Alguma sugestão?

GregC
fonte

Respostas:

14

Você também pode ter definições de WSDL na pasta local. O que você precisa fazer é criar um módulo personalizado. Em seu módulo personalizado que você pode adicionar os arquivos api.xml, wsdl.xmle wsi.xmldentro da etcpasta.

Seu wsdl.xmlarquivo deve ser levado em consideração ao criar o wsdl real. Magento mescla todos os wsdl.xmlarquivos de todos os módulos que possuem um (o mesmo vale para api.xmle wsi.xml). Esses arquivos são mesclados, portanto, você não precisa do arquivo xml completo do Mage_Catalogmodelo. Você pode adicionar apenas as peças necessárias, mas mantenha o mesmo caminho.

Aqui está um exemplo simples. Em wsdl.xmlpartir Mage_Catalogexiste este pedaço 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>

E você deseja adicionar um outro campo a esse tipo, tudo o que você precisa fazer no seu arquivo wsdl.xml do seu módulo personalizado é o seguinte:

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

(adicione os atributos para as definições de tags e o esquema que substitui por '...').

Marius
fonte
Obrigado Marius, isso faz sentido. Vou adicionar essas definições ao nosso módulo personalizado e adicioná-lo à definição principal do WSDL. Eu não estava pensando neles como semelhante ao layout e aos arquivos de configuração. Magia!
22813 GregC # 1350
Isso é realmente útil.
philwinkle
Marius, quero sobrescrever a resposta catalogProductAttributeSetAttributeAdd de bool para int. Mas agora está mostrando os dois. Como faço isso?
Refilon