Галерея на Друпал (Gallerix, LightBox2)

Существует на сегодня довольно большое количество модулей для создания галереи на друпал,
в том числе и модули для интеграции сторонних галерей.

Gallerix - это довольно небольшая галерейка для создания фотоальбома, но, пожалуй, это ее единственное преимущество.

С этим модулем обычно возникает много проблем,
к счастью, разработчики собираются коренным образом переписать этот модуль.

Тем не менее, по моему мнению, на сегодня лучший и наиболее гибкий способ создания галереи -
это использование полей CCK и views
filefield + imagefield + imagecache + views + lightbox2 (или thickbox)

Однако, если вы уже пользуетесь этой галереей, я опишу сдесь пару вопросов, которые мне пришлось решать.

Добавление дополнительного пресета для превью

В настройках гелереи (/admin/gallerix/general) есть возможность добавить дополнительные размеры для фото.

Однако само добавление не работает. Чтобы исправить, придется изменить файл из модуля: moules/gallerix/managment.inc
строка 201:

$entry['name'] = array(
      '#type' => 'textfield',
      '#size' => 20,
      '#default_value' => $name, // julia changed
      //'#disabled' => $name == 'thumbnail' || $name == 'frame',
);

Добавление lightbox2

На странице альбома Gallerix показывает небольшие превьюшки и болшую фотографию,
которая обновляется аджаксом, но ее размер также задается в настройках гелереи.

А если фотография имеет еще бОльшее разрешение? И хочется чтобы по клику эта большая фотография открывалась
с помощью например, jQuery плагина типа Lighbox2. В самой gallerix нет такой возможности.
Однако мы может ее приделать.

  1. Для начала установить модуль - LightBox2.
  2. Java-script
  3. Теперь в теме нужно добавить javascript файл.
    В .info файле вашей тимы добавляем строчку

    scripts[] = 'js/my.js'

    в самой теме создаем каталог js c файлом my.js,
    в котором пишем:

    $(document).ready(function(){
       $('.gallerix-thumbnail-link').click(function(){
    href = $(this).find('img').attr('src');
    newhref = href.replace(/thumbnail/, 'original');
    $('#gallerix-display a').attr({href: newhref});
      });
    });

     

  4. В теме
  5. В теме, которую вы используете, надо переписать функцию из gallerix,
    которая темизирует страницу альбома.

    В template.php нужно добавить:

    function phptemplate_gallerix_frame($node) {

      $output = '';
      $output .= '<div id="gallerix-loader">' . "\n" ; 
        $output .= '<div id="gallerix-display">' . "\n" ;
         
          $output .= '<a href="/'. $picture->original .'" rel="lightbox" title="'. $picture->caption .'">';
          $output .= theme('image', $source, '', $picture->caption, array('id' => 'gallerix-frame'));
          $output .= '</a>';
         
        $output .= '</div>' . "\n" ;
      $output .= '</div>' . "\n" ;
     
      return $output;
     
    }

      $picture = gallerix_load_picture($node->gallerix['current']);
      $source = $picture->frame;

Вот вобщем то и все, теперь на главной странице альбома,
при клике на большое фото, будет показываться фото еще бОльшего размера
во всю страницу.

Автора автора