Изменения базовых шаблонов компонент магазина, использующих этот класс, выходят в обновлениях 16.5.0 модулей iblock, catalog, sale. Тем же, кто кастомизировал шаблоны нижеперечисленых компонент под свои нужды, необходимо будет внести небольшие правки в script.js (естественно, если после кастомизации остались вызовы BX.PopupWindow или BX.PopupWindowManager.create).
Правки затрагивают шаблоны следующих компонент:
iblock
- catalog.element
- catalog.section
- catalog.top
- catalog - вложенные шаблоны простых компонент (catalog.element, catalog.section, catalog.top)
- catalog.bigdata.products
- catalog.recommended.products
- catalog.viewed.products
- sale.bestsellers
- sale.gift.basket
- sale.gift.product
- sale.gift.section
- sale.recommended.products
[spoiler]
Метод InitPopupWindow
В вызове BX.PopupWindowManager.create меняется последний параметр (closeIcon) и добавляется новый (contentColor). Старый вызов
this.obPopupWin = BX.PopupWindowManager.create('уникальный_для_шаблона_идентификатор'+this.visual.ID, null, { autoHide: false, offsetLeft: 0, offsetTop: 0, overlay : true, closeByEsc: true, titleBar: true, closeIcon: {top: '10px', right: '10px'} }); |
this.obPopupWin = BX.PopupWindowManager.create('уникальный_для_шаблона_идентификатор'+this.visual.ID, null, { autoHide: false, offsetLeft: 0, offsetTop: 0, overlay : true, closeByEsc: true, titleBar: true, closeIcon: true, contentColor: 'white' }); |
closeIcon: {top: '10px', right: '10px'}
Стало
closeIcon: true,
contentColor: 'white'
Метод BasketResult
В строках
popupContent = '<div style="width: 96%; margin: 10px 2%; text-align: center;"><img src="'+productPict+'" height="130" style="max-height:130px"><p>'+this.product.name+'</p></div>'; |
popupContent = '<div style="width: 96%; margin: 10px 2%; text-align: center;"><p>'+(!!arResult.MESSAGE ? arResult.MESSAGE : BX.message('BASKET_UNKNOWN_ERROR'))+'</p></div>'; |
margin: 10px 2%; |
margin: 0; |
Кроме этого, вызов
this.obPopupWin.setTitleBar(popupTitle); |
this.obPopupWin.setTitleBar(arResult.STATUS === 'OK' ? BX.message('TITLE_SUCCESSFUL') : BX.message('TITLE_ERROR')); |
Метод CompareResult
В строках
popupContent = '<div style="width: 96%; margin: 10px 2%; text-align: center;"><p>'+BX.message('COMPARE_MESSAGE_OK')+'</p></div>'; |
popupContent = '<div style="width: 96%; margin: 10px 2%; text-align: center;"><p>'+(!!result.MESSAGE ? result.MESSAGE : BX.message('COMPARE_UNKNOWN_ERROR'))+'</p></div>'; |
margin: 10px 2%; |
margin: 0; |
this.obPopupWin.setTitleBar(popupTitle); |
this.obPopupWin.setTitleBar(BX.message('COMPARE_TITLE')); |
Естественно, перед правками необходимо сохранить резервную копию файлов.
Фото:
Выглядит один в один окно. Чтобы заголовок не прилипал так, надо править стили самому?
Не может же Битрикс выпустить заведомо косячное обновление и объявить, что косяк исправится с обновлением других модулей.
Никто эти окна в здравом уме использовать не будет, как и весь этот чудофреймворк аля jquery.
Так что все нормально. Никто и не заметит.
А у кого стандартные окна - ну что ж, держитесь там, здоровья вам
На самом деле на реальных задачах слишком много нужно от этого окна.
Поэтому смысла не вижу как-то заморачиваться со штатным, если все равно подключен jquery
Вы просто реально не представляете с какими идеями заходят клиенты для этих модалок и как результат их или вовсе невозможно использовать из коробки, или приходится использовать сторонние библиотеки.
Чем не устраивает более простая структура разметки:
Причем реально этот мусор идет из ядра:
Т.е. без шансов. Мы по любому должны под эту таблицу подстраиваться.
И вот вроде хочешь перейти на нативную битриксовую библиотеку, а вот из-за таких приколов вынуждены использовать сторонние библиотеки, тот же fancybox. Плюс в довесок документация по BX максимум 10% ядра покрывает, сидим курим ядро, а там такие вот чудеса, что за голову хватаешься - жесткая верстка, жесткие значения, инлайновые стили и т.д. - что все это перекрывается различными говнохаками.
2. Вопросы идеологии разработки выходят за рамки этого обсуждения. Пост посвящен совершенно конкретной проблеме.
Что там за верстальщик, это жесть какая-то, обычно люди обучаются и совершенствуются, а тут все наоборот, пусть хоть на фрилансе формы поверстает и модалки с сеткой, глядишь Битрикс преобразится в лучшую сторону, поменьше табличной верстки в 2016 году и 24 значных классов на три строки Боюсь спросить у него, что такое БЭМ?
Если Вас чем-то не устраивает jQuery используйте другую понятную библиотеку. BX ущербный сам по себе, есть опыт кастомизации catalog.element и прочего. Он даже изменения в DOM не видит, те приходится все данные сразу подгружать в dom чтобы он нормально работал.
Давно хотел создать идею перевести фронтенд на jQuery, но мне слабо верится в реализацию идей разработчиков. Вот маркетинговые идеи Вы реализуете, это факт. А какой там код, кому какая разница, как Вы сами сказали, что пользователю пофиг что там за код, главное чтобы работало.
Возвращаясь к вопросам модальных окон, тоже пришлось написать на нативном BX свою модалку и свой обработчик поведения hover - другого решения, увы, нет.
P.S. Вон внизу народ уже столкнулся с проблемами подобного обновления, о котором я говорил выше - битрикс стиль инлайновый в ядре поправил и все поехало.
Совсем не jQuery.
Такой гигант как magento в первой версии использует prototype.js , я слабо знаком с данным js фреймоворком, но разобраться проблем не составило. Мадженто 2 активно использует jQuery, jQuery UI, KnockoutJs, подгрузка скриптов requirejs...
А битрикс использует BX ну ну))
В общем мне слабо верится в будущее BX.
На счет SKU согласен, нервов трепет много, вообще по этому компоненту много нареканий, некоторые вещи трогать в принципе страшно в нем, потому что по непонятной причине рассыпается без ошибок и каких либо логов. Но в целом проблем никогда не было BX прослушать события элементов пришедших через аякс.
Но спорить не буду, что либа крайне капризная, но когда создаешь публичный модуль который идет в маркетплейс, мы уже поняли что лучше кроме нее вообще ничего не использовать, поддержка потом такого решения крайне дорогое выходит.
Пример:
Зашел к нам клиент (до сих пор обслуживается) с тиражкой с маркета, в которой было уже из коробки - jQuery (6 версий), Prototype и Mootools - каждый для своих свистоперделок мелочных. Все это бодро конфликтовало. До нас сайт обслуживали другие товарищи, подключали новые модули с маркета и каждый шел со своим jQuery в поставке. Кто-то свой модуль писал на 1.9, кто-то на 1.11, кто-то на 2.*, при попытке отрубить подключение какого-либо все это весело рушилось, как карточный домик. Причем рушилось так, что цепляло за собой хвостом еще пару таких компонентов/модулей. Сайт перебрали, оставили один jquery из коробки и именно тогда пришла мысль, что свои модули надо переводить на BX, как бы он труден не был.
Это после аякса работать не будет, изучайте документацию.
А BX господа из битрикс могут в любой момент обновить и поломать как они это сделали с попапом и я побегу на все свои 50+ проектов допиливать из-за их апдейта???
Вы напрасно "гоните на jquery" и событийную модель не понимаете, раз не отличаете событий на DOM и на document - и у вас ещё к тому же "работает", то что работать не может, потому что вам надо прочитать как происходит запись на события в JS.
Для публички действительно, использовать внутреннюю библиотеку очень неудобно. Странно, что вы не стали писать аналог бутстрапа. Было бы забавно на это посмотреть. Все дело в том, что джиквери многие знают наизусть давно, а ваш фреймворк бьет нехило по кошельку заказчикам.
Ну ладно, пойду повешу новое окошко на редактирование элемента. Если не отпишусь - считать коммунистом.
Как бы вот такое ещё прописать: .animate({opacity: 1, top: '50%'}, 200);
$('.my-class').on('click', function() {}).Теперь все проекты, на которых такие модальные окна - лучше не обновлять
Хорошая кака в сторону клиентов
Лучше бы сделали новую библиотеку, а старую оставили без изменения
А уж сменить старые вызовы в компонентах на новые - не проблема.
сейчас же получается, что Битрикс снова противоречит своим постулатам по поводу безопасности обновления.
Вот без обид
но уже каждые полгода как минимум я жду очередные фортели
Особенно на интересных и нетиповых проектах.
Что следующее?
можете огласить "опасные места" на год вперед хотя бы, чтобы нам успеть приготовиться и соломки подстелить.
Или не "класть асфальт там, где собираются менять теплотрассу"
iblock
- catalog.element
- catalog.section
- catalog.top
- catalog - вложенные шаблоны простых компонент (catalog.element, catalog.section, catalog.top)
catalog- catalog.bigdata.products
- catalog.recommended.products
- catalog.viewed.products
sale- sale.bestsellers
- sale.gift.basket
- sale.gift.product
- sale.gift.section
- sale.recommended.products
"а платить за эти правки разработчику кто будет? клиент? вы думаете, он будет от этого в восторге?