bobrovantig Опубликовано 18 сентября, 2023 Post #5365 Опубликовано 18 сентября, 2023 (изменено) Добрый день. Обнаружил проблему, что шаблон для Яндекс.Маркет некорректно прописывает доступность товара, а именно она всегда true даже для случаев, когда товара нет в наличии или его меньше, чем min quantity, например. Полез разбираться в формуле, потратил полдня, чтобы понять, как она работает и какая в неё логика заложена из-за довольно длинной формулы, обилия условий "не" и т.п. Для этого решил разбить её на несколько частей и проверять по отдельности каждое условие (см. код с комментом ниже) и выявить, какое из них косячно отрабатывает. В общем, заменил в паре место "и" на "или", где-то убрал или наоборот добавил "не". В общем, можете сравнить мой код и оригинальный. Т.к. нет описания, что скрывается под некоторыми переменными, то может я что-то не совсем корректно исправил и правильнее как-то по-другому её переписать, но по крайней мере у меня с таким кодом сейчас корректно определяется доступность товара. Проверьте, пожалуйста. Мой код: {foreach $products as $product} {* DELETE after checking *} {if !($product.zero_price_action === "R" && $product.price == 0)}true1 {else}false1 {/if} {if !($settings.General.inventory_tracking !== "Y")}true2 {else}false2 {/if} {if !($settings.General.allow_negative_amount !== "Y")}true3 {else}false3 {/if} {if !(($product.amount <= 0 || $product.amount < $product.min_qty) && $product.tracking != "ProductTracking::DO_NOT_TRACK"|enum)}true4 {else}false4 {/if} {if !($product.is_edp == "Y")}true5 {else}false5 {/if} {* DELETE after checking *} {$available = !($product.zero_price_action === "R" && $product.price == 0) && !($settings.General.inventory_tracking !== "Y" || $settings.General.allow_negative_amount !== "Y" || (($product.amount <= 0 || $product.amount < $product.min_qty) && $product.tracking != "ProductTracking::DO_NOT_TRACK"|enum) || $product.is_edp == "Y")} {strip}<offer id="{$product.product_id}" available="{if $available}true{else}false{/if}" ... Оригинальный код: {foreach $products as $product} {$available = !($product.zero_price_action === "R" && $product.price == 0) && !($settings.General.inventory_tracking === "Y" && $settings.General.allow_negative_amount !== "Y" && (($product.amount <= 0 || $product.amount < $product.min_qty) && $product.tracking != "ProductTracking::DO_NOT_TRACK"|enum) && $product.is_edp !== "Y")} {strip}<offer id="{$product.product_id}" available="{if $available}true{else}false{/if}" ... Изменено 18 сентября, 2023 пользователем bobrovantig
Администраторы ab.support.serhii Опубликовано 18 сентября, 2023 Администраторы Post #5366 Опубликовано 18 сентября, 2023 1 минуту назад, bobrovantig сказал: у меня с таким кодом сейчас корректно определяется доступность товара Работает - хорошо В любом случае, мы не распространяем и не поддерживаем больше эту выгрузку.
bobrovantig Опубликовано 18 сентября, 2023 Автор Post #5381 Опубликовано 18 сентября, 2023 Ок, принято.
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти