Самый частый вопрос, задаваемый начинающим разработчиком - "как". Как создать цены, как добавить в корзину, как вывести... Вопрос "почему" задается гораздо реже. Сдав три-четыре, а лучше пять-десять проектов, разработчик уже чувствует себя уверенней - есть стандартные наработки и приемы, стереотипные ходы, можно браться за реализацию задач поинтересней. Самое время для "почему". Но - те самые стереотипы, опыт (руль - он одинаковый и у легковушки, и у фуры), формирующий картину мира, время, которое деньги. Тем более, что все работает. "Почему" может и не прозвучать. А может прозвучать, но остаться без ответа.
Эта статья открывает серию "почему" и "зачем" для разработчиков магазинов. Темы будут определяться исходя из вопросов на форуме и в блогах, обращений в техподдержку, предложений сайта идей. За рамками публикаций сознательно будут оставлены вопросы, касающиеся причин тех или иных архитектурных решений.
В обновлении main 16.5.0 выпущен обновленный класс BX.PopupWindow. В нем полностью изменена верстка всплывающего окна и частично изменены входные параметры. К сожалению, полную совместимость сохранить не удалось - слишком велики изменения, необходимость в которых назрела давно.
Изменения базовых шаблонов компонент магазина, использующих этот класс, выходят в обновлениях 16.5.0 модулей iblock, catalog, sale. Тем же, кто кастомизировал шаблоны нижеперечисленых компонент под свои нужды, необходимо будет внести небольшие правки в script.js (естественно, если после кастомизации остались вызовы BX.PopupWindow или BX.PopupWindowManager.create).
Правки затрагивают шаблоны следующих компонент: iblock
Есть такой замечательный метод - CCatalogProduct::GetOptimalPrice. Его задача - выдать минимальную цену на товар. Начиная с обновления catalog 15.0.2 разработчикам доступны новые возможности изменения результатов этого метода. Рассмотрим их подробно.