Как ни крути, а пришлось заниматься 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 файла, где будут отключенные или включаемые артикулы» — пусть пишут. На самом деле, это, действительно, проще, но передо мной стояла именно эта задача 🙂
Удачи!