В целом 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
Написать комментарий
Реплика №5: 09.02.2012, 12:31:55
Реплика №4: 17.06.2011, 03:44:49
Реплика №3: 13.11.2009, 09:41:16
Реплика №2: 13.11.2009, 08:01:38
Реплика №1: 06.11.2009, 17:12:53