Новое поле в списке товаров в админке WebAsyst

Как ни крути, а пришлось заниматься WebAsyst`ом. Не сказать, что я был этому сильно рад, но, как говорится, была бы работа…

Речь пойдет не о новом движке пятой версии. О старом. Версия 309. Итак, в стандартном вебасисте есть возможность из списка товаров в админке выключать товар. Это хорошо, но не правильно, ведь если товара нет на складе, то его лучше не отключать совсем, выбрасывая поисковику 404, а указать, что его временно нет в наличии. Как раз за последнее и отвечает галочка «Можно купить» на странице редактрирования товара.

Скажу сразу — читать это будет тяжело, а еще тяжелее применять, ибо хоть я и даю всегда номера строк и названия функций, но магазин ко мне попал писаный-переписаный, да и логику разработчиков подчас сложно понять. Разрабы, без обид ))

Чтобы получить возможность менять положение этой галочки из списка — открываем файл \published\SC\html\scripts\modules\test\_methods\b_categories_products.php

и там примерно в районе строки 290 ищем функцию save_products(), там добавляем

/* MerinovKV -- Это сохраняет галочку в поле "Можно купить" в списке товаров в админке НАЧАЛО */
            if (!isset($_POST["ordering_available_" . $key])) {
                $temp = 0;
                $sqlValues[] = "ordering_available='{$temp}'";
            } else {
                $temp = 1;
                $sqlValues[] = "ordering_available='{$temp}'";
            }
            /* MerinovKV -- Это сохраняет галочку в поле "Можно купить" в списке товаров в админке КОНЕЦ */

И функцию main() примерно в районе строки 632 — это новый заголовок для столбца для мгновенного переключения «Можно купить», тоже добавляем строку:

$gridEntry->registerHeader("prdset_str_ordering_available", 'enabled', false, 'asc');

Ах, если бы все так просто… Теперь открываем файл \published\SC\html\scripts\templates\backend\categories_products.html — тут сидит само отображение наших галочек — и добавляем {* новый столбец для переключения «Можно купить» *} где-то в районе 209 строки

<td><input type="checkbox" name="ordering_available_{$GridRows[i].productID}" {if $GridRows[i].ordering_available == '1'} checked {/if}></td>

Хотелось бы остановиться, но ведь пользователю надо как-то сказать о том, что товара пока нет. Открываем карточку товара в файле \published\publicdata\NEWDOM220VRU\attachments\SC\themes\user_dom220v\product_info.html и в том месте, где у нас цена и кнопка купить или в любо другом месте, где нужно вывести предупреждалку, пишем

        {if $product_info.ordering_available}
            <b><p>{if $product_info.dost <= 0} <div class="akcia_logo"></div> {else} Доставка: {$product_info.dost} {/if}</p></b>
                {if $product_info.in_stock <= 0}
                    На заказ
                {else}
                    В наличии на складе
                {/if}
            {else}
                Нет на складе
        {/if}

Вот, как-то так мы и помогаем менеджерам рулить списками. Те, кто сейчас начнут вопить «можно сделать это загрузкой из CSV файла, где будут отключенные или включаемые артикулы» — пусть пишут. На самом деле, это, действительно, проще, но передо мной стояла именно эта задача 🙂

Удачи!

0

Добавить комментарий