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

Еще одна галерея для MODx


Мы уже разбирались с галереями MaxiGallery и HighSlide. Первая достаточно сложна и не использует полюбившийся нам эффект HighSlide. Вторая галерея основана на HighSlide, но требует загрузки картинок вручную по FTP. Нашлась и ещё одна галерея - Easy 2 Gallery. Просмотр галереи осуществляется с импользованием эффекта HighSlide, а управление галереями - с помощью специального модуля. Вот это кажется нам оптимальным вариантом. Но всё надо проверять.

В целом Easy 2 Gallery показывает себя вполне работоспособной. На форуме многие высказывются за то, что она лучше MaxiGallery. Однако использование Easy 2 Gallery (EG) немного затруднено подходом автора. Как-то он всё время норовит отсутпить от принятых в MODx соглашений в пользу "мне так нравится". Это плохо. Однако хорошо то, что автор и прислушивается к критике и кое-что исправляет.

Мы работали с версией  1.3.

Установка

Вот полная авторская "документация":

1. Разархивируйте архив в дирректорию с установленным MODx.

2. Создайте в MODx новый модуль и обязательно назовите его easy2, в поле "код модуля" вставьте содержимое файла module.easy2gallery.php (assets/modules/easy2/install/module.easy2gallery.php).

3. Обновите окно с MODx, чтобы в модулях появилась новая закладка easy2, откройте её.

4. Произведите установку согласно инструкциям.

5. Если установка прошла успешно, обязательно удалите дирректорию install, нажитием на кнопку, или вручную. При её наличии, модуль работать не будет.

  Ну а у нас установка успешно не прошла. Чуть-чуть "не доделалась". Инсталлятор создал в базе данных таблицы, модуль появился в списке, но не заработал. Разумеется, и MODx была перезапущена, и каталог install удален. Пришлось доводить руками. Впрочем, это возможно, случайный сбой был.

Работает модуль неплохо. Он позволяет создавать "директории" с русскими названиями (физические имена папок - номерные):

Управление директориями

Управление директориями

Файлы можно загружать слатинскими и русскими именами (на сервере имена будут цифровыми):

Управление файлами

Управление файлами

Для файла можно создавать Название и Описание:

Свойства файла

Свойства файла

Файл можно удалить, можно управлять комментариями, добавленными посетителями сайта.

Замеченные недостатки:

1. Папку для галерей предлагает создать в корне сайта, а не в assets, где должны проживать все загружаемые файлы.  Мелочь, но неприятно.

2. Комментарии пользователей попадают в БД в неверной кодировке - cp1251, хотя вся база и таблица в кодировке UTF-8. Неправильная кодировка получается в момент записи комментария. После исправления кодировки комментариев в базе они неправильно отображаются в окне просмотра комментариев, генерируемом highslide.

3. После изменения конфигурации вылетает сообщение наподобие:

Не удалось полностью очистить кэш, файлов удалено: 0, директорий удалено: 0
Can not delete file: ../assets/egallery/_thumbnails/2/1_140x140.jpg
Can not delete file: ../assets/egallery/_thumbnails/2/1_160x120.jpg
Can not delete file: ../assets/egallery/_thumbnails/2/2_140x140.jpg
Can not delete file: ../assets/egallery/_thumbnails/2/2_160x120.jpg
Can not delete file: ../assets/egallery/_thumbnails/2/3_140x140.jpg
Can not delete file: ../assets/egallery/_thumbnails/2/3_160x120.jpg
Can not delete file: ../assets/egallery/_thumbnails/2/4_160x120.jpg
Can not delete directory: ../assets/egallery/_thumbnails/2/4_160x120.jpg
Can not delete directory: ../assets/egallery/_thumbnails/2 

 

  Наши настройки

Настройки приходится делать в разных местах.

Русификация highslide

Дописали загрузку highslide-ru.js в код сниппета:

