Меню

Дополнительные картинки в новостях Битрикс, почти фотогалерея.

   RSS
[ Закрыто ] Дополнительные картинки в новостях Битрикс, почти фотогалерея.
 
Дополнительные картинки в новостях Битрикс, почти фотогалерея.

Частенько стоит задача, по мимо стандартных "Картинка для анонса" и "Детальная картинка", добавить возможность загрузки изображений в новости Битрикс. Чтобы вывести дополнительные картинки в bitrix:news изначально такой возможности не заложено. Исправим это, а заодно и превратим компоненит "Новости и статьи" в что-то вроде фотогалереи с эффектом fancybox и прокруткой картинок колесиком мышки.
Ответы
 
Цитата
Alex2k пишет:
Привет!
Картинки выводит, но фанкибокс работает только если ты зашел как админ. Стоит разлогинится и картинки открываются в новом окне. Куда копать ?
В правах доступа, кешировании, скриптах- причин много, но это основные
 
Цитата
Михаил Базаров пишет:
Цитата
Alex2k пишет:
Привет!
Картинки выводит, но фанкибокс работает только если ты зашел как админ. Стоит разлогинится и картинки открываются в новом окне. Куда копать ?
В правах доступа, кешировании, скриптах- причин много, но это основные
Спасибо, все заработало.

Подскажи еще один момент, дополнительные фотографии у меня выводятся в столбик, а мне нужно по  горизонтали. Это в коде вывода смотреть ?
http://joxi.ru/5mdn3xPuoNVyA1
 
Цитата
Guest пишет:
Цитата
Михаил Базаров пишет:
Цитата
Alex2k пишет:
Привет!
Картинки выводит, но фанкибокс работает только если ты зашел как админ. Стоит разлогинится и картинки открываются в новом окне. Куда копать ?
В правах доступа, кешировании, скриптах- причин много, но это основные
Спасибо, все заработало.

Подскажи еще один момент, дополнительные фотографии у меня выводятся в столбик, а мне нужно по горизонтали. Это в коде вывода смотреть ?
http://joxi.ru/5mdn3xPuoNVyA1
Да, просто верстка
 
Михаил, в элементе тянет левые доп.фото из resize_cache
src="/upload/resize_cache/obyava/edf/700_700_2/edf80e7e585ee­6d1a070472ee32eead1.jpg"
Не сталкивались с таким? Как избавиться от таких явлений?
 
Цитата
Ярик пишет:
camouf.ru.images.1c-bitrix-cdn.ru/upload/resize_cache/obyava/edf/700_700_2/edf80e7e585ee ­6d1a070472ee32eead1.jpg
Попробуйте отключтьб ускорение CDN сбросить кеш и снова включить- бывает что там, в CDN не сразу картинки обновляются
 
Михаил, как сделать прокрутку уменьшенных фотографий? если, например, больше 20, они выстраиваются в несколько рядов, это не красиво. как сделать, чтоб можно было миниатюры вправо-влево прокручивать?
 
Цитата
Виктория пишет:
Михаил, как сделать прокрутку уменьшенных фотографий? если, например, больше 20, они выстраиваются в несколько рядов, это не красиво. как сделать, чтоб можно было миниатюры вправо-влево прокручивать?
Просто используйте любую карусель
 
Вывел more_photo в catalog.element. И при нажатии на них меняется главная картинка.
Суть вопроса:
Я привязал красотулечку fancybox для детальной картинки, чтобы при нажатии на детальную она увеличивалась. Но суть в чем, когда нажимаем на more_photo то детальная меняется, а при нажатии на детальную открывается первая картинка которая была в самом начале. Не зависимо какая картинка на главной, он открывает первую. Как сделать, чтобы при нажатии на главную, открывалась та картинка которая на детальной?
 
Цитата
Манук написал:
Вывел more_photo в catalog.element. И при нажатии на них меняется главная картинка.
Суть вопроса:
Я привязал красотулечку fancybox для детальной картинки, чтобы при нажатии на детальную она увеличивалась. Но суть в чем, когда нажимаем на more_photo то детальная меняется, а при нажатии на детальную открывается первая картинка которая была в самом начале. Не зависимо какая картинка на главной, он открывает первую. Как сделать, чтобы при нажатии на главную, открывалась та картинка которая на детальной?
Это нужно разбираться в вашей верстке и скриптах, так не подсказать. Проверьте, меняются ли ссылки на картинки вместе с картинками
 
Добрый день.
может не совсем в тему, но прикручивая fancybox захотелось сделать так чтоб при нажатии на картинке в списке новостей открывалась картинка из детального просмотра, а еще лучше из оригинала.
как это сделать? пробовал вместо ссылки на детальный урл вставить DETAIL_PICTURE, но не помогло.
вот часть кода
Код
<?if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arItem["PREVIEW_PICTURE"])):?>
         <?if(!$arParams["HIDE_LINK_WHEN_NO_DETAIL"] || ($arItem["DETAIL_TEXT"] && $arResult["USER_HAVE_ACCESS"])):?>
            <a rel="example_group" href="<?=$arItem["DETAIL_PAGE_URL"]?>"><img
                  class="preview_picture"
                  border="1"
                  src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>"
                  width="<?=$arItem["PREVIEW_PICTURE"]["WIDTH"]?>"
                  height="<?=$arItem["PREVIEW_PICTURE"]["HEIGHT"]?>"
                  alt="<?=$arItem["PREVIEW_PICTURE"]["ALT"]?>"
                  title="<?=$arItem["PREVIEW_PICTURE"]["TITLE"]?>"
                  style="float:left"
                  /></a>
спасибо за ваши видео и статьи, очень много полезного, особенно для новичка как я
 
Цитата
Максим написал:
Добрый день.
может не совсем в тему, но прикручивая fancybox захотелось сделать так чтоб при нажатии на картинке в списке новостей открывалась картинка из детального просмотра, а еще лучше из оригинала.
как это сделать? пробовал вместо ссылки на детальный урл вставить DETAIL_PICTURE, но не помогло.
вот часть кода
Код
 <?if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arItem["PREVIEW_PICTURE"])):?>
         <?if(!$arParams["HIDE_LINK_WHEN_NO_DETAIL"] || ($arItem["DETAIL_TEXT"] && $arResult["USER_HAVE_ACCESS"])):?>
            <a rel="example_group" href="<?=$arItem["DETAIL_PAGE_URL"]?>"><img
                  class="preview_picture"
                  border="1"
                  src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>"
                  width="<?=$arItem["PREVIEW_PICTURE"]["WIDTH"]?>"
                  height="<?=$arItem["PREVIEW_PICTURE"]["HEIGHT"]?>"
                  alt="<?=$arItem["PREVIEW_PICTURE"]["ALT"]?>"
                  title="<?=$arItem["PREVIEW_PICTURE"]["TITLE"]?>"
                  style="float:left"
                  /></a> 
спасибо за ваши видео и статьи, очень много полезного, особенно для новичка как я
Все сделали правильно, только еще в настройках компонента, в секции вывода списка новостей, нужно выбрать вывод детальной картинки
 
Цитата
Михаил Базаров пишет:
ции в
все равно что-то не получается
делаю так
Код
      <?if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arItem["PREVIEW_PICTURE"])):?>
         <?if(!$arParams["HIDE_LINK_WHEN_NO_DETAIL"] || ($arItem["DETAIL_TEXT"] && $arResult["USER_HAVE_ACCESS"])):?>
            <a rel="example_group" href="<?=$arItem["DETAIL_PICTURE"]?>"><img
                  class="preview_picture"
                  border="1"
                  src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>"
                  width="<?=$arItem["PREVIEW_PICTURE"]["WIDTH"]?>"
                  height="<?=$arItem["PREVIEW_PICTURE"]["HEIGHT"]?>"
                  alt="<?=$arItem["PREVIEW_PICTURE"]["ALT"]?>"
                  title="<?=$arItem["PREVIEW_PICTURE"]["TITLE"]?>"
                  style="float:left"
                  /></a>
 
и в настройках компонента выбрал вывод детальной картинки
в итоге ссылка теперь такая
Код
<a rel="example_group" href="Array"></a>
 
чего не хватает? Кроме мозгов  :)
[img]C:\Users\MaxdediaDV\Desktop\123.jpg[/img]
 
Цитата
Максим написал:
<?=$arItem["DETAIL_PICTURE"]['SRC']?>
 
Огромное спасибо!
все заработало. главное до этого пробовал так, но тогда в настройках компонента не ковырялся.
 
Добрый день!
Спасибо Вам большое за ваши труды!!!

Если не трудно, подскажите пожалуйста в какую сторону копать! :)

Не отображаются фотографии торговых предложений на странице карточки товара. В инфоблоке торговых предложений прописаны свойства для фото, множественность и задан код "MORE_PHOTO"
Если перенести это свойство в инфоблок каталога товаров, то фотографии выводятся
 
Цитата
Станки ЧПУ написал:
Добрый день!
Спасибо Вам большое за ваши труды!!!

Если не трудно, подскажите пожалуйста в какую сторону копать!  

Не отображаются фотографии торговых предложений на странице карточки товара. В инфоблоке торговых предложений прописаны свойства для фото, множественность и задан код "MORE_PHOTO"
Если перенести это свойство в инфоблок каталога товаров, то фотографии выводятся
Все точно также, только поля торговых предложений хранятся в $arOffer
 
Михаил, добрый день! Спасибо за статью и вообще за просвещение начинающих разработчиков!

Везде где натыкался на подобный способ вывода "галереи" и даже в стандартном шаблоне каталога "board" у ссылки <a href="<?=$PHOTO["SRC"]?>" name="more_photo"> есть параметр name="more_photo". Зачем он? Как он влияет на работу данного способа?
 
Цитата
Артём написал:
Спасибо за статью, все работает, как убрать "Загрузить".
https://camouf.ru/club/user/1/blog/48/
 
Цитата
Владимир Бусов написал:
Михаил, добрый день! Спасибо за статью и вообще за просвещение начинающих разработчиков!

Везде где натыкался на подобный способ вывода "галереи" и даже в стандартном шаблоне каталога "board" у ссылки <a href="<?=$PHOTO["SRC"]?>" name="more_photo"> есть параметр name="more_photo". Зачем он? Как он влияет на работу данного способа?
Это просто якорь, ели не ошибаюсь толи прокручивает к большой картинке, то ли просто увеличивает картинку. Короче не нужен
 
Цитата
Михаил Базаров пишет:
Не забудте указать свойство MORE_PHOTO для вывода в детальной новости. Это делается в настройках компонента через публичную часть сайта:
Михаил, а можете подсказать каким образом можно детальное описание товара отобразить в списке товаров. Вставлял код <?=$arResult["DETAIL_TEXT"]?>. Но это не помогает
 
Цитата
Алексей Микрюков написал:
Цитата
Михаил Базаров  пишет:
Не забудте указать свойство MORE_PHOTO для вывода в детальной новости. Это делается в настройках компонента через публичную часть сайта:
Михаил, а можете подсказать каким образом можно детальное описание товара отобразить в списке товаров. Вставлял код <?=$arResult["DETAIL_TEXT"]?>. Но это не помогает
<?=$arElement["DETAIL_TEXT"]?>
 
Цитата
Алексей Микрюков пишет:
Цитата
Михаил Базаров пишет:
Не забудте указать свойство MORE_PHOTO для вывода в детальной новости. Это делается в настройках компонента через публичную часть сайта:
Михаил, а можете подсказать каким образом можно детальное описание товара отобразить в списке товаров. Вставлял код <?=$arResult["DETAIL_TEXT"]?>. Но это не помогает
Додумал сам надо было вместе arResult прописать arItem
 
Добрый день, подскажите как реализовать в шаблоне news? в шаблоне news.detail все норм работает. но вот хочу сделать чпу используя комплексный компонент news и не пойму почему не работает. Файл подключается к NEWS. а не к шаблону детального описания. в массиве фото есть.
 
Цитата
Александр Сигида пишет:
Добрый день, подскажите как реализовать в шаблоне news? в шаблоне news.detail все норм работает. но вот хочу сделать чпу используя комплексный компонент news и не пойму почему не работает. Файл подключается к NEWS. а не к шаблону детального описания. в массиве фото есть.
Все решилось легко. Не туда копировал файл ))
 
Цитата
Михаил Базаров пишет:
Да, только вместо $arResult используйте $arItem
Цитата
Павел пишет:
в Ваших кусках кода поменял $arResult на $arItem, но блин так чуда и не произошло, свойство назвал также MORE_PHOTO, а картинки так и не появились
Потратил уйму времени как это сделать, в интернете ничего толкового не сказано на эту тему, но нашёл в итоге. В общем выкладываю рецепт таким же чайникам как и я, ну и чтобы знать где искать в след раз самому))

[SIZE=5]Вывод доп картинок в список новостей[/SIZE]

файл result_modifier:
Код
<?
 foreach($arResult["ITEMS"] as $arItem):
 if(isset($arItem["PROPERTIES"]["MORE_PHOTO"]["VALUE"]) && is_array($arItem["PROPERTIES"]["MORE_PHOTO"]["VALUE"]))
 {
 foreach($arItem["PROPERTIES"]["MORE_PHOTO"]["VALUE"] as $FILE)
 {
 $FILE = CFile::GetFileArray($FILE);
 if(is_array($FILE))
 $arResult["MORE_PHOTO"][$arItem["ID"]][]=$FILE;
 }
 }
 endforeach;
?> 
файл template.php
Код
<div class="more_photo_box">
<?if(count($arResult["MORE_PHOTO"][$arItem["ID"]])>0):?>
<?foreach($arResult["MORE_PHOTO"][$arItem["ID"]] as $PHOTO):?>
<? $more_file = CFile::ResizeImageGet($PHOTO, array('width'=>150, 'height'=>'112'), BX_RESIZE_IMAGE_EXACT, true); ?>
<img border="0" src="<?=$more_file["src"]?>" width="<?=$more_file["WIDTH"]?>" height="<?=$more_file["HEIGHT"]?>"
 alt="<?=$arItem["NAME"]?>" title="<?=$arItem["NAME"]?>" /><br />
<?endforeach?>
<?endif?>
</div> 

спасибки мне  :D
 
Здравствуйте! Спасибо за обучение.
Подскажите, как сделать, чтобы одна картинка из фотогалереи (например, первая) в списке новостей стала превьюшкой? Конечно, можно воспользоваться PREVIEW_PICTURE, но это нужно ее отдельно грузить. А как реализовать в этом решении?
 
Цитата
Константин Нечаев написал:
Здравствуйте! Спасибо за обучение.
Подскажите, как сделать, чтобы одна картинка из фотогалереи (например, первая) в списке новостей стала превьюшкой? Конечно, можно воспользоваться PREVIEW_PICTURE, но это нужно ее отдельно грузить. А как реализовать в этом решении?
Из быстрого: Вывести еще один foreach с картинками и сделать ему break
Примерно так
Код
<?
if(count($arResult["MORE_PHOTO"])>0):
?> 
   <?foreach($arResult["MORE_PHOTO"] as $PHOTO):?>  
       <img border="0" src="<?=$PHOTO["SRC"]?>" />  
   <?break;endforeach?> 
<?endif?>  
 
Цитата
В итоге удаляете из шаблона news.detail кусочек который выводит "Загрузить"
Михаил а можно поподробнее где находится этот самый кусочек, в каком файле и как он выглядит, все сделал по уроку все получилось, но ссылки загрузить на каждую фотографию остались, как их удалить?
 
Цитата
Денис пишет:
Цитата
В итоге удаляете из шаблона news.detail кусочек который выводит "Загрузить"
Михаил а можно поподробнее где находится этот самый кусочек, в каком файле и как он выглядит, все сделал по уроку все получилось, но ссылки загрузить на каждую фотографию остались, как их удалить?
Извиняюсь за беспокойство, разобрался!
 
Михаил, спасибо за урок! Никак не могу убрать: Загрузить внизу детальной новости. Где все-таки искать этот кусок кода?
 
Спасибо, не нужно разобрался
 
Цитата
Alex2k написал:
Привет!
Картинки выводит, но фанкибокс работает только если ты зашел как админ. Стоит разлогинится и картинки открываются в новом окне. Куда копать ?
В сторону подключения jqery видимо не подключили. Когда админом, подключается системный jqery- для работы панели
 
Добрый день. Вывожу доп. картинки в элемента каталога по вашему методу. Все отлично работает, включая красотульку, кроме CFile::ResizeImageGet. Картинки не уменьшаются - какими загружены, такими и выводятся, таками и остаются при всплывании. Что не так?
 
Еще вопрос:
Сама галерея работает, но когда нажимаешь на стрелки навигации - почему-то сначала 2 раза перемаргивает таже самая картинка и только на 3- раз ее сменяет следующая. Использовала два разных скрипта из разных источников - результат тот же самый.

Ссылка на страницу (в самом низу):
http://likeprint.ru/katalog/1/listovki
 
Добрый день!
Прочитал Вашу заметку https://camouf.ru/club/user/1/blog/48/# но так и не понял как убрать ссылки загрузить. Можете более подробно рассказать куда следует вставить код?
Спасибо!
 
Делаю всё до пункта CFile::ResizeImageGet
Вроде бы слишком просто, чтобы напортачить . Но. Не выводится эта дополнительная картинка. Как будто бы ничего не сделал.
В папке news.detail/.default файл result_modifier.php есть. Полностью с вашим кодом.
В файл template.php просто в конец скопировал ваш код.
В инфоблоке свойство прописано правильно.
В чём может быть проблема?
 
Цитата
Валерий Курейчик написал:
Делаю всё до пункта CFile::ResizeImageGet
Вроде бы слишком просто, чтобы напортачить . Но. Не выводится эта дополнительная картинка. Как будто бы ничего не сделал.
В папке news.detail/.default файл result_modifier.php есть. Полностью с вашим кодом.
В файл template.php просто в конец скопировал ваш код.
В инфоблоке свойство прописано правильно.
В чём может быть проблема?
Может быть не указали в настройках компонента, что нужно это свойство MORE_PHOTO выводить
 
Тоже хороший способ. без result_modifier.php
только как прикрутить сюда ресайз


Код
<?if(count($arResult['PROPERTIES']['MORE_PHOTO']['VALUE']) > 0 && intval($arResult['PROPERTIES']['MORE_PHOTO']['VALUE']) > 0):?>
   <?if(count($arResult['PROPERTIES']['MORE_PHOTO']['VALUE']) > 4):?>
      <div class="owl-carousel owl-theme">


               <?foreach($arResult['PROPERTIES']['MORE_PHOTO']['VALUE'] as $num=>$arItems):?>
                  <?$img_href = CFile::GetPath($arItems);?>
                  <a href="<?=$img_href?>" class="item" data-lightbox="example-set"><img src="<?=$img_href?>" class="img-responsive" alt="фото <?=$arResult['PROPERTIES']['MORE_PHOTO']['DESCRIPTION'][$num]?>"/></a>
               <?endforeach;?>


      </div>
   <?else:?>
      <div class="owl-carousel owl-theme">

            <?foreach($arResult['PROPERTIES']['MORE_PHOTO']['VALUE'] as $num=>$arItems):?>
               <?$img_href = CFile::GetPath($arItems);?>
               <a href="<?=$img_href?>" class="item"  data-lightbox="example-set"><img src="<?=$img_href?>" class="img-responsive" alt="фото <?=$arResult['PROPERTIES']['MORE_PHOTO']['DESCRIPTION'][$num]?>" /></a>
            <?endforeach;?>

      </div>
   <?endif;?>
<?endif;?>
 
 
и как отресайзить все загружаемые фото сразу при загрузке в инфоблок ?
нашел вот такой способ

Код
<? // События которые срабатывают при создании или изменении элемента инфоблока AddEventHandler("iblock", "OnAfterIBlockElementAdd", "ResizeUploadedPhoto"); AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "ResizeUploadedPhoto"); function ResizeUploadedPhoto($arFields) { global $APPLICATION; CModule::IncludeModule('iblock'); $IBLOCK_ID = 6; // ID инфоблока свойство которых нуждается в масштабировании $PROPERTY_CODE = "FOTO"; // код свойства $imageMaxWidth = 1000; // Максимальная ширина картинки $imageMaxHeight = 800; // Максимальная высота картинки // для начала убедимся, что изменяется элемент нужного нам инфоблока if($arFields["IBLOCK_ID"] == $IBLOCK_ID) {    $VALUES = $VALUES_OLD = array();    //Получаем свойство значение сво-ва $PROPERTY_CODE    $res = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], "sort", "asc", array("CODE" => $PROPERTY_CODE));    while ($ob = $res->GetNext()) {       $file_path = CFile::GetPath($ob['VALUE']); // Получаем путь к файлу       if($file_path) {          $imsize = getimagesize($_SERVER["DOCUMENT_ROOT"].$file_path); //Узнаём размер файла          // Если размер больше установленного максимума          if($imsize[0] > $imageMaxWidth or $imsize[1] > $imageMaxHeight) {             // Уменьшаем размер картинки             $file = CFile::ResizeImageGet($ob['VALUE'], array(                   'width'=>$imageMaxWidth,                   'height'=>$imageMaxHeight                ), BX_RESIZE_IMAGE_PROPORTIONAL, true);             // добавляем в массив VALUES новую уменьшенную картинку             $VALUES[] = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$file["src"]);          } else {             // добавляем в массив VALUES старую картинку             $VALUES[] = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$file_path);          }          // Собираем в массив ID старых файлов для их удаления (чтобы не занимали место)          $VALUES_OLD[] = $ob['VALUE'];       }    }    // Если в массиве есть информация о новых файлах    if(count($VALUES) > 0) {       $PROPERTY_VALUE = $VALUES; // значение свойства       // Установим новое значение для данного свойства данного элемента       CIBlockElement::SetPropertyValuesEx($arFields["ID"], $arFields["IBLOCK_ID"], array($PROPERTY_CODE => $PROPERTY_VALUE));       // Удаляем старые большие изображения       foreach ($VALUES_OLD as $key=>$val) {          CFile::Delete($val);       }    }    unset($VALUES);    unset($VALUES_OLD); } } ?>
 

как бы грамотнее настроить его для обработки нескольких инфоблоков
 
Код
<?
// События которые срабатывают при создании или изменении элемента инфоблока
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "ResizeUploadedPhoto";
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "ResizeUploadedPhoto";

function ResizeUploadedPhoto($arFields) {
  global $APPLICATION;
  CModule::IncludeModule('iblock');
  $IBLOCK_ID = 6; // ID инфоблока свойство которых нуждается в масштабировании
  $PROPERTY_CODE = "FOTO";  // код свойства
  $imageMaxWidth = 1000; // Максимальная ширина картинки
  $imageMaxHeight = 800; // Максимальная высота картинки
  // для начала убедимся, что изменяется элемент нужного нам инфоблока
  if($arFields["IBLOCK_ID"] == $IBLOCK_ID) {
   $VALUES = $VALUES_OLD = array();
   //Получаем свойство значение сво-ва $PROPERTY_CODE
   $res = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], "sort", "asc", array("CODE" => $PROPERTY_CODE));
   while ($ob = $res->GetNext()) {
      $file_path = CFile::GetPath($ob['VALUE'] // Получаем путь к файлу
      if($file_path) {
         $imsize = getimagesize($_SERVER["DOCUMENT_ROOT"].$file_path); //Узнаём размер файла
         // Если размер больше установленного максимума
         if($imsize[0] > $imageMaxWidth or $imsize[1] > $imageMaxHeight) {
            // Уменьшаем размер картинки
            $file = CFile::ResizeImageGet($ob['VALUE'], array(
                  'width'=>$imageMaxWidth,
                  'height'=>$imageMaxHeight
               , BX_RESIZE_IMAGE_PROPORTIONAL, true);
            // добавляем в массив VALUES новую уменьшенную картинку
            $VALUES[] = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$file["src"]
         } else {
            // добавляем в массив VALUES старую картинку
            $VALUES[] = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$file_path);
         }
         // Собираем в массив ID старых файлов для их удаления (чтобы не занимали место)
         $VALUES_OLD[] = $ob['VALUE']; 
      }
   }
   // Если в массиве есть информация о новых файлах
   if(count($VALUES) > 0) {
      $PROPERTY_VALUE = $VALUES;  // значение свойства
      // Установим новое значение для данного свойства данного элемента
      CIBlockElement::SetPropertyValuesEx($arFields["ID"], $arFields["IBLOCK_ID"], array($PROPERTY_CODE => $PROPERTY_VALUE));
      // Удаляем старые большие изображения
      foreach ($VALUES_OLD as $key=>$val) {
         CFile:elete($val);
      }
   }
   unset($VALUES);
   unset($VALUES_OLD);
  }
}
?>
 
Решил вопрос


Код
<?
// События которые срабатывают при создании или изменении элемента инфоблока
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "ResizeUploadedPhoto");
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "ResizeUploadedPhoto");

function ResizeUploadedPhoto($arFields) {
  global $APPLICATION;
  CModule::IncludeModule('iblock');
  $IBLOCK_ID = 32; // ID инфоблока свойство которых нуждается в масштабировании
  $PROPERTY_CODE = "MORE_PHOTO";  // код свойства
  $imageMaxWidth = 1280; // Максимальная ширина картинки
  $imageMaxHeight = 720; // Максимальная высота картинки
  
  // для начала убедимся, что изменяется элемент нужного нам инфоблока (в данном случае нескольких инфоблоков)

  if(($arFields["IBLOCK_ID"] == 32) || ($arFields["IBLOCK_ID"] == 31) || ($arFields["IBLOCK_ID"] == 17)) { 
   $VALUES = $VALUES_OLD = array();
   //Получаем свойство значение сво-ва $PROPERTY_CODE
   $res = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], "sort", "asc", array("CODE" => $PROPERTY_CODE));
   while ($ob = $res->GetNext()) {
      $file_path = CFile::GetPath($ob['VALUE']); // Получаем путь к файлу
      if($file_path) {
         $imsize = getimagesize($_SERVER["DOCUMENT_ROOT"].$file_path); //Узнаём размер файла
         // Если размер больше установленного максимума
         if($imsize[0] > $imageMaxWidth or $imsize[1] > $imageMaxHeight) {
            // Уменьшаем размер картинки
            $file = CFile::ResizeImageGet($ob['VALUE'], array(
                  'width'=>$imageMaxWidth,
                  'height'=>$imageMaxHeight
               ), BX_RESIZE_IMAGE_PROPORTIONAL, true);
            // добавляем в массив VALUES новую уменьшенную картинку
            $VALUES[] = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$file["src"]);
         } else {
            // добавляем в массив VALUES старую картинку
            $VALUES[] = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$file_path);
         }
         // Собираем в массив ID старых файлов для их удаления (чтобы не занимали место)
         $VALUES_OLD[] = $ob['VALUE']; 
      }
   }
   // Если в массиве есть информация о новых файлах
   if(count($VALUES) > 0) {
      $PROPERTY_VALUE = $VALUES;  // значение свойства
      // Установим новое значение для данного свойства данного элемента
      CIBlockElement::SetPropertyValuesEx($arFields["ID"], $arFields["IBLOCK_ID"], array($PROPERTY_CODE => $PROPERTY_VALUE));
      // Удаляем старые большие изображения
      foreach ($VALUES_OLD as $key=>$val) {
         CFile::Delete($val);
      }
   }
   unset($VALUES);
   unset($VALUES_OLD);
  }
}
?>
 
 
Михаил, добрый день! У меня есть календарь лента с событиями, и  мне нужно что бы там выводились фотографии я делала все как в вашем видео, но у меня недоступны параметры в компоненте календарь, и естественно  я не могу в настройках детального просмотра выбирать свойства. Мне подсказали, что в файле result_modifier.php можно подключить это свойство, но это не работает.

вот что я пишу в result_modifier.php


Код
$GALLERY_ID = '57';
$VALUES = array();
    $res = CIBlockElement::GetProperty($IBLOCKS['15'], $GALLERY_ID, "sort", "asc", array("CODE" => "GALLERY"));
    while ($ob = $res->GetNext())
    {
        $VALUES[] = $ob['VALUE'];
    }



$arResult["GALLERY"] = array();
if(isset($arResult["PROPERTIES"]["GALLERY"]["VALUE"]) && is_array($arResult["PROPERTIES"]["GALLERY"]["VALUE"]))
{
foreach($arResult["PROPERTIES"]["GALLERY"]["VALUE"] as $FILE)
{
$FILE = CFile::GetFileArray($FILE);
if(is_array($FILE))
$arResult["GALLERY"][]=$FILE;
}
} 
 
 
Спасибо огромное, очень помогло!
 
Добрый вечер. Михаил, а как картинки расположить рядом, горизонтально ?
Читают тему

Блог-note: заметки разработчика

Прямое открытие мессенджеров по ссылке из приложения Apache Cordova

Задача: При клике по ссылкам на Telegram и WhatsApp в мобильном приложении необходимо сразу открывать мессенджеры без пр...

Самодельная форма добавления элемента на API Битрикс

Компонент iblock.element.add.form написан таким образом, что вы не сможете (не попотев изрядно и не используя js) как уг...

Дополнительные параметры в меню Битрикс

Иногда нужно присвоить какой-то функционал к конкретному пункту меню в битрикс. Например открывать ссылку в новом окне и...

Получить список элементов инфоблока с ценами с помощью D7

Задача: использовать D7 в 1С-Битрикс для получения списка элементов инфоблока вместе с их ценами. Это может быть полезно...

Добавление в избранное или отложенные, на AJAX из карточки товара

В этой заметке рассакажу как добавлять товары в "Отложенные", для иммитации функционала "Избранное". Для этого будем исп...

Умный фильтр на главной странице Битрикс

Редкая но востребованная задачка- это вывести компонент "умный фильтр" на главную страницу магазина на Битрикс. При этом...

Показать пользователю накопительную скидку за все сделанные заказы, из модуля маркетинга

Задача: показать, текущему авторизованному, пользователю сумму всех выполненных заказов и процент накопительной скидки- ...

Глобальные фильтры на всякие случаи жизни

Глобальный фильтр, нужен чаще всего, для вывода определенных элементов, из общего массива, инфорблока. Спектр применяем...

E-mail вместо логина при регистрации и оформлении заказа в 1C-Битрикс

Задача: при регистрации нового пользователя и оформлении заказа нужно убрать поле Логин и использовать электронную почту...