Статьи

Добавить отзывчивый лайтбокс в тему WordPress

После моего недавнего урока, где я показал вам, как добавить отзывчивый слайдер jQuery к вашей теме WordPress , я подумал, что покажу вам, как добавить адаптивный лайтбокс на ваш сайт WordPress.

Мы собираемся использовать невероятный плагин (скрипт) fancyBox jQuery для демонстрации реализации лайтбокса, но те же принципы могут применяться к большинству скриптов лайтбокса. Этот урок будет в основном преподаваться через 15-минутную заставку, но я также включил несколько кратких письменных инструкций.



Первое, что нам нужно сделать, это скачать fancyBox с сайта fancyBox . Затем мы хотим открыть исходную папку, где мы собираемся скопировать следующие файлы в нашу тему (обратите внимание, что мы используем WordPress по умолчанию тему Twenty Twelve ):

  • blank.gif
  • fancybox_loading.gif
  • fancybox_overlay.png
  • fancybox_sprite.png
  • jquery.fancybox.css
  • jquery.fancybox.pack.js

Хотя лучше оставаться организованным, поэтому давайте создадим папку в каталоге inc нашей темы с именем lightbox , и там мы создадим три новые папки: css , js и images . На этом этапе вам также необходимо создать файл с именем lightbox.js (пока не беспокойтесь об этом). Затем нам нужно разделить файлы выше в их соответствующих местах, так что это будет выглядеть как на рисунке ниже.

Вам нужно отредактировать пути к изображениям в jquery.fancybox.css, чтобы они соответствовали нашей новой файловой структуре. Вы можете сделать это, выполнив поиск и заменив:

