Где вы поместите модифицированные файлы WSDL для API, чтобы переопределить основные определения?
Вопрос
Мы обновили стандартные определения WSDL, чтобы поддержать атрибуты продукта в комплекте для SKU_TYPE и PROCE_TYPE. Я попытался поместить обновленные файлы WSDL и WSI в app/code/local/Mage/Catalog/etc/
, но Magento не загружает их. Я не хочу оставлять их в основной области, но это единственное место, где я могу получить Magento, чтобы найти их.
Какие-либо предложения?
Решение
Вы также можете иметь определения 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>
(Добавьте атрибуты для определений тегов и схемы, которые я заменил '...').