В этом посте опишу реализацию некой "плюшки" - предоставление покупателю просмотреть детально выбранные для покупки товары, не уходя со страницы корзины.[spoiler] Конечно, задачу можно решить "старым дедовским" способом - запихнуть максимум информации в таблицу корзины, тем самым нагромоздить страницу, увеличить количество запросов на ней и соответственно замедлить её загрузку. Я же опишу на мой взгляд более изящное решение.
Описывать решение задачи подробно не буду. Отмечу лишь основные моменты, приправлю скриншотами результатов и выложу пример готовой реализации на десерт:D
И так, кастомизируем компонент корзины и её шаблон. В папку с шаблоном компонента bitrix:sale.basket.basket кладём файлик element.php c таким содержимым:
В файле выполняется подключение компонента детального просмотра элемента каталога bitrix:catalog.element c шаблоном info (у меня так шаблон называется). Теперь создаём файл ajax.php с вызовом компонента корзины с параметром "AJAX_ITEM_CALL"=>"Y":
Для чего я передаю этот параметр, можно посмотреть в код component.php. Его также нужно подправить. В папку \bitrix\components\<NAME_SPACE>\sale.basket.basket\templates\.default\bitrix\catalog.element\ помещаем свой шаблон компонента детального просмотра элемента каталога. У меня это папка info.
Далее в папке шаблон создаём script.js и описываем функцию ShowInfo(), которая будет делать запрос на ajax.php, генерировать форму просмотра и показывать покупателю информацию о товаре.
Теперь дело за малым в всех файлах шаблона корзины заменяем значение атрибута href у всех ссылок, которые введут на страницу детального просмотра, вызовом ShowInfo(). Входящий параметр один - идентификатор товара.
Результаты:
При нажатии на ссылку товара в корзине, появляется окно в детальной информацией о нём, без всяких прыжков по страницам. В своей реализации я сделал окно с фиксированным позиционированием в верхнем правом углу - будет бегать за вами при скроле, пока его не закроют.
Так и предлагаемое решение тоже не совсем стандартно? Особенно тащусь от кастомизации логики компонента. Я например не видел чтобы Битрикс рекомендовал по поводу и без пилить стандартные компоненты , тем более по таким мелочам.
что касается lightbox или нет или других вариантов: Не выжу принципиальной разницы в "спорных" вариантах. По сути и в том и в другом случае решения технологически одинаковые за исключением интерфейсной части (модального окошка). Однако, для первого требуется кастомизация компонента, для второго нет (я даже смысла не вижу в этом). Для второго никаких серьезных вмешательств не требуется, однако не все в комплексе Но если учесть, что все равно требуется создать страницу для ajax обращения, то не понимаю, а что мешает на эту страницу кинуть bitrix:catalog.element, а не доводить bitrix.sale.basket.bsaket до пилорамы.
Поэтому, тут скорее всего, кому как нравится, что касается "плюшек", то это далеко не новика, я не раз уже видел аналогичные реализации и без модификации компонент а только с легким изменением шаблончика, как кстати и предлагал pilezkiy
У меня и у самого аналог есть, основанный именно на "бескровном" варианте. Да и реализовать такой аналог можно минут за 30. В шаблоне реально то только ligtbox да в одном месте ссылку подправить и сделать страницу для ajax запроса.
Что касается стандартно отсутствующего в Битрикс- каждый выбирает решение самостоятельно на базе своего опыта и предпочтений.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».