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

Дополнительные картинки в новостях Битрикс, почти фотогалерея.
Данный форум не является официальным и не преследует ни каких целей. Владелец сайта оставляет за собой право удалять, перемещать и закрывать темы и посты по своему усмотрению. Рекламные темы и сообщения только с согласия администратора.

Вход Регистрация
Быстрый вход / регистрация, через социальную сеть
Регистрируясь на форуме, Вы безоговорочно принимаете условия политики конфеденциальности и обработки персональных данных
RSS
Дополнительные картинки в новостях Битрикс, почти фотогалерея.
 
Дополнительные картинки в новостях Битрикс, почти фотогалерея.

Частенько стоит задача, по мимо стандартных "Картинка для анонса" и "Детальная картинка", добавить возможность загрузки изображений в новости Битрикс. Чтобы вывести дополнительные картинки в bitrix:news изначально такой возможности не заложено. Исправим это, а заодно и превратим компоненит "Новости и статьи" в что-то вроде фотогалереи с эффектом fancybox и прокруткой картинок колесиком мышки.
 
Не забудте указать свойство MORE_PHOTO для вывода в детальной новости. Это делается в настройках компонента через публичную часть сайта:
 
Зашел по ссылке с примером, фотографии открываются в новом окне  :(
 
Цитата
Timur пишет:
Зашел по ссылке с примером, фотографии открываются в новом окне
Да, там владелец сайта что-то поломал, сайт не поддерживаю потому не знаю что. Можете вот тут посмотреть http://moto-hit.ru/252/8148/
 
Как с помощью функции CFILE::RESIZEIMAGEGET сделать вывод картинки превью и картинки полной новости ?
 
Цитата
Дмитрий Рунов пишет:
Как с помощью функции CFILE::RESIZEIMAGEGET сделать вывод картинки превью и картинки полной новости ?
Плохо представляю при каких условиях это может понадобиться, но попробуйте вместо t["PROPERTIES"]["MORE_PHOTO"]["VALUE"] указать ['DETAIL_PICTURE']['SRC'] - допускаю что не сработает, если однажды с чем-то таким столкнусь, допишу в записку. Но копать примерно в эту сторону
 
Добрый  день,  не могу найти файл  result_modifier.php
 
Цитата
Александр пишет:
Добрый день, не могу найти файл result_modifier.php
Если его нет-то нужно создать вручную
 
Почему мой вопрос удалили?
 
Цитата
Александр пишет:
Почему мой вопрос удалили?
Удалил по причине плохой постановки вопроса. Данный метод рабочий, реализован и проверен мной на нескольких проектах. Видимо Вы где-то ошибаетесь в реализации. Подсказать я Вам не смогу, так как Вы не дали ни полного описания своей реализации ни более менее подробного описания задачи.
 
Цитата
Михаил Базаров пишет:
Цитата
Александр пишет:
Почему мой вопрос удалили?
Удалил по причине плохой постановки вопроса. Данный метод рабочий, реализован и проверен мной на нескольких проектах. Видимо Вы где-то ошибаетесь в реализации. Подсказать я Вам не смогу, так как Вы не дали ни полного описания своей реализации ни более менее подробного описания задачи.
Согласен, возможно я не правильно спросил, попробую еще,  у меня не получается вывести превьюшку на стр с детальной новостью, выводятся там только ссылки "загрузить", если пройти по нет то открывается на весь экран большое фото, в какую сторону копать?
 
Цитата
Гость сайта пишет:
Дополнительные картинки в новостях Битрикс, почти фотогалерея.
Весь вот этот код:
Код
<? 
// additional photos 
$LINE_ELEMENT_COUNT = 2; // number of elements in a row 
if(count($arResult["MORE_PHOTO"])>0):?> 
<a name="more_photo"></a> 
<?foreach($arResult["MORE_PHOTO"] as $PHOTO):?> 
   <img border="0" src="<?=$PHOTO["SRC"]?>"  />
<?endforeach?> 
<?endif?>  
 
как раз и отвечает за-то чтобы вместо загрузить выводилась картинка превью. Точнее они у вас вместе должны появиться. В итоге удаляете из шаблона news.detail кусочек который выводит "Загрузить" и оставляете только этот.

Рядом с template.php подробной новости создаете файл result_modifier.php с содержимым

Код
<? 
   $arResult["MORE_PHOTO"] = array(); 
   if(isset($arResult["PROPERTIES"]["MORE_PHOTO"]["VALUE"]) && is_array($arResult["PROPERTIES"]["MORE_PHOTO"]["VALUE"])) 
      { 
      foreach($arResult["PROPERTIES"]["MORE_PHOTO"]["VALUE"] as $FILE) 
         { 
            $FILE = CFile::GetFileArray($FILE); 
            if(is_array($FILE)) 
            $arResult["MORE_PHOTO"][]=$FILE; 
         } 
      } 
?>  
 
Само собой если он уже  есть- то просто добавляете это в него.

Вот и все, а фансибокс или что-то другое это уже по вкусу.
 
Цитата
Михаил Базаров пишет:
Цитата
Гость сайта пишет:
Дополнительные картинки в новостях Битрикс, почти фотогалерея.
Весь вот этот код:
Код
 <? 
// additional photos 
$LINE_ELEMENT_COUNT = 2; // number of elements in a row 
if(count($arResult["MORE_PHOTO"])>0):?> 
<a name="more_photo"></a> 
<?foreach($arResult["MORE_PHOTO"] as $PHOTO):?> 
   <img border="0" src="<?=$PHOTO["SRC"]?>"  />
<?endforeach?> 
<?endif?>  
  
как раз и отвечает за-то чтобы вместо загрузить выводилась картинка превью. Точнее они у вас вместе должны появиться. В итоге удаляете из шаблона news.detail кусочек который выводит "Загрузить" и оставляете только этот.

Рядом с template.php подробной новости создаете файл result_modifier.php с содержимым
Код
 <? 
   $arResult["MORE_PHOTO"] = array(); 
   if(isset($arResult["PROPERTIES"]["MORE_PHOTO"]["VALUE"]) && is_array($arResult["PROPERTIES"]["MORE_PHOTO"]["VALUE"])) 
      { 
      foreach($arResult["PROPERTIES"]["MORE_PHOTO"]["VALUE"] as $FILE) 
         { 
            $FILE = CFile::GetFileArray($FILE); 
            if(is_array($FILE)) 
            $arResult["MORE_PHOTO"][]=$FILE; 
         } 
      } 
?>  
  
Само собой если он уже есть- то просто добавляете это в него.

Вот и все, а фансибокс или что-то другое это уже по вкусу.
Большое спасибо за ответ, не внимательно читал инструкцию, и огромное спасибо за ваши видео уроки)
 
