Антон Соловьёв
С нами с 14 января 2013; Место в рейтинге пользователей: #477TinyMCE + Tickets + выбор главной картинки в TV
Добрый день. Понадобился функционал удобного редактора textarea во фронтенде Tickets, а также сделать возможность пользователю выбрать главную картинку для тикета.
Вот что получилось:
Инструкция под катом
Вот что получилось:
Инструкция под катом
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 ниже:
Идеальный сервер для новичков
Хотел поделиться с новичками инструкцией по настройке сервера на Ubuntu 14.04.
Статья для новичков от новичка.
В этой статье я не претендую на Правильный хостинг для MODX Revolution от Василия. В своей статье Василий советует использовать Ajenti, мне же больше нравится VestaCP, её мы и установим.
В статье мы первоначально настроим сервер, установим хостинг панель, проверим потребляемые ресурсы. Так-же подходит любым CMS.
В качестве сервера я использовал VDS Разминка за 90р/месяц от firstvds.ru (Реферальная ссылка). Выбрал только из-за цены.
Сам я пользуюсь хостингом от modhost.pro:
В конечном итоге мы получим готовый рабочий сервер с простой хостинг панелью, настраиваемыми бекапами, свистелками.
Статья для новичков от новичка.
В этой статье я не претендую на Правильный хостинг для MODX Revolution от Василия. В своей статье Василий советует использовать Ajenti, мне же больше нравится VestaCP, её мы и установим.
В статье мы первоначально настроим сервер, установим хостинг панель, проверим потребляемые ресурсы. Так-же подходит любым CMS.
В качестве сервера я использовал VDS Разминка за 90р/месяц от firstvds.ru (Реферальная ссылка). Выбрал только из-за цены.
Сам я пользуюсь хостингом от modhost.pro:
В конечном итоге мы получим готовый рабочий сервер с простой хостинг панелью, настраиваемыми бекапами, свистелками.
Создаю свой компонент, нужна ваша помощь
Здравствуйте. Делаю свой компонент биллинга, простой сниппет с ценами. С MODX 2.3.3 перестали работать выводы полей с записями из таблицы бд. Всё создано, прописаны поля таблиц, но данные не выводятся. Вот что находится в файле отвечающим за вывод списка записей из базы /www/test.site.ru/core/components/billings/processors/mgr/billing/getlist.php
<?php
/**
* Get a list of Billings
*
* @package billings
* @subpackage processors
*/
/* setup default properties */
$isLimit = !empty($scriptProperties['limit']);
$start = $modx->getOption('start',$scriptProperties,0);
$limit = $modx->getOption('limit',$scriptProperties,20);
$sort = $modx->getOption('sort',$scriptProperties,'name');
$dir = $modx->getOption('dir',$scriptProperties,'ASC');
$query = $modx->getOption('query',$scriptProperties,'');
/* build query */
$c = $xpdo->newQuery('Hosting');
if (!empty($query)) {
$c->where(array(
'id:LIKE' => '%'.$query.'%',
'OR:vid:LIKE' => '%'.$query.'%',
'OR:name:LIKE' => '%'.$query.'%',
'OR:cost:LIKE' => '%'.$query.'%',
'OR:sort:LIKE' => '%'.$query.'%',
'OR:hdd:LIKE' => '%'.$query.'%',
'OR:domains:LIKE' => '%'.$query.'%',
'OR:db:LIKE' => '%'.$query.'%',
'OR:ftp:LIKE' => '%'.$query.'%',
'OR:id_price:LIKE' => '%'.$query.'%',
));
}
$count = $modx->getCount('Hosting',$c);
$c->sortby($sort,$dir);
if ($isLimit) $c->limit($limit,$start);
$billings = $modx->getIterator('Hosting', $c);
/* iterate */
$list = array();
foreach ($billings as $billing) {
$billingArray = $billing->toArray();
$list[]= $billingArray;
}
return $this->outputArray($list,$count);
Взято из дополнения Doodles и переделано под свои запросы. Есть мысли как заставить это работать? Буду очень признателен. Новые версии MODX: 2.3.0 и 2.2.15
Наконец-то вышла давно ожидаемая стабильная версия MODX 2.3.0 — вот запись в официальном блоге и перевод. Полный список изменений на английском можно посмотреть здесь, а скачать вот здесь.
С этого момента 2.3.0 становится актуальной рабочей веткой MODX, а 2.2.х устаревает. В связи с чем у меня к вам просьба начать тестировать наши основные дополнения на предмет работы в новом MODX. Точно знаю, что есть проблемы у miniShop2 из-за необычного расположения в меню, может и еще что всплывет.
Для тестирования можно использовать бесплатный аккаунт на нашем хостинге. По вопросам, касающихся платных дополнений обращаться как обычно — в поддержку магазина.
Сообщения об ошибках всех дополнений в MODX 2.3 прошу писать в одной этой теме. Из других мест комментарии буду переносить сюда, или вовсе удалять.
С этого момента 2.3.0 становится актуальной рабочей веткой MODX, а 2.2.х устаревает. В связи с чем у меня к вам просьба начать тестировать наши основные дополнения на предмет работы в новом MODX. Точно знаю, что есть проблемы у miniShop2 из-за необычного расположения в меню, может и еще что всплывет.
Для тестирования можно использовать бесплатный аккаунт на нашем хостинге. По вопросам, касающихся платных дополнений обращаться как обычно — в поддержку магазина.
Сообщения об ошибках всех дополнений в MODX 2.3 прошу писать в одной этой теме. Из других мест комментарии буду переносить сюда, или вовсе удалять.
Вирусы на старых версиях MODX Revo
Всем привет!
Не знаю, можно ли здесь создавать темы подобного плана…
В общем, у нас веб-студия. Делаем сайты на MODX. После создания сайта, они остаются у нас на сервере.
Сегодня получили жалобу: с айфона и айпада, сайт загружается нормально, но при клике на любую ссылку идет переход в Apple Store на приложение AviaSales.
Если заходить с Андроида (телефон/планшет) зараженный сайт предлагает «обновить браузер».
Запуск антивируса на сервере — нужных вирусов не нашел…
Не знаю, можно ли здесь создавать темы подобного плана…
В общем, у нас веб-студия. Делаем сайты на MODX. После создания сайта, они остаются у нас на сервере.
Сегодня получили жалобу: с айфона и айпада, сайт загружается нормально, но при клике на любую ссылку идет переход в Apple Store на приложение AviaSales.
Если заходить с Андроида (телефон/планшет) зараженный сайт предлагает «обновить браузер».
Запуск антивируса на сервере — нужных вирусов не нашел…
Отправляем заголовки Last-Modified и Not Modified
Написал небольшой плагинчик для отправки браузеру заголовка Last-Modified и, если браузер спросит If modified since — ответа 304 Not Modified
создание секции tickets через процессоры
Интересует создание секции tickets через процессоры.
Нашел статью о процессорах в MODX — хочу применить на практике.
Нашел статью о процессорах в MODX — хочу применить на практике.
Создание своего события в MODX
Сижу посматриваю исходники minishop. Заинтересовался созданием собственных событий в MODX.
Если да, то каким образом теперь его отследить?
$response = $this->ms2->invokeEvent('msOnBeforeAddToOrder', array(
'key' => $key,
'value' => $value,
'order' => $this
));
Правильно ли я понял что вот данный кусок кода и вызывает событие?Если да, то каким образом теперь его отследить?
Расширенные поля пользователей
Небольшая пошаговая инструкция, как научиться сохранять любые интересующие данные о юзере в специальное поле extended.
На самом деле, это никакой не секрет. Во многих объектах MODX есть специальное поле типа JSON, которое хранится в БД как текст, например, properties у modResource и extended у modUserProfile.
При работе с объектами xPDO, JSON текст из этих полей превращается в массивы. То есть, общий принцип выглядит так:
На самом деле, это никакой не секрет. Во многих объектах MODX есть специальное поле типа JSON, которое хранится в БД как текст, например, properties у modResource и extended у modUserProfile.
При работе с объектами xPDO, JSON текст из этих полей превращается в массивы. То есть, общий принцип выглядит так:
// id нужного пользователя
$user_id = 15;
// Получаем объект modUser
if ($user = $modx->getObject('modUser', $user_id)) {
// Получаем связанный с ним профиль пользователя
if ($profile = $user->getOne('Profile')) {
// Получаем специальное поле extended
$extended = $profile->get('extended');
// Добавляем новое значение
$extended['mykey'] = 'mydata';
// И сохраняем обратно в профиль
$profile->set('extended', $extended);
$profile->save();
}
}
Самое приятное, что эти данные вы можете не только просмотреть на странице пользователя, но и изменить.