Не реагирует слайдре на клики для переключения, автоматом тоже не меняется, в попапе тоже глухо, но в коде есть валидные блоки кода и остаётся только active удалять и добавлять у блоков.
К карточке для каждого товара добавляются две картинки ,которые должны выводиться в слайдере, в частности схема и упаковка товара. В торговых предложениях дополнительное фото товара.
Надо сделать так, чтоб при смене параметров товара менялась в слайдере только первая картинка. Я сделал отдельный массив и добавил его к первому слайду в result_modifier.php.
Архитектура битрекса, мне на 100% ещё ясна, но по ходу что-то не так и не туда втыкаю.
Есть идеи как правильно это сделать? Можно поверх и свой обработчик сделать, но есть же штатные средства. Может есть метод специальный для добавления картинок в слайдер? настройки тоже все перепробовал...
// Добавляем для полной работы слайдера
foreach ( $arResult['OFFERS'] as $key => $value ) {
$arResult['OFFERS'][$key]['MORE_PHOTO'][] = $arResult['JS_OFFERS'][0]['SLIDER'][1];
$arResult['OFFERS'][$key]['MORE_PHOTO'][] = $arResult['JS_OFFERS'][1]['SLIDER'][1];
$arResult['OFFERS'][$key]['MORE_PHOTO_COUNT'] = 2;
}
Где ключ отражает количество цветовых решений товара, а [0] и [1] справа соответственно 2 картинка схема, а третья упаковка. После этого всё заработало.
Весь
Код
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/**
* @var CBitrixComponentTemplate $this
* @var CatalogElementComponent $component
*/
$component = $this->getComponent();
$arParams = $component->applyTemplateModifications();
/*
!!! Во время добавления PDF надо отметить - Закрепить поле описания
Выводим PDF для скачивания.
Надо ещё отметить в свойствах поля "Выводить поле для описания значения" и будет брать название из названия в библиотеке
*/
$is_list = count( $arResult['PROPERTIES']['PDF']['VALUE'] );
if ( is_array( $arResult['PROPERTIES']['PDF']['VALUE'] ) ) { // Проверяем на наличие в PDF у карточки.
$arResult['PDF_LIST']['TITLE'] = "Файлы для скачивания:"; // Заголовок и размер пока тут. Потом в параметры засунуть.
$h = 'h5'; // Тип заголовка
$arResult['PDF_LIST']['SSL'] = (CMain::IsHTTPS()) ? "https://" : "http://";
$arResult['PDF_LIST']['SITE_SERVER_NAME'] = SITE_SERVER_NAME;
$pdf_icon = '<i class="fa fa-file-pdf-o size" aria-hidden="true"></i> ';
$arResult['PDF_LIST']['ITEMS'] = NULL;
for ($i=0; $i < $is_list; $i++) {
$arResult['PDF_LIST'][$i]['ID'] = $arResult['PROPERTIES']['PDF']['VALUE'][$i];
$arResult['PDF_LIST'][$i]['LINK'] = $arResult['PDF_LIST']['SSL'].$arResult['PDF_LIST']['SITE_SERVER_NAME'] . CFile::GetPath($arResult['PDF_LIST'][$i]['ID']);
$arResult['PDF_LIST'][$i]['DESCRIPTION'] = $arResult['PROPERTIES']['PDF']['DESCRIPTION'][$i];
$arResult['PDF_LIST']['ITEMS'] = $arResult['PDF_LIST']['ITEMS'] . '<li><a href="' . $arResult["PDF_LIST"][$i]["LINK"] . '" target="_blank" download="' . $arResult['PDF_LIST'][$i]['DESCRIPTION'] . ' - ' . $arResult['NAME'] . '">' . $pdf_icon . $arResult['PDF_LIST'][$i]['DESCRIPTION'] . '</a></li>';
}
$arResult['PDF_LIST']['ITEMS'] = '<'.$h.'>' . $arResult['PDF_LIST']['TITLE'] . '</'.$h.'><ul class="pdf_listing">' . $arResult['PDF_LIST']['ITEMS'] . '</ul>';
}else{
$arResult['PDF_LIST'] = NULL;
}
$arResult['PRODUCT_IMG']['SCHEMA'] = $arResult['PROPERTIES']['PRODUCT_SCHEMA'];
$arResult['PRODUCT_IMG']['PACK'] = $arResult['PROPERTIES']['PRODUCT_PACK'];
$arResult['PRODUCT_IMG']['SCHEMA']['SRC'] = CFile::GetPath( $arResult['PRODUCT_IMG']['SCHEMA']['VALUE'] );
$arResult['PRODUCT_IMG']['PACK']['SRC'] = CFile::GetPath( $arResult['PRODUCT_IMG']['PACK']['VALUE'] );
$js_offers = [];
$count_slider = 2;
foreach ( $arResult['JS_OFFERS'] as $key => $value ) {
$js_offers[] = $value['SLIDER'][0]['SRC'];
$arResult['JS_OFFERS'][ $key ]['SLIDER_COUNT'] = $count_slider;
}
$arResult['NEW_SLIDER'] = [
0 => ['ARTICULE' => 'Фото', 'SRC' => $js_offers],
1 => ['SCHEMA' => $arResult['PRODUCT_IMG']['SCHEMA']['NAME'], 'SRC' => CFile::GetPath( $arResult['PRODUCT_IMG']['SCHEMA']['VALUE'] ), 'ID' => $arResult['PRODUCT_IMG']['SCHEMA']['VALUE']],
2 => ['PACK' => $arResult['PRODUCT_IMG']['PACK']['NAME'], 'SRC' => CFile::GetPath( $arResult['PRODUCT_IMG']['PACK']['VALUE']), 'ID' => $arResult['PRODUCT_IMG']['PACK']['VALUE']]
];
// Вторым и третьи можно добавлять
foreach ( $arResult['JS_OFFERS'] as $key => $value ) {
$arResult['JS_OFFERS'][$key]['SLIDER'][1] =
[
'ID' => $arResult['NEW_SLIDER'][1]['ID'],
'SRC' => $arResult['NEW_SLIDER'][1]['SRC'] ,
'WIDTH' => $value[$key]['SLIDER'][0]['WIDTH'] ,
'HEIGHT' => $value[$key]['SLIDER'][0]['HEIGHT']
]; // Схема
$arResult['JS_OFFERS'][$key]['SLIDER'][2] =
[
'ID' => $arResult['NEW_SLIDER'][2]['ID'],
'SRC' => $arResult['NEW_SLIDER'][2]['SRC'] ,
'WIDTH' => $value[$key]['SLIDER'][0]['WIDTH'] ,
'HEIGHT' => $value[$key]['SLIDER'][0]['HEIGHT']
]; // Комплектация
}
$arResult['JS_OFFERS'][0]['SLIDER'][1] = ['ID' => $arResult['NEW_SLIDER'][1]['ID'], 'SRC' => $arResult['NEW_SLIDER'][1]['SRC'] , 'WIDTH' => $arResult['JS_OFFERS'][0]['SLIDER'][0]['WIDTH'] , 'HEIGHT' => $arResult['JS_OFFERS'][0]['SLIDER'][0]['HEIGHT'] ];
$arResult['JS_OFFERS'][0]['SLIDER_COUNT'] = 2;
$arResult['JS_OFFERS'][1]['SLIDER'][1] = ['ID' => $arResult['NEW_SLIDER'][2]['ID'], 'SRC' => $arResult['NEW_SLIDER'][2]['SRC'] , 'WIDTH' => $arResult['JS_OFFERS'][0]['SLIDER'][0]['WIDTH'] , 'HEIGHT' => $arResult['JS_OFFERS'][0]['SLIDER'][0]['HEIGHT'] ];
$arResult['JS_OFFERS'][1]['SLIDER_COUNT'] = 2;
// Добавляем для полной работы слайдера
foreach ( $arResult['OFFERS'] as $key => $value ) {
$arResult['OFFERS'][$key]['MORE_PHOTO'][] = $arResult['JS_OFFERS'][0]['SLIDER'][1];
$arResult['OFFERS'][$key]['MORE_PHOTO'][] = $arResult['JS_OFFERS'][1]['SLIDER'][1];
$arResult['OFFERS'][$key]['MORE_PHOTO_COUNT'] = 2;
}
?>