retailcrm / woocommerce-module

WooCommerce integration plugin
https://www.simla.com
MIT License
7 stars 29 forks source link

Атрибуты товаров на кириллице не попадают в ICML-каталог #243

Closed Mozgito closed 2 years ago

Mozgito commented 2 years ago

Если у атрибута товара задать ярлык содержащий кириллицу, то при генерации каталога этот атрибут не попадет в массив offer['params']

Как пример, создал атрибут кириллица с ярлыком кириллица, значение свойства в товаре указал русский текст.

Когда модуль получил атрибуты https://github.com/retailcrm/woocommerce-module/blob/6132172da592a19ee9c944f8b10b55447b32b03d/src/include/class-wc-retailcrm-icml.php#L82, то там информация была в таком виде [pa_кириллица] => кириллица

После этого при создании офферов в методе setOffer в поле name оказывается пустота https://github.com/retailcrm/woocommerce-module/blob/6132172da592a19ee9c944f8b10b55447b32b03d/src/include/class-wc-retailcrm-icml.php#L469 Array ( [code] => pa_%d0%ba%d0%b8%d1%80%d0%b8%d0%bb%d0%bb%d0%b8%d1%86%d0%b0 [name] => [value] => русский текст ) потому что имя атрибута сначала выглядело как кириллица, а затем стало pa_%d0%ba%d0%b8%d1%80%d0%b8%d0%bb%d0%bb%d0%b8%d1%86%d0%b0

Похоже что тут ломается кириллица в urlencode в имени атрибутов, когда имя запрашивается из бд wc-функцией https://github.com/retailcrm/woocommerce-module/blob/6132172da592a19ee9c944f8b10b55447b32b03d/src/include/class-wc-retailcrm-icml.php#L348

max-baranikov commented 2 years ago

Здравствуйте,

В CRM предполагается что код атрибута содержит только латиницу, потому при использовании кириллицы могут возникнуть проблемы как на стороне модуля, так и на стороне самой CRM

Со стороны модуля можно либо транслитерировать код кириллицы в латиницу, либо посмотреть в сторону использования идентификатора атрибута вместо имени

Данный кейс сейчас прорабатывается, финальные доработки будут в новых версиях модуля

uryvskiy-dima commented 2 years ago

Добрый день, проведя анализ работы WordPress установили, что поле ярлык(slug) должно быть уникальным и написано на латинице, его длина не должна превышать 28 символов. Проведя анализ работы CRM установили, что при загрузке ICML-файла каталога, CRM принимает в значении поля code только символы a-Z0-9_

Было решено не производить доработки по данному вопросу, клиентам рекомендуется в поле ярлык(slug) добавлять значение на латинице.