Приветствую!
В документации в массиве возвращаемом методом calculate есть элемент description, который на странице выбора способа доставки нигде не выводится. В то же время, есть неописанный элемент comment, который выводится под стоимостью способа доставки. Собственно вопрос: ошибка в документации или description все же несет какую-то смысловую нагрузку?
Спасибо.
В документации
В всех шаблонах точно обрабатывается такая структура
Есть тонкости:
id_метода не должно быть нулем.
Если в ошибочной ситации вернуть из метода не пустую строку и не false, а структуру с 'rate'=>null, на этапе оформления контрол с методом не будет заблокирован и у пользователя будет возможность изменить или заполнить поля адреса. Часто на этапе контактной информации владельцы магазинов адрес либо вовсе не спрашивают, либо делают необязательным. Если плагин из-за неполностью указанного адреса будет просто ошибку в виде строки возаращать, ошибка покажтеся, но для внесения исправлений в адрес придется возвращаться на предыдущий шаг. Но если вернуть структуру и null в качстве rate — будет возможность активировать этот пункт и изменить адрес рядом с методом доставки.
Спасибо, тонкость полезная.
Но есть небольшая странность, навскидку... Передавая поля с пом. requestedAddressFields() некоторые из них можно пометить как "необходимое для расчета стоимости доставки". При этом перерасчет ведется при изменении любого поля, вне зависимости от наличия у поля ключа 'cost' и его значения. Смахивает на ошибку.
cost влияет на показ полей у метода доставки (при соответствующей настройке а бэке)
при этом если все поля заполнены на этапе контактной информации, то у метода доставки они уже не будут показаны
если на этапе контактной не заполнены, то можно показать либо все, которые для расчета нужны, либо вообще все (настройка в бэке)
их еще можно в requestAddressFields пометить как required, Тогда будут спрашиваться в обязательном порядке, независимо от настроек и заполненности. И с отметкой "обязателный" независимо от настроек поля.
Предвосхищая еще один вопрос: customAddressFields сделать можно, но это довольно бессмысленная штука — при создании или редактировании заказа в бэке они не будут показаны, что снижает их ценность до нуля практически. Если плагины, которые пытаются их использовать, но как их авторы объясняют эту ситуацию владельцам магазинов я не знаю :)
А... Точно... Про это подзабыл. Ну тогда все вроде складывается. Хотя, перерасчет только при изменении cost-полей был бы логичным.
Сергей, спасибо.
Хотя насчет 'required' я ошибся. Если все поля нужные на этапе контактной информации (или еще как) заполнены, то поля адреса у метода доставки не показываются.
Если очень нужно их все-таки показать — у меня есть 'dirty hack' на эту тему. :) — надо в requestedAddressFields затребовать заведомо неизвестное поле :) Ща попробовал, кажется работает
Ну да, работает. Вот только в error.log при этом гадит :) Но на заметку взять можно, вдруг пригодится :)