Пару дней бился над выводом дополнительных фотографии при детальном просмотре новостей, в итоге все получилось.
Использовал комплексный компонент bitrix:news
Добавил множественное свойство MORE_PHOTO. Делал все на примере демо-каталога магазина мебели.
для начала добавляем в index.php пару строк для fancybox, чтобы по клику открывалась картинка в оригинальном размере.
далее в дериктории шаблона компонента создаем файл result_modifier.php
у меня шаблон расположен был тут /bitrix/templates/store_minimal_blue/components/bitrix/news/autonews/bitrix/news.detail/.default
Содержимое result_modifier.php
ну и сам шаблон template.php
лежащий у меня тут: /bitrix/templates/store_minimal_blue/components/bitrix/news/autonews/bitrix/news.detail/.default/
Ну а дальше дело техники, вернее html чтобы разместить полученные фотографии.
Может кому пригодится. Я не программер, так что если где-то что не так пишите, подправлю код.
Использовал комплексный компонент bitrix:news
Добавил множественное свойство MORE_PHOTO. Делал все на примере демо-каталога магазина мебели.
для начала добавляем в index.php пару строк для fancybox, чтобы по клику открывалась картинка в оригинальном размере.
$APPLICATION-> AddHeadString(' <link href="/bitrix/templates/store_minimal_blue/jquery/fancybox/jquery.fancybox-1.3.1.css?1325505607" type="text/css" rel="stylesheet" />',true); $APPLICATION-> AddHeadString(' <script type="text/javascript" src="/bitrix/templates/store_minimal_blue/jquery/fancybox/jquery.fancybox-1.3.1.pack.js?1325505607"></script>',true); |
далее в дериктории шаблона компонента создаем файл result_modifier.php
у меня шаблон расположен был тут /bitrix/templates/store_minimal_blue/components/bitrix/news/autonews/bitrix/news.detail/.default
Содержимое result_modifier.php
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if(is_array($arResult["DETAIL_PICTURE"])) { $arFileTmp = CFile::ResizeImageGet( $arResult['DETAIL_PICTURE'], array("width" => "500", "height" => "300"), BX_RESIZE_IMAGE_PROPORTIONAL, true, $arFilter ); $arResult['DETAIL_PICTURE_350'] = array( 'SRC' => $arFileTmp["src"], 'WIDTH' => $arFileTmp["width"], 'HEIGHT' => $arFileTmp["height"], ); } if (is_array($arResult["DISPLAY_PROPERTIES"]["MORE_PHOTO"]["FILE_VALUE"])) { foreach ($arResult["DISPLAY_PROPERTIES"]["MORE_PHOTO"]["FILE_VALUE"] as $key => $arFile) { $arFileTmp = CFile::ResizeImageGet( $arFile, array("width" => "50", "height" => "50"), BX_RESIZE_IMAGE_PROPORTIONAL, true, $arFilter ); $arFile['PREVIEW_WIDTH'] = $arFileTmp["width"]; $arFile['PREVIEW_HEIGHT'] = $arFileTmp["height"]; $arFile['SRC_PREVIEW'] = $arFileTmp['src']; $arResult['MORE_PHOTO'][$key] = $arFile; } } ?> |
лежащий у меня тут: /bitrix/templates/store_minimal_blue/components/bitrix/news/autonews/bitrix/news.detail/.default/
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <?if (is_array($arResult['DETAIL_PICTURE_350']) || count($arResult["DISPLAY_PROPERTIES"]["MORE_PHOTO"]["FILE_VALUE"])>0):?> <script type="text/javascript"> $(function() { $('div.catalog-detail-image a').fancybox({ 'transitionIn': 'elastic', 'transitionOut': 'elastic', 'speedIn': 600, 'speedOut': 200, 'overlayShow': false, 'cyclic' : true, 'padding': 20, 'titlePosition': 'over', 'onComplete': function() { $("#fancybox-title").css({ 'top': '100%', 'bottom': 'auto' }); } }); }); </script> <?endif;?> <table> <tr> <?if (is_array($arResult['DETAIL_PICTURE_350']) || count($arResult["DISPLAY_PROPERTIES"]["MORE_PHOTO"]["FILE_VALUE"])>0):?> <td class="catalog-detail-image"> <?if (is_array($arResult['DETAIL_PICTURE_350'])):?> <div class="catalog-detail-image" id="catalog-detail-main-image"> <a rel="catalog-detail-images" href="<?=$arResult['DETAIL_PICTURE']['SRC']?>" title="<?=(strlen($arResult["DETAIL_PICTURE"]["DESCRIPTION"]) > 0 ? $arResult["DETAIL_PICTURE"]["DESCRIPTION"] : $arResult["NAME"])?>"><img src="<?=$arResult['DETAIL_PICTURE_350']['SRC']?>" alt="<?=$arResult["NAME"]?>" id="catalog_detail_image" width="<?=$arResult['DETAIL_PICTURE_350']["WIDTH"]?>" height="<?=$arResult['DETAIL_PICTURE_350']["HEIGHT"]?>" /></a> </div> <?endif;?> </td> </tr> <tr> <td> <div class="catalog-detail-images"> <?if(count($arResult["MORE_PHOTO"])>0): foreach($arResult["MORE_PHOTO"] as $PHOTO): ?> <div class="catalog-detail-image"> <a rel="catalog-detail-images" href="<?=$PHOTO["SRC"]?>" title="<?=(strlen($PHOTO["DESCRIPTION"]) > 0 ? $PHOTO["DESCRIPTION"] : $arResult["NAME"])?>"> <img border="0" src="<?=$PHOTO["SRC_PREVIEW"]?>" width="<?=$PHOTO["PREVIEW_WIDTH"]?>" height="<?=$PHOTO["PREVIEW_HEIGHT"]?>" alt="<?=$arResult["NAME"]?>" /></a></div> <? endforeach; endif?> </div> </td> <?endif;?> </tr> </table> <div class="news-item news-detail"> <?/*if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arResult["DETAIL_PICTURE"])):?> <img class="detail_picture" border="0" src="<?=$arResult["DETAIL_PICTURE"]["SRC"]?>" width="<?=$arResult["DETAIL_PICTURE"]["WIDTH"]?>" height="<?=$arResult["DETAIL_PICTURE"]["HEIGHT"]?>" alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" /> <?endif*/?> <?if($arParams["DISPLAY_DATE"]!="N" && $arResult["DISPLAY_ACTIVE_FROM"]):?> <div class="news-date"><?=$arResult["DISPLAY_ACTIVE_FROM"]?></div> <?endif;?> <?if($arParams["DISPLAY_NAME"]!="N" && $arResult["NAME"]):?> <h3><?=$arResult["NAME"]?></h3> <?endif;?> <?if($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arResult["FIELDS"]["PREVIEW_TEXT"]):?> <div class="news-detail"><?=$arResult["FIELDS"]["PREVIEW_TEXT"];unset($arResult["FIELDS"]["PREVIEW_TEXT"]);?></div> <?endif;?> <?if($arResult["NAV_RESULT"]):?> <?if($arParams["DISPLAY_TOP_PAGER"]):?><?=$arResult["NAV_STRING"]?><br /><?endif;?> <?echo $arResult["NAV_TEXT"];?> <?if($arParams["DISPLAY_BOTTOM_PAGER"]):?><br /><?=$arResult["NAV_STRING"]?><?endif;?> <?elseif(strlen($arResult["DETAIL_TEXT"])>0):?> <div class="news-detail"><?echo $arResult["DETAIL_TEXT"];?></div> <?else:?> <div class="news-detail"><?echo $arResult["PREVIEW_TEXT"];?></div> <?endif?> </div> |
Может кому пригодится. Я не программер, так что если где-то что не так пишите, подправлю код.