На моем фото блоге установлен WordPress 2.8 + плагин NextGen Gallery + плагин Lightroom, который отвечает за красивое отображение фотографий, путем затемнения фона. Но у данного плагина есть небольшой недостаток. По умолчанию он отображает фотографии в полный размер. Т.е. если фотография по высоте выше высоты экрана, то фотография будет слишком большая и не поместиться на экране. Меня это не устраивало. Я уверен, что это будет поправлено в будущих версиях плагина, т.к. многим это нужно, но на текущий момент я внес поправки в скрипт.

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

ширина фотографии / высоту фотографии = нужная величина

Есть три варианта:

  1. фотография является панорамой; нужная величина при этом будет большой (как минимум больше 2)
  2. фотография является портретной; нужная величина будет самой маленькой (максимум 0.8)
  3. стандартная фотография; нужная величина будет в пределах 0.8 и 2

В папке с плагином есть файл lightbox.js, открываем его и ищем строчку 279 (где-то там), там будет следующий код:

Element.setWidth('stimuli_lightboxImage', imgPreloader.width);
Element.setHeight('stimuli_lightboxImage', imgPreloader.height);
myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height);

Меняем эти строчки на следующие:

if(imgPreloader.width / imgPreloader.height > 2){
   Element.setWidth('stimuli_lightboxImage', imgPreloader.width);
   Element.setHeight('stimuli_lightboxImage', imgPreloader.height);
   myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height);
} else if (imgPreloader.width / imgPreloader.height < 0.8) {
   Element.setWidth('stimuli_lightboxImage', imgPreloader.width/1.8);
   Element.setHeight('stimuli_lightboxImage', imgPreloader.height/1.8);
   myLightbox.resizeImageContainer(imgPreloader.width/1.8, imgPreloader.height/1.8);
} else {
   Element.setWidth('stimuli_lightboxImage', imgPreloader.width/1.4);
   Element.setHeight('stimuli_lightboxImage', imgPreloader.height/1.4);
   myLightbox.resizeImageContainer(imgPreloader.width/1.4, imgPreloader.height/1.4);
}

Все, после этого все заработает так как надо.