[QUOTE]Миша Рулез пишет:
А вот вопрос следующий - как заставить компонент bitrix:news.line выводить эти, добавленные таким образом компоненты вместо картинки анонса? [/QUOTE]
Можно и компонентом bitrix::news.line, но проще будет воспользоваться компонентом bitrix::news.list, т.к. он выбирает свойства элементов.
Опишу для компонента bitrix::news.list, как в его .default-шаблоне заменить вывод картинки анонса на картинки из свойства с типом "Файл". Свойство в инфоблоке желательно создать предварительно.
В примере определимся, что свойство называется "Дополнительные картинки" и имеет код "ADDITIONAL_IMAGES".
Итак, подключите компонент bitrix::news.list, укажите нужные параметры (тип инфоблока, инфоблок и прочее), а также в группе параметров "Шаблон компонента" шаблон ".default", в группе "Дополнительно" поставьте птичку рядом с "Выводить изображение для анонса", ну и в группе параметров "Источник данных" в поле "Свойства" выберите "Дополнительные картинки" (это наше свойство для картинок).
Сохраните.
Переходите в режим "Редактировать сайт", и для добавленного компонента выполните операцию "Копировать шаблон". В появившемся окне в поле "Название нового шаблона компонента" задайте название нового шаблона (латинскими буквами), в поле "Копировать в шаблон сайта" - "текущий". Чекбоксы рядом с "Применить новый шаблон компонента" и "Перейти к редактированию шаблона" должны быть включены.
Сохраните.
Откроется форма редактирования шаблона компонента.
Найдите и замените участок кода:
[CODE]
<?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?>
[/CODE]
на этот:
[CODE]
<?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?>
[/CODE]
(здесь используется функция ShowImage(), позволяет масштабировать картинки.
Описание ее здесь http://www.1c-bitrix.ru/help/source/main/help/ru/developer/reference/cfile/showimage.php.html )
или на этот:
[CODE]
<?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;
}
?>
<?endif?>
[/CODE]
(а здесь "ручной вывод" картинок)
Дальше нужно заменить:
[CODE]
<?if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arItem["PREVIEW_PICTURE"])):?>
<div style="clear:both"></div>
<?endif?>
[/CODE]
на:
[CODE]
<?if($arParams["DISPLAY_PICTURE"]!="N" && !empty($arItem["DISPLAY_PROPERTIES"]["ADDITIONAL_IMAGES"]["VALUE"])):?>
<div style="clear:both"></div>
<?endif?>
[/CODE]
(этот участок можно вообще удалить, если в стиле картинки не будет style="float:left;")
и последнее, что нужно изменить:
[CODE]
<?foreach($arItem["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
<small>
<?=$arProperty["NAME"]?>:
<?if(is_array($arProperty["DISPLAY_VALUE"])):?>
<?=implode(" / ", $arProperty["DISPLAY_VALUE"]);?>
<?else:?>
<?=$arProperty["DISPLAY_VALUE"];?>
<?endif?>
</small><br />
<?endforeach;?>
[/CODE]
на:
[CODE]
<?foreach($arItem["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
<?if($pid!="ADDITIONAL_IMAGES"):?>
<small>
<?=$arProperty["NAME"]?>:
<?if(is_array($arProperty["DISPLAY_VALUE"])):?>
<?=implode(" / ", $arProperty["DISPLAY_VALUE"]);?>
<?else:?>
<?=$arProperty["DISPLAY_VALUE"];?>
<?endif?>
</small><br />
<?endif;?>
<?endforeach;?>
[/CODE]
Сохраните. Все.
В данном примере картинки будут выравниваться по левому краю, а текст анонса их "обтекать".
С наведением дальнейшей "красоты", надеюсь справитесь самостоятельно.