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

Возможно ли такое на Битриксе?

00 голосов
2
Пользуюсь пакетом Старт
Есть стандартная фотогаллерея с фотоальбомами.
Я хочу сделать так, чтобы на странице превью изображений были также ссылки на увеличенные версии или на путь к оригиналам фоток.
чтобы когда пользователь заходил в фотоальбом, ему были доступны фотографии как превью так и детального просмотра или фотографии оригинала.

Это нужно чтобы поставить фотогаллерею такого типа http://leandrovieira.com/projects/jquery/lightbox/

Вопрос в том, возможно ли это.
Если возможно, то подскажите пожалуйста, как мне это реализовать.
(З.Ы. я программирую, но с битриксом пока разбираюсь.)
спросил 12 Апр, 14 от Charlize (100 баллов)

2 Ответы

00 голосов
Может это можно реализовать если, например, каким-нибудь образом узнать путь к оригиналу изображения по ELEMENT_ID?
ответил 09 Ноя, 14 от Charlize (100 баллов)
00 голосов
Это одна и самых простых задач в битриксе и имеет кучу вариаций решения.

Собственно суть заключается в том что бы в шаблоне формируете такую структуру как
Код
<a href="#ПОДРОБНАЯ_КАРТИНКА#" class="lightBox" title="#ПОДПИСЬ_К_КАРТИНКЕ#">
  <img src="#КРАТКАЯ_КАРТИНКА#"/>
</a>

Варианты организации:
Вар. 1. Формируете например на базе элементов инфоблоков, где элементы являются единицей галереи - фотография, а разделы - альбомы. В настройках инфоблока настраиваете автоматическую генерацию кратких картинок. Ну и правите шаблон под нужный вид.

Вар. 2. Элемент инфоблока является альбомом, тогда нужно создать доп свойство множественного типа файл. При этом в шаблоне нужно генерировать маленькую картинку и кешировать

В зависимости от используемого компонента массив для перебора бывает разный, но таки дам пример "result_modifier.php" файла для шаблона раздела:
Код
foreach ($arResult['ITEMS'] as $itemkey => $arElement)
{
   foreach ($arElement['DISPLAY_PROPERTIES']['PHOTOS'] as $imagekey => $arFile)
   {
      $arFileTmp = CFile::ResizeImageGet(
         $arFile,
         array("width" => 70, "height" => 70),
         BX_RESIZE_IMAGE_PROPORTIONAL,
         true
      );

      $arFile['PREVIEW_WIDTH'] = $arFileTmp["width"];
      $arFile['PREVIEW_HEIGHT'] = $arFileTmp["height"];
      $arFile['SRC_PREVIEW'] = $arFileTmp['src'];
      $arResult[$itemkey]['DISPLAY_PROPERTIES']['PHOTOS'][$imagekey] = $arFile;
   }
}
?>

где PHOTOS есть код вашего свойства
(Код только для примера механизма ресайза в шаблоне с кешированием и тупым копипастом врятли заработает(да включаем мозги :) ))

Вар 3. Организация галереи любым способом из варианта 1 и 2 но не нужна краткая картинка.

Код
<a href="#ПОДРОБНАЯ_КАРТИНКА#" class="lightBox" title="#ПОДПИСЬ_К_КАРТИНКЕ#">
  <img src="#ПОДРОБНАЯ_КАРТИНКА#" width="70"/>
</a>

Просто задаем размеры маленькой картинки в верстке или в стилях, а браузер уже отобразить маленькую картинку. В данном варианте минус в том что для того что бы увидеть маленькую картинку нужно скачать подробную тяжелую. На странице альбома это может занимать время. И еще браузер может не очень красиво отображать подобное масштабирование. (такой вариант не рекомендуемый)

Ну и что то типа такого для подвязки js:
Код
$(function() {
   $('a.lightBox').lightBox();
});


Я лично предпочитаю fancybox и highslide для lightBox эффектов.

Кстате точно не скажу но в типовой конфигурации(в шаблонах поставляемых в дистрибутивах) вроде уже есть этот эффект анимации с fancybox. Хотя бы как пример для переделки под свой дизайн.
ответил 07 Март, 15 от Niola (360 баллов)

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

0 голосов
3 ответов
спросил 13 Фев, 14 от katena (280 баллов)
0 голосов
3 ответов
0 голосов
2 ответов
спросил 08 Апр, 14 от EDKA (980 баллов)