url(' с url('../images/


Теперь, когда у нас есть папка, заполненная всеми необходимыми файлами, нам нужно загрузить их! Откройте файл functions.php и добавьте следующее:

1
2
3
4
5
6
7
// Enqueue Scripts/Styles for our Lightbox
function twentytwelve_add_lightbox() {
    wp_enqueue_script( ‘fancybox’, get_template_directory_uri() . ‘/inc/lightbox/js/jquery.fancybox.pack.js’, array( ‘jquery’ ), false, true );
    wp_enqueue_script( ‘lightbox’, get_template_directory_uri() . ‘/inc/lightbox/js/lightbox.js’, array( ‘fancybox’ ), false, true );
    wp_enqueue_style( ‘lightbox-style’, get_template_directory_uri() . ‘/inc/lightbox/css/jquery.fancybox.css’ );
}
add_action( ‘wp_enqueue_scripts’, ‘twentytwelve_add_lightbox’ );

То, что мы сделали выше, поставили в очередь минимизированный скрипт FancyBox (и, в зависимости от этого, WordPress включил библиотеку jQuery), наш новый файл lightbox.js , а также таблицу стилей FancyBox. Слишком легко!


Помните тот файл lightbox.js, который мы создали ранее? Пришло время открыть его и наполнить каким-нибудь красивым jQuery! В приведенном выше скриншоте я показал вам каждый пример отдельно, чтобы вы могли лучше понять, как на самом деле работает jQuery, но ниже приведен весь код. Скопируйте это в файл lightbox.js :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(function($) {
 
    // Initialize the Lightbox for any links with the ‘fancybox’ class
    $(«.fancybox»).fancybox();
 
    // Initialize the Lightbox automatically for any links to images with extensions .jpg, .jpeg, .png or .gif
    $(«a[href$=’.jpg’], a[href$=’.png’], a[href$=’.jpeg’], a[href$=’.gif’]»).fancybox();
 
    // Initialize the Lightbox and add rel=»gallery» to all gallery images when the gallery is set up using so that a Lightbox Gallery exists
    $(«.gallery a[href$=’.jpg’], .gallery a[href$=’.png’], .gallery a[href$=’.jpeg’], .gallery a[href$=’.gif’]»).attr(‘rel’,’gallery’).fancybox();
 
    // Initalize the Lightbox for any links with the ‘video’ class and provide improved video embed support
    $(«.video»).fancybox({
        maxWidth : 800,
        maxHeight : 600,
        fitToView : false,
        width : ‘70%’,
        height : ‘70%’,
        autoSize : false,
        closeClick : false,
        openEffect : ‘none’,
        closeEffect : ‘none’
    });
 
})(jQuery);
Подсказка: вы должны включать только те части кода, которые вам нужны. Я включил только все, чтобы вы могли видеть различные варианты инициализации лайтбокса.

Теперь вы можете использовать лайтбокс! С помощью приведенного выше кода он настроен на автоматическое добавление лайтбокса для всех ссылок на файлы изображений с расширениями .jpg, .jpeg, .png или .gif. Таким образом, следующий фрагмент кода создаст лайтбокс:

1
<a href=»image.jpg»><img src=»image_thumbnail.jpg» /></a>

Лайтбоксы Галереи:

Вы также можете создать «галерею лайтбоксов», добавив один и тот же атрибут rel к нескольким ссылкам, например:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<a href=»image1.gif» rel=»some-photos»>
   <img src=»image1_thumbnail.gif» />
</a>
 
<a href=»image2.png» rel=»some-photos»>
   <img src=»image2_thumbnail.png» />
</a>
 
<a href=»image3.jpg» rel=»some-photos»>
   <img src=»image3_thumbnail.jpg» />
</a>
 
<a href=»image4.jpeg» rel=»some-photos»>
   <img src=»image4_thumbnail.jpeg» />
</a>

Тем не менее, ту же самую галерею лайтбокса можно также получить, просто вставив простую старую галерею WordPress в ваше сообщение или страницу. Просто не забудьте связать миниатюры с файлами изображений примерно так:

Видео лайтбокс:

Также включена поддержка лайтбокса видео, чего можно добиться, связавшись с URL-адресом для вставки видео в IFRAME (найдите его, посмотрев код для встраивания видео из таких сервисов, как YouTube или Vimeo), и предоставив ему класс video и fancybox.iframe , например так:

1
2
3
<a href=»http://player.vimeo.com/video/50006726?badge=0″ class=»video fancybox.iframe»>
    Click this to open up a Video from Vimeo!
</a>

ОБОРУДОВАНИЕ Lightbox:

Помимо IFRAME в лайтбоксах с видео вы можете вставлять другие IFRAMES, такие как Google Maps, включая те же классы video и fancybox.iframe , например:

1
<a class=»video fancybox.iframe» href=»http://maps.google.com/?output=embed&f=q&source=s_q&hl=en&geocode=&q=London+Eye,+County+Hall,+Westminster+Bridge+Road,+London,+United+Kingdom&hl=lv&ll=51.504155,-0.117749&spn=0.00571,0.016512&sll=56.879635,24.603189&sspn=10.280244,33.815918&vpsrc=6&hq=London+Eye&radius=15000&t=h&z=17″>Google Maps (IFRAME)</a>

Титры:

Как вы можете видеть на видео, некоторые изображения я автоматически вставил и применил лайтбокс, чтобы иметь подписи. Они определяются атрибутом title ссылки. Например, посмотрите, какие заголовки установлены в следующем фрагменте кода:

1
2
<a href=»an-image.jpg» title=»Here is a caption! How exciting!»><img src=»an-image_thumbnail.jpg» /></a>
<a href=»another-image.jpg» title=»Did you see the caption on that image? Damn!»>Click for an image!</a>

Обратите внимание, что FancyBox лицензируется под лицензией Creative Commons Attribution-NonCommercial 3.0 , что означает, что вы можете свободно использовать его в некоммерческих работах с атрибуцией, но вы должны заплатить лицензионный сбор, чтобы использовать его в коммерческих проектах. Вы можете прочитать больше о лицензии здесь .



Если вы загрузили исходные файлы выше, обратите внимание, что после помещения их в каталог inc вашей темы вам нужно добавить код, найденный в шаге 2, в ваш файл functions.php , который ставит в очередь jQuery и все файлы fancyBox.

Кроме того, я также превратил это в бесплатный плагин, который вы можете скачать на моем личном сайте .