Необходима оптимизация изображений для pagespeed в стандартном шаблоне catalog.item (шаблон сайта от eshop_bootstrap_yellow).
Обычно в кастомных шаблонах отлично помогает CFile::ResizeImageGet. Но тут в стандартном шаблоне catalog.item каждый товар имеет по несколько изображений, которые BX.js - ом подружаются, используя id.
Дмитрий Подоплелов написал: Как вообще подобные задачи решаются с учетом композита?
Не понял, зачем для переключения вида делать запрос? Меняется же вёрстка, меняйте с помощью js.
Проект нагроможден различным функционалом, в зависимости от этого параметра выполняется различный php код. В общем, вопрос относится именно к ситуации, когда запрос нужен.
В section.php компонента catalog вызывается компонент catalog.section с кастомным параметром VIEW для различного вида отображения товаров. В зависимости от параметра VIEW в шаблоне catalog.section отрабатывает разный код и выводится различная верстка.
Для выбора типа отображения в section.php выводятся кнопки, нажатие на которые обрабатывается js-ом, и отправляется ajax запрос на эту же текущую страницу с определенными POST параметрами. Результат запроса вставляется в блок списка товаров, т.е. весь список подменяется. Чтобы в ajax ответе получить только список товаров, а не всю страницу, в section.php используются: <?$GLOBALS['APPLICATION']->RestartBuffer();?> <?//Нужный блок со списком товаров?> <?die()?>.
Для сохранения типа отображения в том же section.php новый параметр, полученный при ajax запросе записывается в куки. Т.е. есть стандартное значение VIEW, если в куках есть VIEW, то используем его, если пришел ajax запрос с VIEW, то используем его и его же устанавливаем в куки.
ПРОБЛЕМА: При включенном композите после изменении вида отображения товаров список выводится неверно.
1) Открываем страницу раздела 2) Меняем вид отображения 3) Удаляем get параметр из url, перезагружаем страницу 4) Вид отображения старый, неверный 5) Перезагружаем страницу еще раз - вид отображения верный
Думаю, что связано с перезаписью кэша композита. Но как это обойти? Как вообще подобные задачи решаются с учетом композита?
Dmitry Sirotin, BX.onCustomEvent('OnBasketChange'); вызывал и в шаблоне компонента, и в js компонента, также в каталоге после добавления товара в корзину вызывал через консоль - не работает.
На версии 18.1.5 в компоненте sale.basket.basket есть шаблон "old_version_17". Используются подарки в правилах работы с корзиной. Если добавить в корзину товар, для которого должен быть подарок и сам подарок, то при первом открытии страницы с корзиной на шаблоне "old_version_17" подарок отображается с полной ценой. После обновления страницы уже подарок отображается как бесплатный. На шаблоне ".default" такого не наблюдается, цена у товара сразу же при первой загрузке показывается верная. Подскажите пожалуйста, какой функционал нужно использовать, чтобы старый шаблон отрабатывал как новый. На сайте используем кастомный шаблон на основе старого, все наработки переносить на новый очень проблематично.