Запускается перед обновлением кэша.
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeCacheUpdate': $modx->log(modX::LOG_LEVEL_ERROR, 'Стартуем!'); break; }
Теперь обновите кэш, и увидите "Стартуем!"
Запускается перед удалением чанка.
Такой плагин выведет сообщение о том, что нельзя удалять чанк:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeChunkFormDelete': if ($id == 69){ $modx->event->output("Ты нахрен обалдел!? Нельзя удалять чанк ".$chunk->get('name')); } break; }
Запускается после отправки формы, но перед тем как сохранить чанк.
Такой плагин выведет сообщение если не заполнено поле описание:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeChunkFormSave': //если обновляем существующий чанк if ($mode == modSystemEvent::MODE_UPD){ //если не заполнено описание if (!$chunk->get('description')){ $modx->event->output("Голову ты дома не забыл?"); } } break; }
Такой плагин запишет в "Журнал ошибок" был ли создан новый чанк или обновлен существующий:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeChunkFormSave': if ($mode == modSystemEvent::MODE_UPD){ echo 'Был обновлен существующий чанк'; } elseif ($mode == modSystemEvent::MODE_NEW){ echo 'Был создан чанк'; } break; }
Запускается перед удалением ресурса.
Такой плагин выведет сообщение о том, что нельзя удалять определенный ресурс, и в логи добавит запись:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeDocFormDelete': //если id=7 if ($id == 7){ $modx->log(modX::LOG_LEVEL_ERROR, 'Кто-то пытался удалить ресурс '.$resource->get('pagetitle')); $response = array( 'success' => false, 'message' => 'Нельзя удалять! А то голову с плеч!', 'data' => array(), ); echo $modx->toJSON($response); exit; } break; }
Такой плагин запишет в "Журнал ошибок" id удаленного ресурса и его детей если они есть:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeDocFormDelete': if (count($childrenIds) > 0) { $children = $childrenIds; } $modx->log(modX::LOG_LEVEL_ERROR, 'Был удален ресурс '.$resource->get('pagetitle').print_r($children)); break; }
Запускается перед сохранением ресурса.
Важно! Перед использование этого события нужно знать.
Такой плагин не разрешит создавать новые ресурсы, и не будет сохранять ресурсы, у которых не заполнено introtext:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeDocFormSave': if ($mode == modSystemEvent::MODE_UPD) { //если не заполнен introtext if (!$resource->get('introtext')){ $modx->event->output("Голову ты дома не забыл, а про 'Ключевые слова' забыл!"); } } elseif ($mode == modSystemEvent::MODE_NEW) { $modx->event->output("Вам нельзя создавать ресурсы!"); } break; }
Такой плагин установит значение поля template=1 у всех ресурсов находящийхся в корне т.е parent=0:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeDocFormSave': if ($resource->get('parent') == 0) { $resource->set('template', '1'); } break; }
Запускается перед тем как пользователь разлогиниться.
Такой плагин запишет в "Журнал ошибок" id вышедшего пользователя и откуда он вышел:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeManagerLogout': $modx->log(modX::LOG_LEVEL_ERROR, 'Пользователь с id'.$user->get('id').' разлогинился в контексте '.$loginContext.' и еще вот в этих'.print_r($addContexts)); break; }
Такой плагин выведет сообщение пользователю, о том что ему нельзя покидать контекст mgr:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeManagerLogout': //если попытается сбежать, мы его остановим if ($loginContext = 'mgr'){ $response = array( 'success' => false, 'message' => 'Нельзя выходить! Ты один из нас.. один из нас.. один из нас.....', 'data' => array(), ); echo $modx->toJSON($response); exit; } break; }
Запускается после того как ресурс загружен но еще не закэшировался. Если ресурс не кэшируемый, то это событие не сработает.
Такой плагин запишет в "Журнал ошибок" id загруженного ресурса:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeSaveWebPageCache': $res = $modx->resource->get('id'); $modx->log(modX::LOG_LEVEL_ERROR, 'Ресурс с id '.$res.' успешно загрузился'); break; }
Запускается перед тем как пользователь разлогиниться.
Такой плагин запишет в "Журнал ошибок" id вышедшего пользователя и откуда он вышел:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeWebLogout': $u = $user->get('id'); $modx->log(modX::LOG_LEVEL_ERROR, 'Пользователь с id '.$u.' разлогинился в контексте '.$loginContext.' и еще вот в этих'.print_r($addContexts)); break; }
Запускается после того как кэш очищен.
Такой плагин выведет на экран и запишет в "Журнал ошибок" результат выполнения:
$eventName = $modx->event->name; switch($eventName) { case 'OnCacheUpdate': $modx->log(modX::LOG_LEVEL_ERROR, print_r($results)); break; }
Запускается после того как чанк удален.
Такой плагин запишет в "Журнал ошибок" id и имя удаленного чанка:
$eventName = $modx->event->name; switch($eventName) { case 'OnChunkFormDelete': $n = $chunk->get('name'); $modx->log(modX::LOG_LEVEL_ERROR, 'Был удален чанк с id '.$id.' его звали '.$n.' сердца у тебя нет!'); break; }
Запускается до изменения чанка, но JS подгружается. Можно использовать для визуализации пользовательских JavaScript в mgr.
Такой плагин подгружает style в head и сделает текст в .x-form-text красным:
$eventName = $modx->event->name; switch($eventName) { case 'OnChunkFormPrerender': $modx->regClientStartupHTMLBlock(' <style> .x-form-text {color: #ff0000;} </style>'); break; }
Запускается во время рендеринга. Можно впихнуть HTML прямиком в форму.
Такой плагин добавить контент чанку и сохранит его:
$eventName = $modx->event->name; switch($eventName) { case 'OnChunkFormRender': //если обновляем существующий if ($mode == modSystemEvent::MODE_UPD) { //добавили контент чанка $chunk->setContent('<p>Контент чанка</p>'); //можно сразу сохранить новый контент $chunk->save(); } break; }
Такой плагин добавить контент чанку если у него нет контента и сохранит его:
$eventName = $modx->event->name; switch($eventName) { case 'OnChunkFormRender': //если обновляем существующий if ($mode == modSystemEvent::MODE_UPD) { //забираем контент чанка $content = $chunk->getContent(); // если контента нет, впихиваем новый if (!$content){ $chunk->setContent('<p>Контент новый</p>'); //можно сразу сохранить новый контент $chunk->save(); } } break; }
Такой плагин добавить контент чанку но не сохранит его:
$eventName = $modx->event->name; switch($eventName) { case 'OnChunkFormRender': //если обновляем существующий if ($mode == modSystemEvent::MODE_UPD) { //меняем все содержимое чанка $chunk->setContent('<p>Контент новый</p>'); $chunk->set('name','NewChunkName'); $chunk->set('description','Описание'); //можно сразу сохранить новый контент $chunk->save(); } break; }
Запускается после сохранения.
Такой плагин запишет в "Журнал ошибок" id сохранённого чанка (нового или только что созданного):
$eventName = $modx->event->name; switch($eventName) { case 'OnChunkFormSave': if ($mode == modSystemEvent::MODE_NEW) { $modx->log(modX::LOG_LEVEL_ERROR, 'Сохранен новый чанк с id '.$id); } elseif ($mode == modSystemEvent::MODE_UPD){ $modx->log(modX::LOG_LEVEL_ERROR, 'Сохранен существующий чанк с id '.$id); } break; }
Запускается после удаления ресурса.
Такой плагин отправит на почту список удаленных ресурсов:
$eventName = $modx->event->name; switch($eventName) { case 'OnDocFormDelete': $modx->getService('mail', 'mail.modPHPMailer'); $modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender')); $modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name')); //Адрес получателя $modx->mail->address('to', 'mail@pitrooo.ru'); //Заголовок $modx->mail->set(modMail::MAIL_SUBJECT, 'Были удалены ресурсы'); //тело письма foreach ($children as $value) { $resource = $modx->getObject('modResource', $value); $name .= '<br>'.$resource->get('pagetitle'); } $contentbody = 'Были удален ресурс с id '.$id.' а вместе с ним '.$name; $modx->mail->set(modMail::MAIL_BODY, $contentbody); /*Отправляем*/ $modx->mail->setHTML(true); if (!$modx->mail->send()) { $modx->log(modX::LOG_LEVEL_ERROR,'Произошла ошибка при попытке отправки сообщения электронной почты: '.$modx->mail->mailer->ErrorInfo); } $modx->mail->reset(); break; }
Запускается перед тем как форма редактирования загрузится.
Такой плагин будет выводить сообщение при клике на pagetitle и добавить текст на страницу:
$eventName = $modx->event->name; switch($eventName) { case 'OnDocFormPrerender': $modx->regClientStartupHTMLBlock(' <script type="text/javascript"> Ext.onReady(function() { var pagetitle = Ext.select("#modx-resource-pagetitle"); pagetitle.on("click",function(node,e){ Ext.MessageBox.alert("Внимание","Ты только что нажал на pagetitle."); },pagetitle); }); </script>'); $modx->event->output('<h2 style="padding: 50px 0 0 15px;">Привет дружище!</h2>'); break; }
Запускается в форме редактирования диспетчера. Удобно для вставки HTML в формах и 2.4+ для установки значений по умолчанию на новые ресурсы
В версии 2.4.0+ можно устанавливать значения для полей:
Рекомендуется для установки на новые ресурсы, для существующих значения будут перезаписаны.
Такой плагин установит значение по умолчанию для новых ресурсов:
$eventName = $modx->event->name; switch($eventName) { case 'OnDocFormRender': if ($mode == modSystemEvent::MODE_NEW) { //устанавливаем значения по умолчанию $resource->set('pagetitle', 'Заголовок'); $resource->set('description', 'Описание'); $resource->set('content', 'Контент'); } break; }
Запускается после того как ресурс сохранен.
Важно! Перед использование этого события нужно знать.
Такой плагин выведет в "Журнал ошибок" массив сохраняемого ресурса:
$eventName = $modx->event->name; switch($eventName) { case 'OnDocFormSave': $modx->log(MODX_LOG_LEVEL_ERROR, print_r($resource->toArray(),true) ); break; }
Такой плагин установит значение ТВ price текущего ресурса равным 128, при ошибке в "Журнал ошибок" добавится запись:
$eventName = $modx->event->name; switch($eventName) { case 'OnDocFormSave': //если у ресурса шаблон=5 if ($resource->get('template') == 5) { // после сохранения значение ТВ price=128 if(!$resource->setTVValue('price', '128')) { $modx->log(modX::LOG_LEVEL_ERROR, 'Возникли проблемы при установке значения ТВ.'); } } break; }И не важно заполнено ли поле price перед сохранением, или нет. Плагин запишет 128.
Запускается после того как ресурс опубликован через контекстное меню документа в дереве ресурсов.
Важно! Перед использование этого события нужно знать.
Такой плагин выведет в "Журнал ошибок" массив публикуемого ресурса, а на экран сообщение об успехе:
$eventName = $modx->event->name; switch($eventName) { case 'OnDocPublished': $response = array( 'success' => false, 'message' => 'Публикация прошла успешно!', 'data' => array(), ); echo $modx->toJSON($response); exit; $modx->log(modX::LOG_LEVEL_ERROR, print_r($resource->toArray(),true)); break; }
Запускается после того как ресурс снят с публикации через контекстное меню документа в дереве ресурсов.
Важно! Перед использование этого события нужно знать.
Такой плагин выведет в "Журнал ошибок" массив снятого с публикации ресурса, а на экран сообщение об успехе:
$eventName = $modx->event->name; switch($eventName) { case 'OnDocUnPublished': $response = array( 'success' => false, 'message' => 'Ресурс снят с публикации!', 'data' => array(), ); echo $modx->toJSON($response); exit; $modx->log(modX::LOG_LEVEL_ERROR, print_r($resource->toArray(),true)); break; }
Запускается при загрузке ресурса из кэша. В MODX 2.3+ для доступа к свойствам ресурса можно использовать объект Event.
Такой плагин заменит pagetitle, значение ТВ и контента:
$eventName = $modx->event->name; switch($eventName) { case 'OnLoadWebPageCache': $modx->event->params['resource']->pagetitle = 'Новый заголовок'; // меняем значение ТВ $tv = $modx->event->params['resource']->price[1] = '128'; /* // массив значений ТВ array ( 0 => 'name', //название ТВ 1 => 'значение', //значение ТВ 2 => 'default', //параметры вывода ТВ 3 => NULL, 4 => 'text', //тип ТВ ) */ $modx->event->params['resource']->_content = 'Новый контент'.$tv; break; }Все закэшированные значения можно посмотреть в core/cache/resource/web/resources/
Запускается каждый раз, когда пользователь успешно входит в манагере после успешного выполнения любой операции проверки. Событие не влияет на процесс авторизации
Такой плагин запишет в "Журнал ошибок" кто и где авторизовался:
$eventName = $modx->event->name; switch($eventName) { case 'OnManagerLogin': $id = $user->get('id'); $modx->log(modX::LOG_LEVEL_ERROR, 'Авторизовался пользователь с id '.$id.print_r($attributes)); break; }
Запускается каждый раз, когда пользователь выходит из контекста. Сессия при этом удаляется.
Такой плагин запишет в "Журнал ошибок" кто и где вышел:
$eventName = $modx->event->name; switch($eventName) { case 'OnManagerLogout': $id = $user->get('id'); $modx->log(modX::LOG_LEVEL_ERROR, 'Вышел пользователь с id '.$id.' из контекста '.$loginContext.' и еще вот этих '.print_r($addContexts)); break; }
Запускается каждый раз, когда кэш для всего сайта очищен.
Такой плагин выведет в консоли массив того что было очищено:
$eventName = $modx->event->name; switch($eventName) { case 'OnSiteRefresh': $modx->log(modX::LOG_LEVEL_ERROR, 'Кэш очищен '.print_r($partitions)); break; }
Запускается каждый раз, когда пользователь меняет пароль.
Такой плагин выведет в Журнал ошибок" кто поменял пароль, какой у него был пароль и на какой он его поменял:
$eventName = $modx->event->name; switch($eventName) { case 'OnUserChangePassword': $name = $user->get('username'); $modx->log(modX::LOG_LEVEL_ERROR, 'Пользователь '.$name.' поменял пароль '.'c '.$newpassword.' на '.$oldpassword); break; }Будьте осторожны
Запускается каждый раз, когда пользователь успешно входит в не в mgr после успешного выполнения любой операции проверки. Событие не влияет на процесс авторизации.
Такой плагин выведет в Журнал ошибок" кто и где авторизовался:
$eventName = $modx->event->name; switch($eventName) { case 'OnWebLogin': $name = $user->get('username'); $modx->log(modX::LOG_LEVEL_ERROR, 'Авторизовался пользователь '.$name.print_r($attributes)); break; }
Запускается каждый раз, когда пользователь выходит из контекста. Сессия при этом удаляется.
Такой плагин выведет в "Журнал ошибок" кто и где разлогинился:
$eventName = $modx->event->name; switch($eventName) { case 'OnWebLogout': $id = $user->get('id'); $modx->log(modX::LOG_LEVEL_ERROR, 'Вышел пользователь с id '.$id.' из контекста '.$loginContext.' и еще вот этих '.print_r($addContexts)); break; }
Запускается после того, как все теги на странице обработаны, но еще не переданы в браузер.
Такой плагин заменит на страницах слова:
switch($eventName) { case 'OnWebPagePrerender': // слова, которые будут заменены $words = array("Товар", "Цена"); // получаем доступ к содержанию страницы $output = &$modx->resource->_output; // заменяем слова $output = str_replace($words,"поменяли",$output); break; }
Запускается в контроллере менеджера, перед оформлением контента.
Такой плагин выведет в "Журнал ошибок" какой контроллер запущен:
$eventName = $modx->event->name; switch($eventName) { case 'OnManagerPageBeforeRender': // какой контроллер загружается print_r($scriptProperties['controller']->config); print_r($scriptProperties['controller']->scriptProperties); break; }
Такой плагин выведет на экран "Доступ запрещен" пользователям, у которых в системных настройках указаны id ресурсов в параметре allow_to_update:
$eventName = $modx->event->name; switch($eventName) { case 'OnManagerPageBeforeRender': switch($scriptProperties['controller']->config['controller']){ //Проверяем права на редактирование документов case 'resource/update': // Проверяем наличие настройки allow_to_update (задается в настройках пользователя) // В ней мы перечисляем, какие документы пользователю можно редактировать // Если настройка задана, но id документа отсутствует в перечисленных разрешенных, // То возвращаем ошибку доступа if($allow_to_update = $modx->getOption('allow_to_update')){ if(!is_array($allow_to_update)){ $allow_to_update = explode(",", $allow_to_update); $allow_to_update = array_map('trim', $allow_to_update); } if(in_array($scriptProperties['controller']->scriptProperties['id'], $allow_to_update)){ $scriptProperties['controller']->failure('Доступ запрещен'); return; } } break; } break; }
Такой плагин подключит нужный нам js на страницы админки:
$eventName = $modx->event->name; switch($eventName) { case 'OnManagerPageBeforeRender': $modx->controller->addJavascript('url/file.js'); break; }
Загружается перед сохранением переменной шаблона в базе.
Такой плагин выведет в "Журнал ошибок" данные сохраняемого ТВ:
$eventName = $modx->event->name; switch($eventName) { case 'OnTemplateVarBeforeSave': //массив твшки, со всеми параметрами print_r($templateVar->toArray()); //проверка на обновление или создание самого тв if ($mode == modSystemEvent::MODE_NEW){ echo 'Был создан новый ТВ'; } elseif ($mode == modSystemEvent::MODE_UPD){ echo 'Был обновлен старый ТВ'; } break; }
Загружается сразу после успешного сохранения шаблона переменной в базе.
Такой плагин выведет в "Журнал ошибок" данные сохраненного ТВ:
$eventName = $modx->event->name; switch($eventName) { case 'OnTemplateVarSave': //массив твшки, со всеми параметрами print_r($templateVar->toArray()); //проверка на обновление или создание самого тв if ($mode == modSystemEvent::MODE_NEW){ echo 'Был сохранен новый ТВ'; } elseif ($mode == modSystemEvent::MODE_UPD){ echo 'Был сохранен старый ТВ'; } break; }
Загружается прямо перед удалением переменной шаблона.
Такой плагин выведет в "Журнал ошибок" данные удаленного ТВ:
$eventName = $modx->event->name; switch($eventName) { case 'OnTemplateVarBeforeRemove': //массив твшки, со всеми параметрами print_r($templateVar->toArray()); break; }
Загружается сразу после удаления переменной шаблона.
Такой плагин выведет в "Журнал ошибок" данные удаленного ТВ:
$eventName = $modx->event->name; switch($eventName) { case 'OnTemplateVarBeforeRemove': //массив твшки, со всеми параметрами print_r($templateVar->toArray()); break; }
Загружается перед тем как корзина очистится.
Такой плагин выведет в "Журнал ошибок" id удаленных ресурсов:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeEmptyTrash': //массив удаленных ресурсов print_r($ids); break; }
Такой плагин выведет сообщение, о том что в корзине присутствует важный документ, и его нельзя удалять:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeEmptyTrash': //если там есть документ с id = 26, то не удаляем if (in_array("26", $ids)){ $response = array( 'success' => false, 'message' => 'ЭЙ! Там есть документ, который нельзя удалять!', 'data' => array(), ); echo $modx->toJSON($response); exit; } break; }
Запускается перед тем, как процесс входа в систему запускается для пользователя, при входе в манагер. Можно использовать для запрета на вход.
Такой плагин выведет в "Журнал ошибок" кто, с каким паролем, и куда пытался войти:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeManagerLogin': $modx->log(modX::LOG_LEVEL_ERROR, 'Пытался войти пользователь с именем '.$username.' и паролем '.$password.print_r($attributes)); break; }
Такой сделает пользователя неактивным когда он будет пытатся авторизоватся:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeManagerLogin': if ($username == 'manager'){ $user = $modx->getObject('modUser', array('username' => $username)); $user->set('active', '0'); $user->save(); } break; }
Запускается перед управляющим контроллером и после проверки разрешений.
Такой плагин выведет в "Журнал ошибок" какой контроллер загрузился:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeManagerPageInit': print_r($action); break; }
Запускается перед тем как удалится плагин.
Такой плагин выведет сообщение о том, что нельзя удалять плагин:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforePluginFormDelete': //если id плагина = 18, выведем сообщение if ($id == 18){ $modx->event->output("Ты нахрен обалдел!? Нельзя удалять плагин ".$plugin->get('name')); } break; }
Запускается после отправки, но до того как плагин будет сохранен в менеджере.
Такой плагин выведет сообщение о том, что не заполнено поле description:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforePluginFormSave': if (!$plugin->get('description')){ $modx->event->output("Голову ты дома не забыл, а про дескрипшен забыл!"); } break; }
Такой плагин запретит создавать новые плагины пользователю с id=1:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforePluginFormSave': //если это новый плагин if ($mode == modSystemEvent::MODE_NEW){ if ($modx->user->get('id') == 1){ $modx->event->output("Тебе нельзя создавать новые плагины!"); } } break; }
Запускается перед тем как удаляется сниппет.
Такой плагин выведет сообщение о том что нельзя удалять сниппеты:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeSnipFormDelete': $modx->event->output("Ты нахрен обалдел!?"); break; }
Запускается после отправки, но до того как сниппет будет сохранен в менеджере.
Такой плагин выведет сообщение о том, что не заполнено поле description:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeSnipFormSave': if (!$snippet->get('description')){ $modx->event->output("Голову ты дома не забыл, а про дескрипшен забыл!"); } break; }
Такой плагин запретит создавать новые сниппеты пользователю с id=1:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeSnipFormSave': //если это новый сниппет if ($mode == modSystemEvent::MODE_NEW){ if ($modx->user->get('id') == 1){ $modx->event->output("Тебе нельзя создавать новые сниппеты!"); } } break; }
Запускается перед тем как шаблон удаляется.
Такой плагин выведет сообщение о том, что нельзя удалять шаблон с id=5:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeTempFormDelete': if ($id == 5){ $modx->event->output("Ты нахрен обалдел!? Нельзя удалять шаблон:".$template->get('templatename')); } break; }Сообщение выведется в том случае, если шаблон НЕ назначен какому либо ресурсу. По умолчанию идет проверка, если шаблон назначен хотябы одному ресурсу, то он не удалится.
Запускается после отправки, но до того как шаблон будет сохранен в менеджере.
Такой плагин выведет сообщение о том, что не заполнено поле icon:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeTempFormSave': if (!$template->get('icon')){ $modx->event->output("Голову ты дома не забыл, а про значок забыл!"); } break; }
Такой плагин запретит создавать новые шаблоны пользователю с id=1:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeTempFormSave': //если это новый шаблон if ($mode == modSystemEvent::MODE_NEW){ if ($modx->user->get('id') == 1){ $modx->event->output("Тебе нельзя создавать новые шаблоны!"); } } break; }
Запускается перед тем как шаблон удаляется.
Такой плагин выведет сообщение о том, что нельзя удалять тв с id=14:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeTVFormDelete': if ($id == 14){ $modx->event->output("Ты нахрен обалдел!? Нельзя удалять ТВ:".$tv->get('name')); } break; }
Запускается после отправки, но до того как ТВшка будет сохранена в менеджере.
Такой плагин выведет сообщение о том, что не заполнено поле description:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeTVFormSave': if (!$tv->get('description')){ $modx->event->output("Голову ты дома не забыл, а про дескрипшен забыл!"); } break; }
Такой плагин запретит создавать новые ТВ пользователю с id=1:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeTVFormSave': //если это новая ТВ if ($mode == modSystemEvent::MODE_NEW){ if ($modx->user->get('id') == 1){ $modx->event->output("Тебе нельзя создавать новые ТВ!"); } } break; }
Запускается перед тем как активировать юзверя.
Такой плагин выведет сообщение о том, что нельзя активировать пользователя с id=2:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeUserActivate': if ($id == 2){ $modx->event->output("Ты нахрен обалдел!? Нельзя активировать пользователя ".$user->get('username').' он опасен!'); } break; }
Такой плагин отправить email активированному пользователю:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeUserActivate': $modx->getService('mail', 'mail.modPHPMailer'); $modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender')); $modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name')); //Адрес получателя $modx->mail->address('to', $user->get('email')); //Заголовок $modx->mail->set(modMail::MAIL_SUBJECT, 'Ты активирован'); //тело письма $contentbody = 'Ваш аккаунт только что был активирован '; $modx->mail->set(modMail::MAIL_BODY, $contentbody); /*Отправляем*/ $modx->mail->setHTML(true); if (!$modx->mail->send()) { $modx->log(modX::LOG_LEVEL_ERROR,'Произошла ошибка при попытке отправки сообщения электронной почты: '.$modx->mail->mailer->ErrorInfo); } $modx->mail->reset(); break; }
Запускается перед тем как удаляется пользователь.
Такой плагин выведет сообщение о том, что нельзя удалять пользователя с id=3:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeUserFormDelete': if ($id == 3){ $modx->event->output("Ты нахрен обалдел!? Нельзя удалять пользователя ".$user->get('username').' он важная шишка!'); } break; }
Запускается после отправки, но до того как пользователь будет сохранен.
Такой плагин выведет сообщение о том, что нельзя сохранять пользователя с id=3:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeUserFormSave': if ($id == 3){ $modx->event->output("Ты нахрен обалдел!? Нельзя сохранять пользователя ".$user->get('username')); } break; }
Такой плагин не разрешит сохранять других пользователей, только себя:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeUserFormSave': //если это старый пользователь if ($mode == modSystemEvent::MODE_UPD){ if ($user->get('id') != $modx->user->get('id')){ $modx->event->output("Тебе нельзя его трогать!"); } } break; }
Запускается перед тем как пользователь логинится (не в манагере).
Такой плагин выведет в Журнал ошибок", кто и где авторизовался:
$eventName = $modx->event->name; switch($eventName) { case 'OnBeforeWebLogin': $modx->log(modX::LOG_LEVEL_ERROR, 'Авторизовался пользователь:'.$username.' по паролю: '.$password.print_r($attributes)); break; }
Запускается перед тем как удаляется категория.
Такой плагин выведет на экран сообщение о том что нельзя удалять категорию:
$eventName = $modx->event->name; switch($eventName) { case 'OnCategoryBeforeRemove': $response = array( 'success' => false, 'message' => 'Нельзя удалять категорию: '.$category->get('category'), 'data' => array(), ); echo $modx->toJSON($response); exit; break; }
Запускается перед тем как сохраняется категория.
Такой плагин выведет на экран сообщение о том что нельзя сохранять категорию:
$eventName = $modx->event->name; switch($eventName) { case 'OnCategoryBeforeSave': $response = array( 'success' => false, 'message' => 'Нельзя сохранять категорию: '.$category->get('category'), 'data' => array(), ); echo $modx->toJSON($response); exit; break; }
Запускается после того как категория будет удалена.
Такой плагин запишет в "Журнал ошибок" какая категория была удалена:
$eventName = $modx->event->name; switch($eventName) { case 'OnCategoryRemove': $modx->log(modX::LOG_LEVEL_ERROR, 'Удалена категория: '.$category->get('category')); break; }
Запускается после того как категория будет сохранена.
Такой плагин запишет в "Журнал ошибок" какая категория была сохранена:
$eventName = $modx->event->name; switch($eventName) { case 'OnCategorySave': $modx->log(modX::LOG_LEVEL_ERROR, 'Сохранена категория: '.$category->get('category')); break; }
Запускается перед тем как чанк удаляется.
Такой плагин выведет на экран сообщение о том, что нельзя удалять чанк с id=70:
$eventName = $modx->event->name; switch($eventName) { case 'OnChunkBeforeRemove': if ($chunk->get('id') == 70){ $response = array( 'success' => false, 'message' => 'Нельзя удалять чанк: '.$chunk->get('name'), 'data' => array(), ); echo $modx->toJSON($response); exit; } break; }
Запускается перед тем как чанк сохраняется.
Такой плагин выведет на экран сообщение о том, что у чанка не заполнено поле описание:
$eventName = $modx->event->name; switch($eventName) { case 'OnChunkBeforeSave': if (!$chunk->get('description')){ $response = array( 'success' => false, 'message' => "Голову ты дома не забыл, а про 'Описание' забыл!", 'data' => array(), ); echo $modx->toJSON($response); exit; } break; }
Запускается после того как чанк удален.
Такой плагин выведет в "Журнал ошибок" массив с параметрами удаленного чанка:
$eventName = $modx->event->name; switch($eventName) { case 'OnChunkRemove': print_r($chunk->toArray()); break; }
Запускается после того как чанк сохранен.
Такой плагин выведет в "Журнал ошибок" массив с параметрами сохраненного чанка:
$eventName = $modx->event->name; switch($eventName) { case 'OnChunkSave': print_r($chunk->toArray()); break; }
Запускается перед тем как контекст будет удален.
Такой плагин выведет на экран сообщение о том, что нельзя удалять контекст с ключом test:
$eventName = $modx->event->name; switch($eventName) { case 'OnContextBeforeRemove': if ($context->get('key') == "test"){ $response = array( 'success' => false, 'message' => 'Нельзя удалять! А то голову с плеч!', 'data' => array(), ); echo $modx->toJSON($response); exit; } break; }
Запускается перед тем как контекст будет сохранен.
Такой плагин выведет в "Журнал ошибок" массив с параметрами сохраненного контекста, но еслу у него не заполнен description То выведет ошибку на экран:
$eventName = $modx->event->name; switch($eventName) { case 'OnContextBeforeSave': if (!$context->get('description')){ $response = array( 'success' => false, 'message' => 'Заполните поле описание!', 'data' => array(), ); echo $modx->toJSON($response); exit; } else { print_r($context->toArray()); } break; }
Запускается перед тем как загрузится форма редактирования.
Такой плагин подгружает style в head и сделает текст в .x-form-text красным:
$eventName = $modx->event->name; switch($eventName) { case 'OnContextFormPrerender': $modx->regClientStartupHTMLBlock(' <style> .x-form-text {color: #ff0000;} </style>'); break; }
Запускается после того как форма редактирования загружена.
Такой плагин добавить имя загруженному контексту:
$eventName = $modx->event->name; switch($eventName) { case 'OnContextFormRender': //если обновляем существующий if ($mode == modSystemEvent::MODE_UPD) { $context->set('name','Название'); //сохраним ему новое имя $context->save(); } break; }
Запускается после того как контекст удаляется.
Такой плагин добавить в "Журнал ошибок" данные удаленного контекста:
$eventName = $modx->event->name; switch($eventName) { case 'OnContextRemove': print_r($context->toArray()); break; }
Запускается каждый раз когда контекст сохраняется.
Такой плагин выведет ошибку на экран если у контекста не заполнено поле name:
$eventName = $modx->event->name; switch($eventName) { case 'OnContextSave': if ($mode == modSystemEvent::MODE_UPD){ if (!$context->get('name')){ $response = array( 'success' => false, 'message' => 'Не заполнено имя!', 'data' => array(), ); echo $modx->toJSON($response); exit; } } break; }
Запускается после того как корзина очищена.
Такой плагин выведет в "Журнал ошибок" сколько и какие ресурсы были удалены:
$eventName = $modx->event->name; switch($eventName) { case 'OnEmptyTrash': $modx->log(modX::LOG_LEVEL_ERROR, 'Корзина была очищена, удалено ресурсов: '.$num_deleted.' Вот они: ').print_r($ids); break; }
Запускается после того как все файлы загружены в диспетчер.
Такой плагин выведет в "Журнал ошибок" какие и куда файлы были загружены:
$eventName = $modx->event->name; switch($eventName) { case 'OnFileManagerUpload': print_r($files); echo 'Файл был загружен сюда: '.$directory; break; }
Срабатывает в самом начале обработки запроса (request). На данном этапе до версии MODX 2.3 обычно выполняли функции маршрутизации — перенаправляли пользователя на определенную страницу в зависимости от условий (аналогично .htaccess). Сейчас это можно делать в «OnMODXInit» событии. В принципе, большой разницы между этими событиями нет — запускаются они сразу друг за другом. Только «OnMODXInit» запускается в классе modX, а «OnHandleRequest» — в классе modRequest, который загружается сразу же после инициализации MODX.
Такой плагин выведет в "Журнал ошибок" кучу, открываем и смотрим:
$eventName = $modx->event->name; switch($eventName) { case 'OnHandleRequest': $request = &$_REQUEST; print_r($request); break; }
Запускается после того как ресурс загружен, но перед тем как будут обработаны все теги.
$eventName = $modx->event->name; switch($eventName) { case 'OnLoadWebDocument': // Сделать ресурс некешируемым $modx->resource->set('cacheable', 0); // Или назначить ему другой шаблон $modx->resource->set('template', 6); break; }
Запускается перед тем как пользователь авторизуется, и его сессия добавить в менеджер. Это событие используется, чтобы позволить войти
Запускается перед тем как форма входа появится для пользователя.
Запускается в контроллере менеджера после обработки контента, но до того как он появится.
Запускается перед тем как страница загрузится в менеджере.
Запускается когда пользователь попадает на ресурс с несуществующим id.
Запускается когда пользователь попадает на закрытые страницы к которым у него нет доступа, и пытается их просмотреть.
Событие срабатывает для каждого тега MODX, т.е. столько раз, сколько тегов будет на странице. В плагине содержание тега доступно через переменную $content.
Событие срабатывает перед тем как удаляется плагин.
Событие срабатывает перед тем как сохранится плагин.
Событие срабатывает перед тем как сохранится плагин.
Событие срабатывает после того как плагин отсоединится от события.
Событие срабатывает после того как плагин будет удален.
Запускается до изменения плагина, но JS подгружается. Можно использовать для визуализации пользовательских JavaScript в mgr.
Запускается во время рендеринга формы.
Запускается после того, как плагин будет сохранен в менеджере.
Запускается после того, как плагин будет удален.
Запускается после того, как плагин будет сохранен.
Запускается после того, как плагин будет сохранен.
Запускается перед тем как набор параметров будет удален.
Запускается перед тем как набор параметров будет сохранен.
Запускается после того, как набор параметров будет удален.
Запускается после того, как набор параметров будет сохранен.
Запускается перед тем как группа ресурсов удаляется.
Запускается перед тем как группа ресурсов сохраняется.
Запускается после того как группа ресурсов удаляется.
Запускается после того как группа ресурсов сохраняется.
Используется для обработки MODx.Browser's реализации файловой системы для пользовательских RTEs.
Может быть использован любой редактор.
Срабатывает при выборе любого выпадающего списка редакторов. Например в системных настройках 'which_editor', вродебы
Срабатывает до того, как страница с настройками загрузится.
Срабатывает перед тем как пользователь будет удален.
Срабатывает перед тем как пользователь будет сохранен.
Срабатывает после того как пользователь будет удален.
Срабатывает после того как пользователь будет создан и обновлен через форму.
Срабатывает когда пользователь не найден при авторизации.
Срабатывает после того как пользователь удален.
Срабатывает после того как пользователь сохранен.
Запускается перед тем как пользователь авторизуется, и его сессия добавить в менеджер. Это событие используется, чтобы позволить войти
Это самое последнее событие. Оно срабатывает, когда страница уж отправлена в браузер и подготовленный ресурс сохранен в кэш.
Срабатывает в конце обработки запроса перед подготовкой ответа. Статус сайта уже определён и идентификатор ресурса (id) найден (он доступен в $modx->resourceIdentifier).
После этого события MODX загружает ресурс и проверяет права доступа к нему для текущего пользователя. И если проверки не прошли, то запускается одно из 2-х следующих событий — «OnPageNotFound» или «OnPageUnauthorized».
Вызывается при инициализации объекта в modx.