Привет, ребята, давно не виделись уже, однако. Но вот он я! Сегодня решил рассказать о том, о чем меня часто спрашивают, а именно – с помощью какого плагина у меня показываются картинки на блоге? Я отвечаю – никакого плагина, исключительно ручная работа. Разумеется, за основу были взять готовые решения, которые я интегрировал в WordPress – речь идет про замечательный jQuery Fancybox.
Мне кажется, что Fancybox является более удачным и легким решением, нежели другие общепризнанные решения типа Lightbox. Не буду вдаваться в подробности и рассказывать почему, просто я так считаю и этого достаточно. И сегодня я вам расскажу, как очень быстро и легко подключить Fancybox в WordPress, а так же как его настроить.
Самое приятное в моем решении то, что не придется вносить никаких изменений в существующие и будущие посты блога, вся необходимая информация будет браться из существующих данных, а настройки вывода и отображения меняются в самом JavaScript коде вызова.
Кстати, процесс подключения очень похож на установку формы обратной связи на jQuery, о которой я однажды рассказывал, и которая вам очень понравилась.
Перед началом наших работ предлагаю позыркать на тёлочек, да и как же без сисек да в пятницу ^_^ Вам же такое нравится, да?
Вы не подумайте чего, это я фотографию выкладываю для того, чтобы посмотреть живой пример работы Fancybox’а. Кстати, эта моя фотография, сделанная в самом мажорном клубе города Иркутска, я был там фотографом, и выкладывать фото оттуда запрещено, но для вас я рискую.
Скачать Fancуbox (дистрибутив версии 1.3.4)
За основу я брал актуальный на то время (время, когда я интегрировал данное решение на свой блог) архив jquery fancybox 1.3.4 – с ним мы и будем работать.
Сразу отвечу на возможный вопрос – А почему не fancyBox version 2? – Да, вторая версия более крутая, легкая и быстрая, но в ней убраны как раз те функции, без которых не получится интегрировать скрипт без внесения изменений в каждый пост на блоге. Поэтому будем пользоваться хоть и более старой, но надежной версией 1.3.4.
Скачать jquery.fancybox-1.3.4.zip
Установка Fancybox и подключение
- Итак, мы скачали и распаковали архив себе на компьютер в папку jquery.fancybox-1.3.4
- Внутри обозначенной папки есть еще одна папка под названием fancybox – ее надо залить на сервер, например, в папку с плагинами /wp-content/plugins/. Таким образом, нужное нам содержимое должно очутиться тут site.ru/wp-content/plugins/fancybox
- Открываем редактор шаблона в админке и файл functions.php, в самое начало, например, добавляем следующие строки:Первой функцией мы добавляем в шаблон сайта css файл стилей, а функцией wp_enqueue_script (); мы безопасно добавляем сам js-скрипт fancybox, таким образом, чтобы он обязательно шел после подключенного основного jQuery.
function my_css() { echo '<link rel="stylesheet" type="text/css" href="https://site.ru/wp-content/plugins/fancybox/jquery.fancybox-1.3.4.css" media="screen" />'."\n"; } add_action('wp_head', 'my_css', 5); if ( !is_admin() ) { wp_enqueue_script('fancybox', '/wp-content/plugins/fancybox/jquery.fancybox-1.3.4.js', 'jquery', '1.3.4'); }
- Открываем в редакторе шаблона файл header.php и сразу перед </head> добавляем следующий js-код вызова:
<script type="text/javascript">$(document).ready(function(){$('a[href^="http://site.ru/wp-content/uploads/"]:has(img)').fancybox({'hideOnContentClick':true,'titleFromAlt':true,'titlePosition':'outside','padding':'5','margin':'25'});});</script>
- Чистим кеш и перезагружаем любую страницу блога с картинками — наслаждаемся видами ;)
Настройка Fancybox и параметры
Самое сложное во всем этом безобразии это пункт номер 4. К его такому виду я пришел спустя месяц, после первой интеграции. Все гениальное не так и просто, как кажется :)
'a[href^="http://site.ru/wp-content/uploads/"]:has(img)'
– этот код ограничивает применение вызова fancybox только на картинки и только те, которые загружены в директорию /wp-content/uploads/ блога, то есть это как раз картики, которые мы добавляем к постам. Без этого кода в модельном окне начинают открываться любые картинки присутствующие на сайте, в том числе и счетчики, и элементы дизайна, и все что угодно.'hideOnContentClick':true
– данный код активирует функцию закрытия всплывающего окна по клику. Без этого кода закрыть окно можно будет только нажав на крестик в правом верхнем углу открывшегося изображения, что, разумеется, очень неудобно и нелогично.'titleFromAlt':true
– как раз та функция, которой нас лишили в fancybox2 – функция, которая берет из атрибута alt картинки текст и показывает его как пояснение в модальном окне.'titlePosition':'outside'
– функция определяющая положение поясняющего текста, в данном случае это под картинкой. Может принимать значения 'outside', 'inside' или 'over' – проверьте каждый вариант и выберите понравившийся.'padding':'5'
– отступ изнутри, говоря более понятно, то эта настройка определяет ширину рамки.'margin':'25'
– отступ извне, определяет отступы модального окна от границ видимого пространства в браузере.- Остальные параметры fancybox и их настройки вы можете подсмотреть на официальном сайте — fancybox.net/api — так же там описаны API методы, но я не уверен, что они вам пригодятся, но мало ли…
Ну вот, дорогие друзья, в целом и все, как установить и как настроить я вам рассказал, результат вы можете подстроить для своего сайта, как вам захочется, это не сложно.
Будьте на связи, задавайте вопросы, оставляйте комментарии.
Спасибо за телочек:) Как раз для пятницы:) Ну а за пост, как всегда, респект!
> вторая версия более крутая, легкая и быстрая, но в ней убраны как раз те функции, без которых не получится интегрировать скрипт без внесения изменений в каждый пост на блоге.
Какие именно? Не вижу проблем и в интеграции второй версии без плагина. На каком из четырех пунктов были проблемы? Вторая версия намного лучше, например там все картинки вынесены в спрайты.
Во второй версии я не смог выдрать текст из альта, чтобы добавить его в описание картинки. Если вы нашил как это сделать, я буду рад это услышать, и даже пост обновлю.
Телки страшненькие, как под ботексом...
А пост информативен.
Вроде все доступно и понятно написано, да и я не новичок. Но почему-то не получилось.
Просто все осталось как было. Может что-то важно упустил? А зачем остальные файлы в папке были? С ними ничего не надо делать?
А что не получилось-то? Я же не ясновидящий ;)
Остальные файлы в папке для просмотра демо, так сказать.
У меня вот такой вопрос — тоже подключаю без плагинов на вордпресс, по сути точно так же, хочу повесить внутрь форму обратной связи, причем пробую использовать плагин contact form 7 (он стоял ещё до подключения фэнсибокса) с открытием как inline.
Открывает корректно, но после нажатия отправки письма, страница перезагружается и окно закрывается, а должно оставаться с сообщением (ваше письмо отправлено, или предупреждения, что какие-то поля не заполнены).
В общем если есть мысли, или кто-то уже делал контактную форму в окне фэнсибокс, поделитесь опытом, пожалуйста.
Если страница перезагружается, то модальное окно, разумеется, не откроется само после этого.
Я понимаю, контактная форма перезагружает страницу при нажатии на кнопку отправить, думал может быть можно как-то этот момент отследить и исправить.
А пока что сделал так: создал шаблон под контактную форму (просто с выводом контента), и сделал страницу в админке, куда поместил шорт код от contact form 7, и теперь эту страницу открываю через iframe fancybox! В принципе работает...
Извиняюсь за сказанные вероятно мной глупости сейчас, или в будующем, буквально два месяца назад начал изучать эту тему.
Возникли ещё определенные трудности, а именно в настройке iframe. Хотел замедлить появление, чтобы успел подгружаться контент и появлялся сразу в окне, и просто изменить размеры модального окна. Но почему то не все настройки срабатывают.
Вот код в хидере у меня:
Из всего этого срабатывает только "centerOnScroll" : true.
А попробуйте те же настройки изменить в самом исходном файле jquery.fancybox.js и тогда видно будет, где кроется проблема, или в коде вызова, или что-то принципиально делается не правильно.
Спасибо за совет, пробовал изменить в jquery.fancybox-1.3.4.js, ничего не изменилось.
Код вызывающий iframe на странице имеет такой вид
<a class="iframe" href="мойсайт/страница сайта с контактной формой">Написать письмо</a>
Попробуйте такой код использовать:
Если не сработает, то я даже не знаю :(
АлаичЪ, может вы знаете решение. Как в фэнси, в развернутой картинке дополнительно к описанию добавить ссылку на эту же картинку? Т.е. есть картинки большого разрешения и чтобы их рассмотреть нужно открыть ее в новом окне 1:1. Сейчас у меня получается одни картинки идут через фэнси, а другие (большие) открываются в новом окне, что не очень удобно.
Я думал об этом, но как сделать не знаю :(
Во 2-й версии такая возможность есть по умолчанию, но нужно именно в 1.3.4. Если найду решение — поделюсь :)
Хорошо, было бы полезно, как мне так и читателям!
У меня не работает. Всё сделал как написано, но всё осталось по прежнему, картинки открываються в новом окне.
И что? Что я должен ответить на такой комментарий?
Да, впринципе, наверное и правда, что тут ответишь. Не работает, ну и ладно. Может я что накосячил, хотя что тут можно накосячить.
Сразу отвечу на возможный вопрос – А почему не fancyBox version 2? – Да, вторая версия более крутая, легкая и быстрая, но в ней убраны как раз те функции, без которых не получится интегрировать скрипт без внесения изменений в каждый пост на блоге. Поэтому будем пользоваться хоть и более старой, но надежной версией 1.3.4.
Интеграция fancybox 2 (defer loading):
Пример работы на моей домашней странице (скрипт загружается для записей, на главной он не нужен).
Все сделал по инструкции, но при клике на картинку открывается страница site.ru/wp-content/uploads/2012/07/11.jpg
Сайт на Денвере.
WordPress Версия 3.4.1 от Lecactus.
Все работает. Но теперь нужно сделать что бы миниатюра записи на странице полной записи по клику открывалась как и остальные (на данный момент ничего не происходит)
Любые картинки внутри ссылки должны и будут открываться в fancybox'е и не важно, миниатюра это или что-то другое. Но если нет ссылки, нет фансибокса!
Трудновато разобраться конечно, но как не крути, но что-то у меня всё таки не получается... Может я кривой или руки)?
Интегрирую в битрикс, но не fancyBox, а litebox. Так вот. Там в детальном просмотре присутствуют кнопки в виде картинок gif , которые после интеграции не отображаются. Т.е. — изображения листаются (ссылка присутствует), но кнопок next и prew нет. тоже самой с кнопкой закрыть — на ее месте пусто, хотя закрытие происходит.
Пардон, если не в тему (обсуждается все же fancyBox), но если кто подскажет, в чем дело — буду благодарен.
Проверьте правильность пути (ссылки) к картинкам, скорее всего дело в этом.
Спасибо за подсказку. Дело действительно было в этом.
Но в css путей нет, а изменения в самом скрипте нечего не дали.
Поэтому решил проблему переносом папки с картинками интерфейса в корень сайта (до этого были в папке шаблона). И вуаля — все заработало :)
Правильней будет так сделать для css, могу быть проблемы с кеширующими плагинами типо total cache, у меня например были=)
Добрый день. Подскажите пожалуйста, на сайте залогиненым пользователям галерея отображается нормально, а незалогиненым открывает не в Fancybox, а просто картинку на чистом окне. Сам Fancybox у меня был установлен вместе с темой. Причем на сайте темы всё нормально работает и логиниться не нужно. Подозреваю что это мои корявые ручки что-то испортили. Где вообще искать причину можно?
Проверьте, везде ли (для залогиненых и не залогиненых) подключаются все нужные скрипты в <head>.
К сожалению, мои познания в этом очень ограниченны.
Вы не подскажите где мне искать и что вообще должно быть написанно? Я визуально не понимаю где в коде сайта разница запускаемых скриптов для залогиненых и нет.
Вопрос решен. Оказалось что конфликтует с плагинами, ибо чистый сайт без плагинов работал нормально. Методом исключения оказалось что причина в плагине loginza, чтоб логиниться с социальных сетей.
Отключил его и всё работает как прежде :)
Вот и отлично. А конфликты часто возможны, так как разные плагины могут подключать свои библиотеки, которые могут конфликтовать с другими.
3дравствуйте,Александр
я начинающий вебмастер,очень хотелось бы спросить у более продвинутых спецов по JQuery,
можно ли вставить такую выпадающую менюшку с фоткой (JQuery),вот как тут http://playstudio.ru/ -на вордпресс?
Все можно вставить куда угодно. Поищите в сети всякие jQuery фишки, это одна из таких фишек. Как потом это встроить на сайт обычно на сайтах источниках написано.
да,вы правы-гугль знает всё
спасибо вам
АлаичЪ, вот в новость вставили изображений, ведущие на страницу вложений изображений к новости. У меня отображается 1 изображение на странице, как сделать что бы отображалось как у тебя по центру просматриваемое, а слева и справа, следующее и предыдущие изображение соответственно. Или вывести все сразу на странице атачмент но уменьшенные.
Это надо другой скрипт смотреть. Может быть и в новой версии FancyBox такое есть, я не в курсе.
У меня что-то ничего не получилось, вроде сделал все как написано но не работает, может кто нибудь подсказать что я сделал не так?
Добрый вечер!
Помогите пжл новичку, я уже опустил руки.
Собственно делаю все по инструкции, ничего не меняется. Так же пытался сделать кнопочку наверх — та же история. У меня подозрение, что не подключен jquery. Как это можно проверить?
Заранее спасибо!
Спасибо за статью.
Помогите, пожалуйста, с проблемой: использую FancyBox2. На главной странице плагин работает как положено. При переходе на отдельную запись, картинка открывается не по центру ( съезжает вниз ) и в полном размере. В качестве примера ссылка — http://ceramika.org.ua/kote-s-8-marta/ — нажмите на картинку. Заранее благодарен за помощь.
Да, тоже не получилось, открываются картинки в новых страницах. Может,на новых версиях вордпресса не идет?
Буду искать плагин.
Доброе время суток.
Подскажите возникла проблема с Fancybox перестали открыватся модульные окна т.е сейчас они открываются во все окно. А в админке VirtueMart в медиа файлах, когда нажимаешь на картинку оно работает. Вот сайт где проблема http://zolotayaverba.ru/
У вас там библиотека jQuery подключается как минимум аж 3 раза, что является ошибкой и не только относительно Fancybox, но вообще из-за этого много перестает работать. Оставьте только одно подключение и все будет окей.
Можете подсказать где отключить лишние? А то я в это профан. Спасибо.
Понятия не имею. Спрашивайте у специалистов по Joomla.
А как вы узнали что подключено так много библиотек?
Исходный код посмотрел.