На моем фото блоге установлен WordPress 2.8 + плагин NextGen Gallery + плагин Lightroom, который отвечает за красивое отображение фотографий, путем затемнения фона. Но у данного плагина есть небольшой недостаток. По умолчанию он отображает фотографии в полный размер. Т.е. если фотография по высоте выше высоты экрана, то фотография будет слишком большая и не поместиться на экране. Меня это не устраивало. Я уверен, что это будет поправлено в будущих версиях плагина, т.к. многим это нужно, но на текущий момент я внес поправки в скрипт.
Итак, я хочу, чтобы все мои фотографии менял размер в соответствии со своими пропорциями. Все будем считать по следующей формуле:
ширина фотографии / высоту фотографии = нужная величина
Есть три варианта:
- фотография является панорамой; нужная величина при этом будет большой (как минимум больше 2)
- фотография является портретной; нужная величина будет самой маленькой (максимум 0.8)
- стандартная фотография; нужная величина будет в пределах 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);
}
Все, после этого все заработает так как надо.