Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Две картинки для анонса инфоблока

00 голосов
6
Есть необходимость на одну статью инфоблока выводить два анонса с разными картинками. Какими методами можно этого добиться? Как добавить вторую картинку к анонсу?
спросил 13 Окт, 13 от zapekana (180 баллов)

6 Ответы

00 голосов
А хранить картинки в свойствах не выход?
ответил 02 Ноя, 13 от Delp (7,220 баллов)
00 голосов
Ты имеешь ввиду что задавать её адрес в дополнительных полях?
ответил 07 Фев, 14 от zapekana (180 баллов)
00 голосов
Цитата
Миша Рулез пишет:
Ты имеешь ввиду что задавать её адрес в дополнительных полях?

Мы уже на "ты"? smile:)

Создайте в инфоблоке, в котором Вам нужно хранить дополнительные картинки, свойство с типом "файл" (множественное или простое), в настройках файла можете указать допустимые расширения файлов.
Также можно выбрать тип свойства "Привязка к файлу (на сервере)", но в таком случае картинки нужно будет предварительно загружать на сервер.

И конечно же, сами по себе эти картинки не будут выводится в публичной части, нужно будет еще подправить шаблон компонента, которым Вы выводите список статей.

Пробуйте, эксперементируейте, читайте документацию и смотрите примеры.
ответил 28 Май, 14 от Delp (7,220 баллов)
00 голосов
Цитата
S Lee пишет:
Мы уже на "ты"?


Ну извинте. Так хотелось сблизиться духовно, а виновато во всём безличностное предложение в Вашем первом ответе.

Спасибо за совет. А вот вопрос следующий - как заставить компонент bitrix:news.line выводить эти, добавленные таким образом компоненты вместо картинки анонса?

Заранее спасибо.
ответил 24 Сен, 14 от zapekana (180 баллов)
00 голосов
Цитата
Миша Рулез пишет:
А вот вопрос следующий - как заставить компонент bitrix:news.line выводить эти, добавленные таким образом компоненты вместо картинки анонса?


Можно и компонентом bitrix::news.line, но проще будет воспользоваться компонентом bitrix::news.list, т.к. он выбирает свойства элементов.


Опишу для компонента bitrix::news.list, как в его .default-шаблоне заменить вывод картинки анонса на картинки из свойства с типом "Файл". Свойство в инфоблоке желательно создать предварительно.
В примере определимся, что свойство называется "Дополнительные картинки" и имеет код "ADDITIONAL_IMAGES".

Итак, подключите компонент bitrix::news.list, укажите нужные параметры (тип инфоблока, инфоблок и прочее), а также в группе параметров "Шаблон компонента" шаблон ".default", в группе "Дополнительно" поставьте птичку рядом с "Выводить изображение для анонса", ну и в группе параметров "Источник данных" в поле "Свойства" выберите "Дополнительные картинки" (это наше свойство для картинок).
Сохраните.

Переходите в режим "Редактировать сайт", и для добавленного компонента выполните операцию "Копировать шаблон". В появившемся окне в поле "Название нового шаблона компонента" задайте название нового шаблона (латинскими буквами), в поле "Копировать в шаблон сайта" - "текущий". Чекбоксы рядом с "Применить новый шаблон компонента" и "Перейти к редактированию шаблона" должны быть включены.
Сохраните.
Откроется форма редактирования шаблона компонента.

Найдите и замените участок кода:
Код
                <?if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arItem["PREVIEW_PICTURE"])):?>
                        <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["PREVIEW_PICTURE"]["ALT"]?>" title="<?=$arItem["NAME"]?>" style="float:left" /></a>
                <?endif?>


на этот:
Код
                <?if($arParams["DISPLAY_PICTURE"]!="N" && !empty($arItem["DISPLAY_PROPERTIES"]["ADDITIONAL_IMAGES"]["VALUE"])):?>
                <?$arrImages = !is_array($arItem["DISPLAY_PROPERTIES"]["ADDITIONAL_IMAGES"]["VALUE"]) ? array($arItem["DISPLAY_PROPERTIES"]["ADDITIONAL_IMAGES"]["VALUE"]) : $arItem["DISPLAY_PROPERTIES"]["ADDITIONAL_IMAGES"]["VALUE"];
                foreach($arrImages as $imgID) {
                        echo CFile::ShowImage($imgID, 100, 100, 'border="0" style="float:left;" ', $arItem["DETAIL_PAGE_URL"]);
                }
                ?>
                <?endif?>

(здесь используется функция ShowImage(), позволяет масштабировать картинки.
Описание ее здесь http://www.1c-bitrix.ru/help/source/main/help/ru/developer/reference/cfile/showimage.php.html )


или на этот:
Код
                <?if($arParams["DISPLAY_PICTURE"]!="N" && !empty($arItem["DISPLAY_PROPERTIES"]["ADDITIONAL_IMAGES"]["VALUE"])):?>
                <?$arrImages = !is_array($arItem["DISPLAY_PROPERTIES"]["ADDITIONAL_IMAGES"]["VALUE"]) ? array($arItem["DISPLAY_PROPERTIES"]["ADDITIONAL_IMAGES"]["VALUE"]) : $arItem["DISPLAY_PROPERTIES"]["ADDITIONAL_IMAGES"]["VALUE"];
                foreach($arrImages as $imgID) {
                        $arFileData = CFile::GetFileArray($imgID);
                        if((!empty($arFileData["SRC"]))&&(strpos($arFileData["CONTENT_TYPE"], "image")===0)):
                        ?>
                        <a href="<?=$arItem["DETAIL_PAGE_URL"]?>"><img src="<?=$arFileData["SRC"]?>" alt="" width="<?=$arFileData["WIDTH"]?>" height="<?=$arFileData["HEIGHT"]?>" border="0" style="float:left;" /></a>
                        <?
                        endif;
                }
                ?>
                <?en
ответил 28 Янв, 15 от Delp (7,220 баллов)
00 голосов
Цитата
ну и в группе параметров "Источник данных" в поле "Свойства" выберите "Дополнительные картинки" (это наше свойство для картинок).


Там не это не появляется. "Свойства: ничего не выбрано".

В чём может быть глюк, куда копать? Дополнительные свойства создал заранее.
ответил 12 Май, 15 от zapekana (180 баллов)

Похожие вопросы

0 голосов
4 ответов
спросил 01 Фев, 14 от NaSTeNa (100 баллов)
0 голосов
4 ответов
спросил 06 Янв, 14 от Tronik (100 баллов)
0 голосов
4 ответов
0 голосов
2 ответов
спросил 01 Апр, 13 от Frejho (580 баллов)