Добавляем в news.detail:"код скрипта fancybox"Я правильно понимаю, этот код нужно добавить в файл  template.php?
 
Код
Добавляем в news.detail:"код скрипта fancybox"Я правильно понимаю, этот код нужно добавить в файл template.php?
 
Да, прямо в верстку детальной новости. Не обязательно fancybox - у меня для примера, Более красиво получается hightslide- ом
 
Здравствуйте, спасибо за видеоуроки
У меня вот такой вопрос возник: мне необходимо вывести в списке новостей доп.свойство типа "файл", а точнее картинку (нужно для слайдера новостей), предложенный способ в Вашей статье для детальной новости не работает ( но в шаблоне детальной новости у меня работает). Не подскажете как можно это реализовать?
 
Цитата
Павел пишет:
Здравствуйте, спасибо за видеоуроки
У меня вот такой вопрос возник: мне необходимо вывести в списке новостей доп.свойство типа "файл", а точнее картинку (нужно для слайдера новостей), предложенный способ в Вашей статье для детальной новости не работает ( но в шаблоне детальной новости у меня работает). Не подскажете как можно это реализовать?
Данная инструкция для того и нжна, все работает в ней- только что на одном сайте это проделал
 
то есть данная инструкция подойдёт и для шаблона списка новостей?
 
Да, только вместо $arResult используйте $arItem
 
в Ваших кусках кода поменял $arResult на $arItem, но блин так  чуда и не произошло, свойство назвал также MORE_PHOTO, а картинки так и не появились
 
$arResult на $arItem нужно поменять и в файле шаблона, и в файле result_modifier.php ?
 
Везде
 
Простите, но что-то не выходит
Можно ещё поспрашиваю: вот если по шагам, то взял к примеру шаблон списка новостей, в папке шаблона создал файл result_modifier.php с кодом:
Код
<? 
$arItem["MORE_PHOTO"] = array(); 
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)) 
$arItem["MORE_PHOTO"][]=$FILE; 
} 
} 
?>
 
в файл шаблона добавил код из статьи, приведу весь код шаблона:
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="news-list">
<?if($arParams["DISPLAY_TOP_PAGER"]):?>
   <?=$arResult["NAV_STRING"]?><br />
