Вызов сниппета
В простейшем варианте сниппет вызывается так:
[ [Highslide? &Gname=`hs`] ]
где в параметре Gname имя подпапки с галереей. Вот здесь галерея в работе:
Не увидите в работе. Удалили мы такую галерею и перешли на Easy 2 Gallery.
Точно также она вызывалась на предыдущей странице, и прекрасно работала сначала, но потом стала зависать. Разумеется, мы проверяли в разных браузерах, очищали кэш сайта, кэши браузеров - ничего не помогает. Висит сообщение о загрузке, слайды не открываются:
На всякий случай мы заменили всё, что поставлялось в сборке библиотекиHighSlide для MODx на самую свежую версию с авторкого сайта. В момент написания заметки это была версия 4.0.11. Сразу всё заработало! Но не будем обольщаться - работало и раньше. Оставим узелок на память о таком сбое, а пока разберемся с настройками.
Русский язык
Сообщений в эффекте немного, но лучше их читать на родном языке.
HighSlide - это библиотека на Javascript. Полный комплект версии 4.0.11 состоит из файлов
- highslide-full.js
- highslide-full.packed.js
- highslide-with-gallery.js
- highslide-with-gallery.packed.js
- highslide-with-html.js
- highslide-with-html.packed.js
- highslide.js
- highslide.packed.js
Здесь разные варианты применения. В галерее для MODx используются highslide.js и highslide-packed.js. Исходным, очевидно является highslide.js, а сжатым для быстроты загрузки - highslide-packed.js. Попробуем исправить highslide.js.
Перевели в нем несколько строк, сохранили, естественно в кодировке UTF-8, но результат не увидели. Удалили все остальные JS-файлы - работает, но результата нет. Подозреваем, что влияет кэш браузера. Обновляем и сайт, чистим кэши всех браузеров - результата в виде русских сообщений нет, как нет. Запускаем редко используемый нами Opera (ранее смотрели в IE, Firefox, Safary) - картинка из галереи просто раскрывается, безо всякого эффекта. Что это - известные глюки Opera с Javascript? Или сказалось удаление highslide-packed.js? Да нет, оказалось что в Opera просто отключен был Javascript.
Чистим всё, что возможно, удаляем вручную кэш всего сайта, выгружаем браузеры и даже перезагружаем сервер - всё равно лезут английские сообщения. Но их же нет нигде! И тут возникает жуткое подозрение - у нас же есть highslide еще в одном месте, в DirectResize. Переименовываем его папку и... вот оно! Наш HighSlide перестает работать! Значит скрипты грузились совсем из другого места. Это надо получше сообразить, как так происходит.
В тексте сниппета у нас есть строка, прямо указывающая, какой скрипт загрузить:
$modx->regClientStartupScript("assets/snippets/highslide/highslide-packed.js");
Этот скрипт мы удалили, поэтому, возможно, ищется в памяти нужная функция, а она ранее загружена из другого места? Пробуем изменить в сниппете на наш имеющийся скрипт:
$modx->regClientStartupScript("assets/snippets/highslide/highslide.js");
Не помогает ничего. И DirectResize вообще отключили, и удалили его - бесполезно. Собрались уже на "утро вечера мудренее", и вдруг - чудо! В последней попытке Opera вдруг показала русский текст! А потом и все остальные бродяги. Происходит это при отключении плагина DirectResize.
Ну, хоть прояснилось. С конфликтом библиотек мы разберемся как-нибудь, сделаем, чтобы одна использовалась. Более того, попробуем еще и подключить HighSlide к MaxiGallery, хотя там возможны и проблемы. По этому поводу на форумах MODx встречаются длительные дискуссии.
Сформулируем промежуточные задачи - чего же хочется.
1. Использовать DirectResize так, как он задумал. Но с использованием эффектов HighSlide.
2. Иметь и галерею MaxiGallery, и галерею на HighSlide. Потом, возможно, оставим одну, а может быть будем использовать обе, в зависимости от конкретных условий.
3. Использовать одну библиотеку HighSlide для всех плагинов и сниппетов.
Вот эти задачи и будем решать далее. Разумеется, до экспериментов мы обновимся до самых последних версий всех компонентов.
А чегой-то мы вдруг так полюбили этот HighSlide? В другой заметке как-то его не выделяли из прочих. Объяснение тут такое - во-первых, мы посмотрели на авторском сайте примеры использования. Очень понравилось - изящно при правильной настройке. Во-вторых, именно этот эффект имеет опцию Показать в полный размер, а нам как раз это надо обязательно. И вообще - просто как-то поглянулся, тем более, что очень многие им восхищаются.
Отметим также, что использовать HighSlide так, как это сделано на сайте, нас не привлекает. В демонстрационных примерах написан довольно большой код, наподобие
<div class="thumbwrapper">
<a class="highslide" id="thumb4">
onclick="return hs.expand(this,
{wrapperClassName: 'highslide-blur-example', captionOverlay: { position: 'rightpanel'}})" href="http://highslide.com/samples/full4.jpg"><img />
title="Click to enlarge" height=120 alt="Highslide JS" src="HS/thumb4.jpg" width=80></a>
</div>
Для демонстрационных страниц это правильно, но мы такое писать не собираемся. Нам надо "чтоб автоматом".
Кстати, на сайте highslide.com имеется он-лайновый Configurator, который позволяет отметить требуемые возможности и скачать сгенерированный highslide.js под требуемую конфигурацию. Мы, конечно, сами с усами, сконфигурируем, но возможность неплохая. Стоит поэкспериментировать - что, по задумкам автора, включается в разные конфигурации.
И еще вопрос - а как же делать xxx-packed.js?
Для упаковки Javascript существуют специальные программы. А вот для HighSlide можно, при использовании Configurator, скачать и Packed-версию скрипта. Разумеется, поддержку русского языка туда включать не будут. Так что ручками придется, с напильником.
Написать комментарий