воскресенье, 15 апреля 2012 г.

Настройка evoGallery и jQuerry

Modx установлен теперь пришло время организовать загрузку изображений. Рассмотрим установку модуля evoGallery.

Допустим Modx установлен. Качаем последнюю версию http://modx.com/extras/package/evogallery.
  1. Копируем содержимое в папку на сервере.
  2. Устанавливаем для папки galleries права 0777.
  3. Запустить установку site_name/install. Устанавливаем и после установки удаляем папку install
  4. Пробуем загрузить несколько изображений через модуль на главную страницу. И сделаем простой вызов сниппета [!evoGallery!].
Все изображения отображаются, однако если попробовать открыть изображение - мы перейдем по ссылке на это изображение в увеличенном виде. Для того, чтобы это немножко окультурить существует масса плагинов на jQuery для открытия всплывающего окна с увеличенным изображением. В своем примере я опишу установку prettyPhoto.
  1. Копируем папки css, js, images.
  2. Редактируем тег <head>. Подключаем css, js из папок и jquery.min.js. Добавляем скрипт (см. ниже красным цветом).
  3. Создаем чанк, который подключим в вызове сниппета  [!evoGallery? &itemTpl=`tpl`!]
Chunk:
<a href="[+images_dir+][+filename+]" rel="prettyPhoto[pp_gal]"><img class="pretty-photo" src="[+thumbs_dir+][+filename+]" alt="[+title+]" /></a>

<script type="text/javascript" src="js/jquery.prettyPhoto.js"></script>
<script type="text/javascript" charset="utf-8">
    $(document).ready(function(){
        $("a[rel^='prettyPhoto']").prettyPhoto();
    });
</script>

И всё должно работать.



Какие были у меня косяки при настройке:
  • Изображение отображается, однако рамки и границы не отображаются. В этом случае необходимо проверить пути, прописанные в css файле (либо наличие этих изображений в папке на сервере).
  • Был установлен shopkeeper и в коде вызывалась дополнительно библиотека jquery.min.js. Мне помогло удаление данной библиотеки. Двойной вызов точно не нужен.
  • При обычном запуске [!evoGallery!] не отображалось ничего. Проблема была в регистре. Сработал вызов [!EvoGallery!]

5 комментариев:

  1. Спасибо за материал. Косяков много у этой галереи, но много и достоинств.

    А как вызвать сразу несколько альбомов галереи на одной странице? это возможно?

    ОтветитьУдалить
    Ответы
    1. Точно сходу не скажу поддерживается это или нет, вроде не использовал. Попробуйте так:

      Первая галерея:
      [!EvoGallery? &display=`images` &docId=`2`!]

      ну и вторая галерея:
      [!EvoGallery? &display=`images` &docId=`5`!]

      Соответственно 2 и 5 - это ID страниц контейнеров, на которые мы загрузили изображения.

      Удалить
  2. те же грабли с шопкипером...
    фотки грузятся на страницу, но выводятся только уменьшенные, большое фото раскрывается ...
    (переходим по ссылке на это изображение в увеличенном виде) - так и ты пишешь...

    какой код нужно указать ?
    1 и 3 пункты я сделал... расположил как ты говоришь, но
    п.2. "Редактируем тег head. Подключаем css, js из папок и jquery.min.js.
    непойму.....
    у меня там уже:









    + Добавил скрипт:

    $(document).ready(function(){
    $("a[rel^='prettyPhoto']").prettyPhoto();
    });



    что нужно вставить - убрать?

    ОтветитьУдалить
    Ответы
    1. Писал давно, когда сам это делал на автомате и не понимал и не вдумывался в смысл как оно работает.

      Ну смысл такой:
      Для начала всё должно работать на сайте даже для обычных фотографий. Рекомендую проверить это в первую очередь. Дам краткий алгоритм.
      Нужно подключить библиотеку jQuery, на которой написана масса различных увеличилок изображений. Воспользуюсь примером отсюда: http://leandrovieira.com/projects/jquery/lightbox/
      Вы же можете взять любую по поиску на гугле по фразе jquery lightbox.

      Рассмотрим мой пример с сайта по ссылке выше:

      <script type="text/javascript" src="../../assets/js/jquery-1.2.1.pack.js"></script>
      Здесь автор подключает саму библиотеку jquery

      и собственно сам лайтбокс:

      <link rel="stylesheet" type="text/css" href="../../assets/css/style-jquery-lightbox.css?version=45" />
      <script type="text/javascript" src="js/jquery.lightbox-0.5.pack.js"></script>
      <link rel="stylesheet" type="text/css" href="css/jquery.lightbox-0.5.css" media="screen" />

      Всё теперь минимум на сайте есть, чтобы при клике на картинку появлялся поп-ап с ее увеличенным представлением.

      Чтобы понятнее было использование самого скрипта можно почитать документацию по jquery, это не повредит. Я бы порекомендовал на сайте http://www.wisdomweb.ru/JQ/jquery-first.php

      Далее собственно вызываем скрипт:
      <script type="text/javascript">
      $(function() {
      $('#gallery a').lightBox();
      });
      </script>

      и теперь для всех элементов, которые удовлетворяют селектору $('#gallery a') будет включаться лайтбокс.

      Попробуйте проделать все шаги в обычном html файле. Если получится и поймете смысл - значит получится и в modx. Удачи!!!

      Удалить
  3. вижу в установке моей уже есть в /assets/js/fancybox/ какие-то скрипты и стили... но немогу подключить все-равно... на вордпрессе все было легко.. а тут чтото совсем за тупил я в этом...

    ОтветитьУдалить