<?endif;?>
<?foreach($arResult["ITEMS"] as $arItem):?>
   <?
   $this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT"));
   $this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));
   ?>
    
   <div class="news-item" id="<?=$this->GetEditAreaId($arItem['ID']);?>">
      
        <?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 href="<?=$arItem["DETAIL_PAGE_URL"]?>"><img class="preview_picture" border="0" src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>" width="<?=$arItem["PREVIEW_PICTURE"]["WIDTH"]?>" height="<?=$arItem["PREVIEW_PICTURE"]["HEIGHT"]?>" alt="<?=$arItem["NAME"]?>" title="<?=$arItem["NAME"]?>"/></a>
         <?else:?>
            <img class="preview_picture" border="0" src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>" width="<?=$arItem["PREVIEW_PICTURE"]["WIDTH"]?>" height="<?=$arItem["PREVIEW_PICTURE"]["HEIGHT"]?>" alt="<?=$arItem["NAME"]?>" title="<?=$arItem["NAME"]?>" style="float:left" />
         <?endif;?>
      <?endif?>
        
      <?if($arParams["DISPLAY_DATE"]!="N" && $arItem["DISPLAY_ACTIVE_FROM"]):?>
         <span class="news-date-time"><?echo $arItem["DISPLAY_ACTIVE_FROM"]?></span>
      <?endif?>
        
      <?if($arParams["DISPLAY_NAME"]!="N" && $arItem["NAME"]):?>
         <?if(!$arParams["HIDE_LINK_WHEN_NO_DETAIL"] || ($arItem["DETAIL_TEXT"] && $arResult["USER_HAVE_ACCESS"])):?>
            <a href="<?echo $arItem["DETAIL_PAGE_URL"]?>"><b><?echo $arItem["NAME"]?></b></a><br />
         <?else:?>
            <b><?echo $arItem["NAME"]?></b><br />
         <?endif;?>
      <?endif;?>
        
      <?if($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arItem["PREVIEW_TEXT"]):?>
         <p><?echo $arItem["PREVIEW_TEXT"];?></p>
      <?endif;?>
        
      <?if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arItem["PREVIEW_PICTURE"])):?>
         <div style="clear:both"></div>
      <?endif?>
        
<? 
// additional photos 
$LINE_ELEMENT_COUNT = 2; // number of elements in a row 
if(count($arItem["MORE_PHOTO"])>0):?> 
<?foreach($arItem["MORE_PHOTO"] as $PHOTO):?> 
<? $file = CFile::ResizeImageGet($PHOTO, array('width'=>150, 'height'=>'112'), BX_RESIZE_IMAGE_EXACT, true); ?> 
<div class="more_photo"> 
<a href="<?=$PHOTO["SRC"]?>" name="more_photo"> 
<img border="0" src="<?=$file["src"]?>" width="<?=$file["width"]?>" height="<?=$file["height"]?>" 
alt="<?=$arItem["NAME"]?>" title="<?=$arItem["NAME"]?>" /> 
</a> 
</div> 
<?endforeach?> 
<?endif?>

      <?foreach($arItem["FIELDS"] as $code=>$value):?>
         <small>
         <?=GetMessage("IBLOCK_FIELD_".$code)?>:&nbsp;<?=$value;?>
         </small><br />
      <?endforeach;?>
        
      <?foreach($arItem["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
         <small>
         <?=$arProperty["NAME"]?>:&nbsp;
         <?if(is_array($arProperty["DISPLAY_VALUE"])):?>
            <?=implode("&nbsp;/&nbsp;", $arProperty["DISPLAY_VALUE"]);?>
         <?else:?>
            <?=$arProperty["DISPLAY_VALUE"];?>
         <?endif?>
            
         </small><br />
      <?endforeach;?>
        
   </div>
<?endforeach;?>

<?if($arParams["DISPLAY_BOTTOM_PAGER"]):?>
   <br /><?=$arResult["NAV_STRING"]?>
<?endif;?>
</div>
где может быть ошибка может подскажете?
 
Что сделать чтобы при загрузке на сервер картинок дополнительных они сжимались или обрезались (при загрузке).
Просто я загрузил картинки (хорошего качества), штук так 7-8 и новость не открывается её не возможно отредактировать.
Выскакивает ошибка Fatal error: Out of memory (allocated 109051904) (tried to allocate 13824 bytes)

Я думаю, что не хватает ресурсов хостинга. В php.ini мемори лимит стоял 64 метра, сейчас я поставил 128 - но не помогло.

Картинки большие.  
 
Цитата
Дмитрий пишет:
Что сделать чтобы при загрузке на сервер картинок дополнительных они сжимались или обрезались (при загрузке).
...
Воспользуйтесь API функцией CFile::ResizeImage
Более подробно в документации http://dev.1c-bitrix.ru/api_help/main/reference/cfile/resizeimageget.php
 
Отлично работает. Стоило бы чуть внести правки в материал, например там где говорится о внесении изменений в result_modifer.php уточнить, что его может и не быть))

А так, ОЧЕНЬ СПАСИБО ВАМ!!!)))
 
Цитата
Михаил Базаров пишет:
Цитата
Timur пишет:
Зашел по ссылке с примером, фотографии открываются в новом окне
Да, там владелец сайта что-то поломал, сайт не поддерживаю потому не знаю что. Можете вот тут посмотреть http://moto-hit.ru/252/8148/
К сожалению здесь тоже уже не работает, так же как и на сайте врача. Видимо тут какая-нибудь ошибка. Не могли же два заказчика поломать на двух сайтах именно фенси бокс?
 
Цитата
Денис пишет:
Цитата
Михаил Базаров пишет:
Да, там владелец сайта что-то поломал, сайт не поддерживаю потому не знаю что. Можете вот тут посмотреть http://moto-hit.ru/252/8148/
К сожалению здесь тоже уже не работает, так же как и на сайте врача. Видимо тут какая-нибудь ошибка. Не могли же два заказчика поломать на двух сайтах именно фенси бокс?
Что удивительно, как раз таки могут) Каждый заказчик пытается что-то поправить на сайте и делает только хууже. Этот сайт я поддерживаю- можете посмотреть, все отремонтировано ;)
 
Комментарий удален, ввиду... просто не понятно что имелось ввиду
 
Здравствуйте, вывожу дополнительные изображения в подробном описании новости, всё показывается, но титлы (альт)) одинаковые у всех, как сделать чтобы показывал нужное описание (на каждое изображение своё описание добавлять при добавлении картинки) таким образом:

название картинки 1
[изображение]


название картинки 2
[изображение]


Версия 1С-Битрикс: Управление сайтом 11.5.4.


Спасибо.
 
Цитата
Гость сайта пишет:
Здравствуйте, вывожу дополнительные изображения в подробном описании новости, всё показывается, но титлы (альт)) одинаковые у всех, как сделать чтобы показывал нужное описание (на каждое изображение своё описание добавлять при добавлении картинки) таким образом:

Для вывода описания картинки:

Код
<? echo $PHOTO["DESCRIPTION"]?>
 
 
Спасибо за урок. Правда по вашему методу не вышло, сделал проще.


Если просто вывести свойство в шаблоне news.detail/template.php
Код
<? echo $arResult['DISPLAY_PROPERTIES']['PHOTO']['DISPLAY_VALUE'];?> 
то фотку выдаст через ссылку "загрузить". Я подумал, что ссылка должна храниться в массиве и начал его ковырять.


После ковыряний я пришел к выводу, что так оно и есть. Ссылку на картинку можно получить так.
Код
<?=$arResult['DISPLAY_PROPERTIES']['PHOTO']['FILE_VALUE']['SRC']?> 


Ну а вывести саму картинку соответственно
Код
 <img src="<?=$arResult['DISPLAY_PROPERTIES']['PHOTO']['FILE_VALUE']['SRC']?>" alt="">


Дальше встала проблема с ресайзом, решил так
Код
<? $resizePHOTO2 = CFile::ResizeImageGet($arResult['DISPLAY_PROPERTIES']['PHOTO2']['FILE_VALUE'], array('width'=>'100', 'height'=>'100'), BX_RESIZE_IMAGE_EXACT, true); ?>
<img src="<?=$resizePHOTO2['src']?>" alt=""> 


Ну это я разобрал на примере с не множественным свойством. С множественным тоже самое по сути, только с циклами поиграться надо.
 
Код
Добрый день, в детальную все отлично выводится,  возможно ли вывести дополнительные фотографии не в детальном описании а в анонсе. Попробовала вставить result_modifier.php в news.list с кодом 

<? 
$arItem["MORE_PHOTO"] = array(); 
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)) 
$arItem["MORE_PHOTO"][]=$FILE; 
} 
} 
?>  


И туда же в news.list template.php прописала вроде как у вас в примере, сменила только на $arItem и DETAIL_PICTURE на PREVIEW_PICTURE... но ничего не добилась... может это вовсе не возможно?!

