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


В плагинах DirectResize и MaxiGallery используются распространенные эффекты для показа крупных картинок - slimbox, slidebox, lightboxv2, highslide. Чем же они отличаются?

Как показывается картинка с различными эффектами

  Вот так показывает изображение  Эффект Slimbox. Вот так - Эффект Slidebox. А так - Эффект HighSlide. А эдак  - Эффект Lightboxv2.

Замечание 1. Это уже устаревшая заметка. К DirectResize 0.9 подключены другие эффекты, хотя Slimbox и Highslide остались. Но суть остается прежней - вывод картинки в некоем "гламурном" окошке.

Об эффекте HighSlide мы поговорим отдельно. Это не только "эффект", это гораздо более мощный скрипт. С его помощью и галереи можно делать, и для просмотра отдельных картинок использовать.

А почему мы прямо сюда картинки не вставили, догадываемся? Да потому, что она большая, шириной около 1000 пикселей, в контент не впишется, мы её уменьшим.
Но тогда изображение эффекта slimbox будет показываться с эффектом slmbox (или иного действующего), и будет непонятно. Во время работы действует одна конфигурация, и один текущий эффект.

 На приведенных иллюстрациях не видны, конечно анимационные эффекты, а они есть - постепенное проявление и прочее. Ну и, конечно, эффекты можно настроить - добавить кнопочки, надписи. И русифицировать можно - вот так мы сделали в Maxigallery.

А теперь задумаемся - надо ли нам, на нашем сайте это?  На красивый эффект появления "чертика из табакерки" можно полюбоваться несколько раз. А потом - надоест. Да и время тратится. Кроме того, у нас технический сайт, нам хочется показать скриншот во всей красе (или во всей мерзости). А из-за всех этих понтов мы видим уменьшенное изображение, в котором могут пропасть важные детали.

Допустим, мы знаем, где можно настроить размеры изображения. Но тогда пропадут и сами эффекты - полный размер картинки может оказаться и больше окна браузера. И какой толк будет от понтов?

Давайте, попоробуем. Установим действующим эффект slimbox и зададим для него в

assets/plugins/directresize/configs/slimbox.config.php

$big_width = 1600;
$big_height= 1600; 

Замечание 2. Так мы делали в DR 0.8. Вообще-то это нехороший метод - устанавливать параметры внутри одного эффекта. А если мы будем менять эффекты? В DR 0.9 мы нашли способ управления сразу для всех эффектов.  Этот вариант оставляем на память, в качестве истории поиска решений.

  Затем возьмем очень большое изображение карты размером 3078х3638 пикселей и вставим в страницу с уменьшением.

Пример карты

  Пример карты

Пример карты

Замечание 3. В заметке мы описывали эффект Slimbox, но в момент, когда вы её читаете скорее всего будет действовать другой эффект. Всё, что написано ниже про Slimbox оставляем на память. Может быть пригодится.

И поглядим, как будет выглядеть эффект. Оба-на! Страница вообще не открывается - пустой белый фон. Заглянув "куда надо" видим, что big_demo_map.png вообще не создался. Кишка тонка, должно быть.  Ладно, попробуем установить

$big_width = 4000;
$big_height= 4000; 

В этом случае эффект сработал, но имеет вот такой вид - Эффект slimbox для очень большой картинки.

Как мы и предполагали, толку от эффекта мало - и кнопки его не видны - одна черная полупрозрачная полоса. И зачем нам это?

Замечание 4. Заметим, что для эффекта Highslide подобный метод оказался действующим.
Мы задали "big_width" => 4000, "big_height" => 4000,  массиве $local_parms
(файл assets/plugins/directresize/directResize.php) и получили возможность просмотра больших изображений именно в натуральную величину, но внутри слайда.  Установки big_xxx влияют так:
1. В соответствии с этими параметрами генерируется "средняя картинка", то есть та, которая выводится в окно эффекта.
2. Кроме "средней" генерируется "маленькая" картинка (превьюв, thumbnail), показываемая на странице.
3. На своем "родном" месте остаётся исходная картинка.

Если у нас заданы очень большие big_xxx, то фактически средняя картинка генерируется такого же размера, как исходная (если исходный размер меньше big_xxx), или не более big_xxx. Пока такая картинка не создана, на генерацию может потребоваться много времени.

Дальнейшие результаты зависят уже от настроек и возможностей эффекта.

В эффекте Higslide размеры окна эффекта (слайда) устанавливаются в соответствии с заданными big_xxx, но не больше, чем окно браузера (а оно не обязательно распахнуто на весь экран). Если окно слайда меньше окна браузера, в Higslide появляется возможность и кнопка  Распахнуть в полный размер. Вот этот полный размер и задан в big_xxx. Но,если big_xxx больше размеров исходной картики, то при распахивании слайд развернется до исходного размера, только в нем будет показан не оригинал, а средняя картинка, размеры которой в данном случае равны оригинальному.

В эффекте Slimbox слайд в этом случае сразу распахивается до полного размера.

А нельзя ли сделать, чтобы предпросмотры создавались, а полные картинки показывались бы просто, безо всяких понтов?

Попробовали установить

$lightbox_mode = 1;  (было 2)

В DR 0.9 этот параметр исключен.

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

Оказалось, что можно сделать просмотр без эффектов. Выяснили это мы случайно, поэкспериментировав с настройками. Нашелся такой метод "хака" - если вписать в assets/plugins/directresize/configs/slimbox.config.php строку $maxigallery_jscss_packs =1;, то как раз и исчезает эффект!
Здесь мы просто сами ошиблись, написали так вместо $maxigallery_jscss_packs =slimbox;
Но оказалось, что  картинка при этом становится просто файлом, её можно и в браузере открыть, и сохранить. Для организаторов галерей это не очень хорошо, а нам - в самый раз.

 

Описанный выше "хак" применять не стоит.  Есть более правильный штатный путь - см. Замечание 4. Эту находку оставим в качестве истории поисков решений.

И всё-таки очень большие изображения, наподобие приведенной в примере карты, лучше не показывать в полный размер прямо на странице сайта. Весят они много, посетитель об этом не знает и будет очень долго ждать.  Лучше давать ссылки на такие картинки в виде текста, да с указанием формата и размера. Тогда посетитель сам решит - открывать ли её в браузере или скачать. А эффекты стоит использовать для изображений, у которых размер не превышает размеров окон большинства браузеров. Для наших целей это как раз подходит - мы, в основном показываем скриншоты.

Поэтому у себя мы оставим максимальные размеры 1600х1200. Это позволит нам просматривать в натуральную величину большинство наших иллюстраций. Вот так:

 

Камера ТС

Камера ТС

 

 А большую карту мы опубликуем так:

В этом варианте посетитель видит превьюв (маленькую картинку), при щелчке по превьюву видит слайд с размерами не более 1600х1200 (среднюю картинку) и может открыть или сохранить карту по текстовой ссылке без всяких ненужных эффектов.

О настройках DirectResize поговорим отдельно.

27-01-2009 16:02:29



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

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