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 Ок, принято. Ссылка на комментарий
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти