Меню

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

   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: заметки разработчика

Установка Битрикс24 "Интернет-Магазин + CRM" на один домен и настройка работы почты.

Задача: установить лицензию "Интернет-Магазин + CRM" на один домен. Что бы crm была доступна по адресу crm...

Получить и вывести все цены товара в 1С-Битрикс

Задача: получить и вывести все цены товара по его ID в каталоге 1С-Битрикс (например, в детальной карточке catalog.e...

Кнопка для отправки на печать карточки товара, без лишних данных

Задача: реализовать возможность печати карточки товара, но так что бы в ней не было не нужных данных: шапки и футера сай...

ORM в инфоблоках, получение информации об элементах инфоблока на D7

Задача: собрать полные данные об элементах инфоблока, применяя ORM/D7, который пришел на смену устаревшему CIBlockEleme...

Заполнение множественного пользовательского свойства типа "строка" через API

Задача: когда пользователь заходит в мобильное приложение, нужно сохранить FCM токен устройства в пользовательское поле ...

Композитный сайт на 1С-Битрикс

Для новых клиентов: Все новые проекты будут включать в себя применение технологии "Композитный сайт" - данная услуга уже...

Добавление своих полей в почтовые шаблоны Битрикс

Иногда нужно внести свои поля в почтовые шаблоны битрикс. Например: добавить имя и номер телефона заказчика в почтовый ш...

Изменить размер картинок на лету в битрикс

Встала задачка: на собственном сайте, уменьшить размер превьюшек картинок у анонсов раздела дизайн. Само собой, перезали...

Открытие мобильного приложения Apache Cordova по ссылке

Достаточно часто нужно реализовывать открытие мобильного приложения по ссылке. Например: при отправке ссылки на электоро...