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 Ок, принято. Цитата Ссылка на комментарий
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.