Куда вы помещаете модифицированные файлы WSDL для API, чтобы переопределить основные определения?

10

Мы обновили стандартные определения WSDL для поддержки связанных атрибутов продукта для sku_type и price_type. Я пытался вставить обновленные файлы WSDL и WSI app/code/local/Mage/Catalog/etc/, но Magento не загружает их. Я не хочу оставлять их в основном районе, но, похоже, это единственное место, где я могу найти Magento, чтобы найти их.

Какие-либо предложения?

GregC
источник

Ответы:

14

Вы также можете иметь определения wsdl в локальной папке. Что вам нужно сделать, это создать собственный модуль. В пользовательском модуле вы можете добавить файлы api.xml, wsdl.xmlи wsi.xmlвнутри etcпапки.

Ваш wsdl.xmlфайл должен быть принят во внимание при создании фактического wsdl. Magento объединяет все wsdl.xmlфайлы из всех модулей, которые имеют один (то же самое касается api.xmlи wsi.xml). Эти файлы объединены, поэтому вам не нужен полный XML-файл из Mage_Catalogмодели. Вы можете добавить только те части, которые вам нужны, просто убедитесь, что вы придерживаетесь того же пути.

Вот простой пример. В wsdl.xmlот Mage_Catalogесть этот кусок кода:

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

И вы хотите добавить другое поле к этому типу, все что вам нужно сделать в файле wsdl.xml из вашего пользовательского модуля, это:

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

(добавьте атрибуты для определений тегов и схемы, которые я заменил на «...»).

Мариус
источник
Спасибо, Мариус, это имеет смысл. Я добавлю эти определения в наш пользовательский модуль и добавлю его в основное определение WSDL. Я не думал о них как о похожих на файлы макетов и конфигураций. Магия!
ГрегК
Это действительно удобно.
Philwinkle
Мариус, я хочу перезаписать в каталогеProductAttributeSetAttributeAdd ответ от bool до int. Но теперь он показывает оба. Как я могу это сделать?
Рефилон