if ($glib == 'highslide') {
    $modx->regClientStartupScript('assets/plugins/directresize/libs/highslide/highslide-with-html.js', 0);
    $modx->regClientStartupScript('<script type="text/javascript">
hs.graphicsDir = "assets/plugins/directresize/libs/highslide/graphics/";
hs.outlineType = "rounded-white";
hs.allowSizeReduction = false;
hs.outlineWhileAnimating = true;
</script>
<script type="text/javascript" src="assets/plugins/directresize/libs/highslide/highslide-ru.js"></script>
 

В этом файле мы заодно можем перекрыть и настройки highslide, например записать

hs.showCredits  = false;

для того, чтобы скрыть сообщение Powered by Highslide JS с переходом на сайт highslide.com.

 

Кодировка комментариев в окне комментариев

В базе комментарии в UTF-8, в модуле отображаются правильно, неправильно только во всплывающем окне, генерируемом highslide. Для устранения этого существенного глюка необходимо везде, где осуществляется обращение к базе данных вписать дополнительный запрос (выделено жирным):

mysql_select_db(str_replace('`', '', $dbase));
@mysql_query("{$database_connection_method} {$database_connection_charset}");
 

Это надо сделать в файлах

assets/modules/easy2/comments.easy2gallery.php
assets/modules/easy2/show.easy2gallery.php

и в тексте самого модуля:
assets/modules/easy2/install/module.easy2gallery.php (после инсталляции этого файла нет, надо исправлять код модуля в админке).

Замечание. Подробнее об этом мы писали в заметке о кодировках в MODx. В ядре MODx это сделано, а вот разработчики расширений об этом забывают. Неправильное отображение проявляется в MySQL 5, если для MySQL установлена кодировка cp1251, а отдельные базы имеют кодировку utf-8.

Автор Easy 2 Gallery явно использует кодировку 1251.

Вид окна комментариев.

Это окно генерируется библиотекой Highslide и использует highslide.css. Там мы изменили ширину окна:

.highslide-html-content {
    display: none;
    width: 600px;
    padding: 0 5px 5px 5px;
}

  Чтобы сделать русские названия кнопок MOVE и CLOSE добавили в highslide-ru.js (в hs.lang):

    moveText : 'Сдвинуть',
    moveTitle : 'Передвинуть окно',
    closeText : 'Закрыть',
    closeTitle : 'Закрыть (esc)'
 

 

Результаты

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

  Вид галереи

Вид галереи

Так отображается слайд:

  Вид слайда из галереи

Вид слайда из галереи

Так отображаются комментарии к слайду:

  Просмотр и добавление комментариев

Просмотр и добавление комментариев

Вот эту галерею мы и оставим для своего сайта. А заметки о MaxiGallery и HighSlide пусть останутся для истории.

Кстати - для использования одного и того же кода эффекта HighSlide в Easy 2 Gallery и в плагине DirectResize, мы изменили вызов эффекта в Easy 2 Gallery - сослались на библиотеку HighSlide,установенную в папке плагина DirectResize.  Правильнее было бы установить библиотеку HighSlide в независимую папку, например assets/libs/highslide и обращаться к ней из всез плагинов и сниппетов. Скорее всего мы так и сделаем.

ДОбавлено 16.11.2009. Иногда при отображении галерей в подписях появляется плохой символ перед "троеточием":

Плохой символ

Долго не удавалось найти, как от него избавиться. Решение такое:

1. В коде сниппета Easy2Gallery в самом начале вставить

mb_internal_encoding("UTF-8");

2. Далее везде заменить вызов строковых функций на мультибайтовые, например

//    if (strlen($l['name']) > $name_len) $l['name'] = substr($l['name'], 0, $name_len-4).'...';
    if (mb_strlen($l['name']) > $name_len) $l['name'] = mb_substr($l['name'], 0, $name_len-2).'...';

То есть:

strlen заменять на mb_strlen;

substr заменять на mb_substr;

strrpos заменять на mb_strrpos;

strstr заменять на mb_strstr;

stristr заменять на mb_stristr.

Для работы с мультибайтовыми строками должна быть подключена библиотека mbstring, т.е в php.ini должна быть раскомментирована строка:

extension=php_mbstring.dll

 На локальном Денвер это расширение не входит в базовый комплект Denwer3_Base_2008-01-13_a2.2.4_p5.2.4_m5.0.45_pma2.6.1.exe!
Расширения для php5 надо скачать и установить дополнительно, на момент написания заметки это Denwer3_PHP5_2008-01-13_5.2.4.exe

23-02-2009 14:17:27



    Содержание раздела «Галерея Easy 2 Gallery»:
Комментарии любых посетителей

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


 
biper
Комментарий
модуль easy 2 gallery перестал быть виден (и доступен для раб
Реплика №5: 09.02.2012, 12:31:55
Проблема:
При этом галереи, созданные ранее (последний раз пользовался созданием галереи неделю назад) на сайте исправно работают. Из раздела «управления модулями» галерея видна как подключенный модуль, коий доступен для редактирования, но при операции «запуск модуля» вместо модуля управления показывает пустое место…
В чем искать затыку? Как побороть ?
Метанарт
Комментарий
Навигация
Реплика №4: 17.06.2011, 03:44:49
Пытались настроить навигацию у highslide в easy2gallery? Я в сниппете параметры вызова highslide отредактировал, подключил нужный css, js,панелька навигации по слайдам появляется, но не работает зараза...
ShaggyDoc
Комментарий
как вывести несколько галерей
Реплика №3: 13.11.2009, 09:41:16
Нет. У сниппета нет параметра, наподобие ID у Ditto.

Во всяком случае при попытке разместить две галереи на странице ничего не получилось. Да это, видимо, и не нужно делать вообще.
GreyNoise
Комментарий
Re: Еще одна галерея для MODx
Реплика №2: 13.11.2009, 08:01:38
Интересно ... а как вывести несколько галерей на одной странице? ... И вообще, можно ли это реализовать?
SiLeNCe
Комментарий
Галерея Easy 2 Gallery
Реплика №1: 06.11.2009, 17:12:53
Не подскажете, как вы решили проблему с установкой? У меня аналогичный случай.