WordPress: Добавить ссылку "Сохранить фото" для галереи на NextGen с эффектом Lightbox

WordPress: Добавить ссылку "Сохранить фото" для галереи на NextGen с эффектом Lightbox NextGen - самая популярная и, пожалуй удобная галерея для WordPress. Но в эффекте Lightbox есть одно неудобство - нет возможности сохранить текущую фотку по нажатию правой кнопкой мыши. Добавляю ссылку на оригинал изображения.

1 вариант: Своя доработка кода.

prettyPhoto - javascript для красивого вывода фотогалереи. Но если, просматривая галерею, мы хотим сохранить какое-то изображение, то по нажатию правой кнопки мыши, в контекстном выпадающем меню мы не увидим строк "сохранить изображение" и "Открыть изображение в новом окне".

NextGen c эффектом LightBox, по умолчанию нельзя сохранить текущее изображение по правой кнопке мыши

Это происходит, потому что на слой картинки наложен ещё слой с двумя элементами-блоками для перехода к следующей и предыдущей картинке. Этот слой с элементами-ссылками занимает всё пространство и не оставляет места для картинки. Поэтому в контекстном меню мы видим только опции "Открыть ссылку..." и похожие. Но сама галерея выглядит красиво, и по-моему, выигрывает у других эффектов (Highslide, Thickbox).

Настройки галереи NextGen в WordPress

Устраняем этот маленький недостаток. Все изменения коснутся файла  jquery.prettyPhoto.js и немного prettyPhoto.css:

  • /wp-content/themes/[your_theme]/js/jquery.prettyPhoto.js
  • /wp-content/themes/[your_theme]/css/prettyPhoto.css

Мои файлы с внесёнными правками:

jquery.prettyPhoto.js

prettyPhoto.css

кнопка сохранить фото для галереи NextGen в Wordpress

Теперь, разбираемся. В jquery.prettyPhoto.js вносим добавления:

строка 64 - добавляю

<div class="ppt1">&nbsp;</div> \ 

строка 209 - добавляю $ppt1

// Fade the content in
if($ppt.is(':hidden')) $ppt.css('opacity',0).show();  
if($ppt1.is(':hidden')) $ppt1.css('opacity',0).show();

строка 235

// Set the title
(settings.show_title && pp_titles[set_position] != "" && typeof pp_titles[set_position] != "undefined") ? $ppt.html(unescape(pp_titles[set_position])) : $ppt.html('&nbsp;');

(settings.show_title && pp_titles[set_position] != "" && typeof pp_titles[set_position] != "undefined") ? $ppt1.html('<a href="'+unescape(pp_images[set_position])+'">Сохранить фото</a>') : $ppt1.html('&nbsp;');

строка 471

$('div.pp_pic_holder,div.ppt,div.ppt1,.pp_fade').fadeOut(settings.animation_speed,function(){ $(this).remove(); });   

строка 504

$ppt.fadeTo(settings.animation_speed,1);
$ppt1.fadeTo(settings.animation_speed,1);    

строка 761

 $pp_pic_holder = $('.pp_pic_holder') , $ppt = $('.ppt'), $ppt1 = $('.ppt1'), $pp_overlay = $('div.pp_overlay'); // Set my global selectors   

 

И в prettyPhoto.css

...
div.ppt1 {
  //display:block;
  line-height:22px;
  position:absolute;
  right:40px;
  //text-indent:-10000px; 
  margin-top:7px;
}  
div.ppt1 a{background: url("../img/floppy.png") no-repeat scroll left center transparent;
    padding: 3px 0 0 23px; 
} 
...

 

2 вариант: Использование плагина Wp Jquery Lightbox.

Другой выход из ситуации подсказал Prateek Gupta на stackoverflow: Use this plugin Wp Jquery Lightbox. It has inbuilt download option, which will give you original image url. Use combination NextGen+Wp Jquery Lightbox.
WP Jquery Lightbox
 
Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.