Иван Бондаренко
С нами с 30 января 2013; Место в рейтинге пользователей: #91Информер загруженных изображений для ms2Gallery
Для чего:
Если вы часто обновляете одни и те же альбомы и хотите уведомить об этом пользователей и/или в самом ресурсе хотите задокументировать хронологию обновлений.
Redis Cache (xPDORedisCache)
Решил попробовать использовать redis кэш для modx
создал класс xPDORedisCache, особо не заморачивался переписал мемкеш класс, но возникает проблема, идет пустая выдача и в логе:
UPD: 2016-04-10
Решение далось легко, забыл указать сериализацию
$this->redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);
Устанавливается в /core/xpdo/cache/
в настройках cache_handler = cache.xPDORedisCache
Доступные опции:
redis_server — строка с данными для подключения 'localhost:6379'
redis_auth — пароль для аутентификации
redis_db — целое число >= 0
cache_prefix — по желанию, по сути если задать в redis_db разные значения для разных сайтов, будет то, что надо
Код xpdorediscache.class.php ниже:
создал класс xPDORedisCache, особо не заморачивался переписал мемкеш класс, но возникает проблема, идет пустая выдача и в логе:
modExtensionPackage::loadCache() is not a valid static method.
в общем логе:[Fri Apr 08 23:00:11 2016] [error] [client 130.193.37.24] PHP Warning: Invalid argument supplied for foreach() in /var/www/core/model/modx/modcontext.class.php on line 101
[Fri Apr 08 23:00:11 2016] [error] [client 130.193.37.24] PHP Warning: array_merge(): Argument #2 is not an array in /var/www/core/model/modx/modx.class.php on line 2306
[Fri Apr 08 23:00:11 2016] [error] [client 130.193.37.24] PHP Fatal error: Class 'modUser_' not found in /var/www/core/xpdo/xpdo.class.php on line 770
Есть какие идеи куда копать?UPD: 2016-04-10
Решение далось легко, забыл указать сериализацию
$this->redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);
Устанавливается в /core/xpdo/cache/
в настройках cache_handler = cache.xPDORedisCache
Доступные опции:
redis_server — строка с данными для подключения 'localhost:6379'
redis_auth — пароль для аутентификации
redis_db — целое число >= 0
cache_prefix — по желанию, по сути если задать в redis_db разные значения для разных сайтов, будет то, что надо
Код xpdorediscache.class.php ниже:
Названия tv-параметров для Comparison без словарей
После установки дополнения Comparison для miniShop2 оказалось, что он требует внести в словари названия для каждого tv-параметра (это упомянуто в документации). Но для сайта с уже существующими 300+ tv-параметрами это долго, и контент-менеджеру не объяснишь, что теперь, помимо создания параметра надо ещё куда-то что-то писать… В итоге, на странице сравнения вызов сниппета выглядит так
Автоматическое создание артикула
Может кому пригодится.
Если храним артикул в ТВ и не охото заморачиватся с прописыванием каждого артикула в ручную.
Если нет изначальных артикулов, а их надо придумать.
Артикулы получаются типа: pl-38125 или 438125 во второй версии плагина.
Если храним артикул в ТВ и не охото заморачиватся с прописыванием каждого артикула в ручную.
Если нет изначальных артикулов, а их надо придумать.
Артикулы получаются типа: pl-38125 или 438125 во второй версии плагина.
Вывести только тикеты с рейтингом больше нуля
1 300
Итак, если вам нужно вывести тикеты с рейтингом выше ноля, то эту задачу можно решить двумя способами. Первый для высоконагруженных проектов, второй для менее нагруженных.
Первый вариант (относительно сложный в реализации, но выигрывает по скорости при большой выборке ресурсов):
Первый вариант (относительно сложный в реализации, но выигрывает по скорости при большой выборке ресурсов):
- Заходите в phpmyadmin.
- Выбираете таблицу modx_site_content
- — Переходите в закладку «структура»
- — Внизу открывшегося окна нажимаете ОК (Добавить 1 поле в конец таблицы)
Имя: ticket_rating Тип: int Длина/значение: 10 По умолчанию: Как определено (0) Null: галочка
- Сохраняем
[Messenger] Обновлено. Диалоги для modx
Messenger это система диалогов (личных сообщений) с использованием web-сокетов (comet-server) для мгновенных уведомлений на MODX Revolution.
Демонстрация работы
Логины: test1, test2, test3, test4. Пароли идентичны логинам.
В данный момент умеет:
— создание диалогов (2 и более человек)
— прием и отправка сообщений
— строка "%username% набирает сообщение"
— уведомления о новых сообщениях
— вывод аватарок пользователей
— сортировку диалогов по дате последнего сообщения и кол-ву новых уведомлений
— выделение онлайн пользователей
Демонстрация работы
Логины: test1, test2, test3, test4. Пароли идентичны логинам.
В данный момент умеет:
— создание диалогов (2 и более человек)
— прием и отправка сообщений
— строка "%username% набирает сообщение"
— уведомления о новых сообщениях
— вывод аватарок пользователей
— сортировку диалогов по дате последнего сообщения и кол-ву новых уведомлений
— выделение онлайн пользователей
Редирект и запрет индексации внешних ссылок
Плагин срабатывает на пререндер страницы, отлавливает все внешние ссылки, и, в зависимости от настроек, делает редирект через внутреннюю страницу, добавляет target="_blank", rel=«nofollow» или оборачивает в noindex.
Страница пользователя как на modx.pro
1 1 000
Реализация страницы пользователя как на mоdx.pro (https://modx.pro/users/bezumkin/). Не используются дополнения virtualPage и userProfile\userProfile2 из-за их глючности и конфликтов с другими дополнениями. Все протестировано на рабочем проекте.
msImportExport
Вторая версия пакета обсуждается в только в этом посте
Компонент предназначен для импорта экспорта товаров для miniShop2
Импорт
Импорт происходит из CSV файла. На основании ключевого поля (которое указывается в настройках и по умолчанию имеет значение «article») будет происходить либо добавление нового товара, либо его обновление.
При добавлении нового товара если не указан для него родитель, то товар будет добавлен в базовую категорию.
Компонент предназначен для импорта экспорта товаров для miniShop2
Импорт
Импорт происходит из CSV файла. На основании ключевого поля (которое указывается в настройках и по умолчанию имеет значение «article») будет происходить либо добавление нового товара, либо его обновление.
При добавлении нового товара если не указан для него родитель, то товар будет добавлен в базовую категорию.