
Кроме того на сайте есть интерактивный календарь со всеми православными праздниками (сами события берем с сайта www.pravoslavie.ru — оказывается, давно уже есть адекватное API, с помощью которого можно получить очень подробную информацию по каждому дню).
Но большую часть времени, конечно, потратили на приложения для iOS и Android. Под катом, как всегда, подробности)
Я был приятно удивлен, когда понял, насколько просто в MODX сделать API для работы с мобильными приложениями. Серверная разработка на MODX — просто сказка. Честно.
Первое, что понадобилось — это получать на смартфоне список статей. Все данные передаются с сервера в приложение в виде JSON. Для MODX — раз плюнуть:
return $modx->toJSON($output);
Далее — надо было на каждый день года получить данные и сохранить их, чтобы потом отдать в мобильное приложение разом все дни. Написали парсер и сохраняем данные в «вечном кеше». Если будут какие-то исправления, надо только перезапустить парсер — он запишет в кеш уже новые данные (например, в другом формате).
$cachename = 'calendar-1.0.4'; if (empty($cacheKey)) $cacheKey = 'api'; if (empty($cacheHandler)) $cacheHandler = $modx->getOption( 'cache_resource_handler', null, $modx->getOption(xPDO::OPT_CACHE_HANDLER, null, 'xPDOFileCache')); if (!isset($cacheExpires)) $cacheExpires = (integer) $modx->getOption( 'cache_resource_expires', null, $modx->getOption(xPDO::OPT_CACHE_EXPIRES, null, 0)); if (empty($cacheElementKey)) $cacheElementKey = $cachename; $cacheOptions = array( xPDO::OPT_CACHE_KEY => $cacheKey, xPDO::OPT_CACHE_HANDLER => $cacheHandler, xPDO::OPT_CACHE_EXPIRES => $cacheExpires ); // ... $modx->cacheManager->set($cacheElementKey, $output, $cacheExpires, $cacheOptions);
Ну а отправлять пуши при публикации статьи — одно удовольствие. Все делаем с помощью стандартных средств MODX — плагинов! Один плагин на событие OnDocPublished и пуши отправляются сами собой)
Ну и спасибо большое Василию Наумкину за pdoTools, eventsCalendar2, Tickets и Jevix.
2 комментария