Создаем новый плагин (имя придумываете сами), отмечаем нужные события и в путь
$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; }
Такой плагин подгружает style в head и сделает текст в .x-form-text красным: $eventName = $modx->event->name; switch($eventName) { case 'OnChunkFormPrerender': $modx->regClientStartupHTMLBlock(' '); break; }
Такой плагин добавить контент чанку и сохранит его: $eventName = $modx->event->name; switch($eventName) { case 'OnChunkFormRender': //если обновляем существующий if ($mode == modSystemEvent::MODE_UPD) { //добавили контент чанка $chunk->setContent('Контент чанка
'); //можно сразу сохранить новый контент $chunk->save(); } break; } Такой плагин добавить контент чанку если у него нет контента и сохранит его: $eventName = $modx->event->name; switch($eventName) { case 'OnChunkFormRender': //если обновляем существующий if ($mode == modSystemEvent::MODE_UPD) { //забираем контент чанка $content = $chunk->getContent(); // если контента нет, впихиваем новый if (!$content){ $chunk->setContent('Контент новый
'); //можно сразу сохранить новый контент $chunk->save(); } } break; } Такой плагин добавить контент чанку но не сохранит его: $eventName = $modx->event->name; switch($eventName) { case 'OnChunkFormRender': //если обновляем существующий if ($mode == modSystemEvent::MODE_UPD) { //меняем все содержимое чанка $chunk->setContent('Контент новый
'); $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 .= '
'.$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; }
Такой плагин не разрешит создавать новые ресурсы, и не будет сохранять ресурсы, у которых не заполнено 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;
}
Такой плагин запишет в "Журнал ошибок" id загруженного ресурса:
$eventName = $modx->event->name;
switch($eventName) {
case 'OnBeforeSaveWebPageCache':
$res = $modx->resource->get('id');
$modx->log(modX::LOG_LEVEL_ERROR, 'Ресурс с id '.$res.' успешно загрузился');
break;
}