Gdzie umieszczasz zmodyfikowane pliki WSDL dla interfejsu API, aby zastąpić podstawowe definicje?


10

Zaktualizowaliśmy standardowe definicje WSDL, aby obsługiwały atrybuty produktu w pakiecie dla sku_type i price_type. Próbowałem umieścić zaktualizowane pliki WSDL i WSI app/code/local/Mage/Catalog/etc/, ale Magento ich nie ładuje. Nie chcę zostawiać ich w głównym obszarze, ale wydaje się, że to jedyne miejsce, w którym mogę zmusić Magento do ich znalezienia.

Jakieś sugestie?

Odpowiedzi:


14

Możesz również mieć definicje wsdl w folderze lokalnym. Musisz tylko utworzyć niestandardowy moduł. W module niestandardowego można dodać pliki api.xml, wsdl.xmla wsi.xmlwewnątrz etcfolderu.

Twój wsdl.xmlplik należy wziąć pod uwagę podczas budowania rzeczywistego pliku WSDL. Magento łączy wszystkowsdl.xml pliki ze wszystkich modułów, które mają jeden (to samo dotyczy api.xmli wsi.xml). Te pliki są scalone, więc nie potrzebujesz pełnego pliku xml z Mage_Catalogmodelu. Możesz dodać tylko potrzebne elementy, po prostu upewnij się, że utrzymujesz tę samą ścieżkę.

Oto prosty przykład. W wsdl.xmlzMage_Catalog nie jest to fragment kodu:

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

I chcesz dodać inne pole do tego typu, wszystko, co musisz zrobić w pliku wsdl.xml z niestandardowego modułu, to:

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

(dodaj atrybuty definicji znaczników i schematu, które zastąpiłem „...”).


Dzięki Marius, to ma sens. Dodam te definicje do naszego niestandardowego modułu i dodam je do głównej definicji WSDL. Nie uważałem ich za podobne do plików układu i konfiguracji. Magia!
GregC,

To jest naprawdę przydatne.
philwinkle

Marius, chcę zastąpić catalogProductAttributeSetAttributeDodaj odpowiedź z bool na int. Ale teraz pokazuje oba. Jak mogę to zrobić?
Refilon,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.