<? 
// additional photos 
$LINE_ELEMENT_COUNT = 2; // number of elements in a row 
if(count($arItem["MORE_PHOTO"])>0):?> 
<?foreach($arItem["MORE_PHOTO"] as $PHOTO):?> 
<? $file = CFile::ResizeImageGet($PHOTO, array('width'=>474, 'height'=>'300'), BX_RESIZE_IMAGE_EXACT, true); ?>

<div class="more_photo"> 
 
<a href="<?=$PHOTO["SRC"]?>" name="more_photo"><a rel="example_group" href="<?=$PHOTO["SRC"]?>" name="more_photo"  title="<?=(strlen($arItem["PREVIEW_PICTURE"]["DESCRIPTION"]) > 0 ? $arItem["PREVIEW_PICTURE"]["DESCRIPTION"] : $arItem["NAME"])?>">


<img border="0"  src="<?=$file["src"]?>" width="<?=$file["width"]?>" height="<?=$file["height"]?>" 
alt="<?=$arItem["NAME"]?>" title="<?=$arItem["NAME"]?>" /> 
</a> 

</div>

<?endforeach?> 
<?endif?> 
 
Подскажите пожалуйста, как вывести дополнительные картинки в анонс новости?
 
Цитата
Гость сайта пишет:
Подскажите пожалуйста, как вывести дополнительные картинки в анонс новости?
Все точно так же, просто вместо arItem, arElement
 
Цитата
Михаил Базаров пишет:
Цитата
Гость сайта пишет:
Подскажите пожалуйста, как вывести дополнительные картинки в анонс новости?
Все точно так же, просто вместо arItem, arElement
При смене всех arItem на arElement почему то не выводится(
 
Подскажите пожалуйста, как вывести дополнительные картинки в анонс новости?
Пробовал менял arItem на arElement.

Битрикс только стал изучать может что-то не понимаю?
 
Михаил здравствуйте!
Подскажите пожалуйста,  у меня галерея реализована  по этой схеме. Но  при первом открытии, картинки открывается в новом окне, возвращаешься назад бэкспэйсом, начинает открываться нормально через fancybox, переходишь в другой раздел опять кликаешь по превьюшке, опять открывается одна эта картинка(по которой кликнул), опять бекспейс, вновь кликаешь открывается нормально через fancybox.
 
Цитата
Олег пишет:
Михаил здравствуйте!
Подскажите пожалуйста, у меня галерея реализована по этой схеме. Но при первом открытии, картинки открывается в новом окне, возвращаешься назад бэкспэйсом, начинает открываться нормально через fancybox, переходишь в другой раздел опять кликаешь по превьюшке, опять открывается одна эта картинка(по которой кликнул), опять бекспейс, вновь кликаешь открывается нормально через fancybox.
Скорее всего ошибка в подключении скриптов или кешировании.
 
Михаил, подскажите в каком направлении двигаться. чтобы в списке новостей вывести не доп. фото, а миниатюры фото списка со сменой детальной.  Как тут на риа новости http://ria.ru/photolents/20150507/1061150300.html
 
Цитата
Ярик пишет:
Михаил, подскажите в каком направлении двигаться. чтобы в списке новостей вывести не доп. фото, а миниатюры фото списка со сменой детальной. Как тут на риа новости http://ria.ru/photolents/20150507/1061150300.html
Используйте компонент "Фотагелерея 2.0" , если правильно понял это то что вам нужно
 
Спасибо Михаил. Просто хочу попробовать это сделать на списке новостей, вернее была такая идея, не нравится мне фото галерея Битрикс.
 
Добрый день пытаюсь вывести дополнительные картинки в  в news.list

в файле result_modifier.php
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); 
$arResult["MORE_PHOTO"] = array();   
 
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"][]=$FILE;   
      }   
   } 
endforeach;
 
?>
 
в шаблоне

Код
<? // additional photos 
$LINE_ELEMENT_COUNT = 5; // number of elements in a row  
if(count($arResult["MORE_PHOTO"])>0):?>  
    <?foreach($arResult["MORE_PHOTO"] as $PHOTO):?>  
        <? $file = CFile::ResizeImageGet($PHOTO, array('width'=>100, 'height'=>'100'), BX_RESIZE_IMAGE_EXACT, true); ?>  
            <div class="more_photo">  
                <a href="<?=$PHOTO["SRC"]?>" name="more_photo">  
                    <img class="kk" border="0" src="<?=$file["src"]?>" width="<?=$file["width"]?>" height="<?=$file["height"]?>"   
                        alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" />  
                </a>  
            </div>  
    <?endforeach?>  
