Наши заметки о MODx
В этом разделе мы будем собирать небольшую копилку секретов по работе с системой управления контентом сайта (CMS) MODx. Эти заметки ни в коем случае не претендуют на лавры документации. На нашем сайте тема MODx вообще занимает небольшой уголок, и эти материалы мы размещаем только потому, что по роду основной работы нам приходится оказывать техническую поддержку нескольким десяткам организаций, использующих наши прототипы сайтов. В то же время кое-что может пригодиться и другим людям.
Мы не претендуем на изложение "истины в последней инстанции". Наверняка в этих заметках гуру MODx найдут неточности и ошибки. Мы будем очень благодарны, если на это нам укажут в комментариях.
В заметках мы стараемся не просто сразу приводить готовое правильное решение, но и показываем, как мы набивали шишки в процессе поиска.

В этот раздел мы перенесли статьи, потерявшие актуальность. В основном это связано с появлением новых версий элементов системы, обнаружением более рациональных решений, а также с подготовкой более подробной документации по MODx.

Как настроить галерею HighSlide


В этой заметке мы разберем настройки галереи HighSlide. После штатной установки она у нас заработала сразу. Но после того, как мы закончили предыдущую заметку рабочим примером галереи, оказалось, что он не работает! Превьювы - показываются, а вывод слайда зависает с заставкой Loading. В чем дело? Пора покопаться в кишочках у скриптов...

Здесь мы разбирались с галереей HighSlide. Впоследствии мы отказались от использования этого сниппета и перешли на более удобную галерею Easy 2 Gallery. Эти заметки оставляем на память - вдруг пригодится.

Вызов сниппета

В простейшем варианте сниппет вызывается так:

[ [Highslide? &Gname=`hs`] ] 

где в параметре Gname имя подпапки с галереей. Вот здесь галерея в работе:

Не увидите в работе. Удалили мы такую галерею и перешли на Easy 2 Gallery.

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

Loading

На всякий случай мы заменили всё, что поставлялось в сборке библиотеки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-версию скрипта. Разумеется, поддержку русского языка туда включать не будут. Так что ручками придется, с напильником.

28-01-2009 23:39:17



    Содержание раздела «Настройки HighSlide»:
Комментарии любых посетителей

Написать комментарий