Телеграм: @camouf_ru Почта: mihail@bazarow.ru

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

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.


Спасибо.

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.
Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Скопировать номер телефона из поля пользователя в телефон для регистр... Просмотров: 678 Задача, на конкретном сайте: раньше все пользователи регистрировались по стандартному режи... Постраничная навигация в списке разделов Битрикс- catalog.section.lis... Просмотров: 7629 Если в магазине очень много разделов и хочется вывести их с постраничной навигацией: можно... Сортировать товары по названию, цене и дате поступления в каталоге Би... Просмотров: 37636 Достаточно часто заказчик просит вывести сортировку по цене, новым поступлениям и названию... Сниппеты типографики bootstrap, для Битрикс Просмотров: 7040 Если вы подключили bootstrap к своему сайту, или сверстали весь шаблон, подключив bootstra... Глобальные фильтры на всякие случаи жизни Просмотров: 41282 Глобальный фильтр, нужен чаще всего, для вывода определенных элементов, из общего массива... Установить цену товара из свойства инфоблока Просмотров: 7555 На одном из проектов, нужно было единоразово заполнить цены товаров из свойства инфоблока... Установка Битрикс24 "Интернет-Магазин + CRM" на один домен и настройк... Просмотров: 15 Задача: установить лицензию "Интернет-Магазин + CRM" на один домен. Что бы crm была доступ... Звездочки в рейтинге Битрикс статей и новостей Просмотров: 17280 Стандартный вид рейтинга в новостях Битрикс, ну скажем так- не очень красив. Давайте его п... Вывести минимальную и максимальную цену в разделе каталога Битрикс. Просмотров: 1408 Что бы вывести минимальную и максимальную стоимость товаров, из каталога 1С-Битрикс, доста... Помечаем новинки лейблом в каталоге битрикс Просмотров: 19013 Достаточно часто, при разработке каталога товаров или интернет магазина на системе управле... Данные о заказе текущего пользователя Просмотров: 11865 Иногда нужно получить данные о заказе текущего пользователя. Не через компонент, а непосре... Использование WebP изображений в 1С-Битрикс (на Битрикс: Веб окружени... Просмотров: 24039 WebP это современный формат сжатия изображений, который позволяет, при правильных настройк... Почтовое событие на создание нового элемента инфоблока, через API Просмотров: 13001 Иногда при разработке сайта требуется реализовать функционал добавления элементов инфоблок... Автогенерация символьных кодов разделов и элементов Битрикс Просмотров: 13999 Иногда нужно создать символьные коды для разделов и элементов. Например: если сайт создан ... Фиксированная корзина с обновлением, без перезагрузки страницы. Просмотров: 16736 Иногда нужно сделать так, чтобы корзина в интернет магазине, созданном на Битрикс, была по... Установка вебсервера на Apple M1 (нативный ARM стек), оптимизированны... Просмотров: 4744 Появилась задачка, установить стек MAMP (macOS, Apache, MYSQL, PHP) на рабочий ноутбук с п... Заполнить поля пользователя из свойства заказа, на примере ФИО Просмотров: 321 При создании заказа покупатель заполняет поле "ФИО". Необходимо скопировать эти данные в п... Дополнительные картинки в новостях Битрикс, почти фотогалерея. Просмотров: 46471 Частенько стоит задача, по мимо стандартных "Картинка для анонса" и "Деталь... Подключение мобильной версии шаблона Битрикс сайта, с автопереключени... Просмотров: 40828 Предпочитаю, что бы сайт не грузил кучу скриптов и стилей. При загрузке адаптивного шаблон... Вывести свойство отдельно ото всех или исключить из всех Просмотров: 6282 Иногда, на сайте, под управлением 1С-Битрикс, нужно вывести какое-то конкретное свойство о...