<?endif?>
 
то  выводит вот так все картинки  но  не правильно.
 
Цитата
Евгений пишет:
Добрый день пытаюсь вывести дополнительные картинки в в news.list

в файле result_modifier.php
Код
 <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); 
$arResult["MORE_PHOTO"] = array();   
 
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"][]=$FILE;   
      }   
   } 
endforeach;
 
?>
  
в шаблоне
Код
 <? // additional photos 
$LINE_ELEMENT_COUNT = 5; // number of elements in a row  
if(count($arResult["MORE_PHOTO"])>0):?>  
    <?foreach($arResult["MORE_PHOTO"] as $PHOTO):?>  
        <? $file = CFile::ResizeImageGet($PHOTO, array('width'=>100, 'height'=>'100'), BX_RESIZE_IMAGE_EXACT, true); ?>  
            <div class="more_photo">  
                <a href="<?=$PHOTO["SRC"]?>" name="more_photo">  
                    <img class="kk" border="0" src="<?=$file["src"]?>" width="<?=$file["width"]?>" height="<?=$file["height"]?>"   
                        alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" />  
                </a>  
            </div>  
    <?endforeach?>  
<?endif?>
  
то выводит вот так все картинки но не правильно.
Попоробуйте код который вставляете в result_modifier.php вставить прямо в template.php до вызова картинок
 
Цитата
Михаил Базаров пишет:
Цитата
Евгений пишет:
Добрый день пытаюсь вывести дополнительные картинки в в news.list

в файле result_modifier.php
Код
  <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); 
$arResult["MORE_PHOTO"] = array();   
 
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"][]=$FILE;   
      }   
   } 
endforeach;
 
?>
   
в шаблоне
Код
  <? // additional photos 
$LINE_ELEMENT_COUNT = 5; // number of elements in a row  
if(count($arResult["MORE_PHOTO"])>0):?>  
    <?foreach($arResult["MORE_PHOTO"] as $PHOTO):?>  
        <? $file = CFile::ResizeImageGet($PHOTO, array('width'=>100, 'height'=>'100'), BX_RESIZE_IMAGE_EXACT, true); ?>  
            <div class="more_photo">  
                <a href="<?=$PHOTO["SRC"]?>" name="more_photo">  
                    <img class="kk" border="0" src="<?=$file["src"]?>" width="<?=$file["width"]?>" height="<?=$file["height"]?>"   
                        alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" />  
                </a>  
            </div>  
    <?endforeach?>  
<?endif?>
   
то выводит вот так все картинки но не правильно.
Попоробуйте код который вставляете в result_modifier.php вставить прямо в template.php до вызова картинок
код оставить в  result_modifier.php или поместить в шаблон выводит вот так.

http://s017.radikal.ru/i415/1505/78/7890ac6538fe.jpg


хотя у каждого из элементов только по 3 картинки  
 
Если делать так
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); 
$arResult["MORE_PHOTO"] = array();   
 
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;
 
?>
 
то вывод такой http://s001.radikal.ru/i194/1505/cd/35f51f9dc0f1.jpg
 
Спасибо за статью, все работает, как убрать "Загрузить".
 
Есть ли какие-то ограничения со стороны битрикса на количество добалвенных фото к элементу?

Мне почему-то система не дает загрузить более 20 фотографий для 1 новости.
 
Цитата
Капитан пишет:
Есть ли какие-то ограничения со стороны битрикса на количество добалвенных фото к элементу?

Мне почему-то система не дает загрузить более 20 фотографий для 1 новости.
Попоробуйте загрузить 30 по 10 в три захода. У вас наверное ограничение на сервере/хостинге- за раз больше 4-х мегабайта не передать (обычно 4)
 
Привет!
Картинки выводит, но фанкибокс работает только если ты зашел как админ. Стоит разлогинится и картинки открываются в новом окне. Куда копать ?
 
Цитата
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, а картинки так и не появились
Потратил уйму времени как это сделать, в интернете ничего толкового не сказано на эту тему, но нашёл в итоге. В общем выкладываю рецепт таким же чайникам как и я, ну и чтобы знать где искать в след раз самому))

Вывод доп картинок в список новостей

файл 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;
}
} 
 
 
Спасибо огромное, очень помогло!
 
Добрый вечер. Михаил, а как картинки расположить рядом, горизонтально ?
Читают тему (гостей: 1)