Константы путей в MODX, отправка почты и другое
Константы путей к каталогам MODX, пример отправки писем из сниппета, вывод копирайта средствами движка и принудительная очистка кэша. Эти небольшие, но полезные заметки я решил объединить в одну статью.
- Константы путей к каталогам MODX
- Отправка почтового сообщения средствами API MODX
- Вывод копирайта средствами MODX
- Чистка таблицы с сессиями
В MODX можно использовать постоянные константы, содержащие пути к основным директориям движка. Константы эти определяются при помощи PHP функции «define» в файле «config.inc.php». Полезность этих постоянных заключается в том, что при переносе сайта на другой хостинг достаточно будет поменять пути в одном конфигурационном файле, чтобы все сниппеты и скрипты остались в рабочем состоянии.
КОНСТАНТА | ПРИМЕР |
---|---|
MODX_BASE_PATH | /home/www/ |
MODX_ASSETS_PATH | /home/www/assets/ |
MODX_CORE_PATH | /home/www/core/ |
MODX_MANAGER_PATH | /home/www/manager/ |
MODX_CONNECTORS_PATH | /home/www/connectors/ |
MODX_PROCESSORS_PATH | /home/www/core/model/modx/processors/ |
MODX_ASSETS_URL | /assets/ |
MODX_MANAGER_URL | /manager/ |
MODX_CONNECTORS_URL | /connectors/ |
MODX_URL_SCHEME | http:// или https:// |
Описывать не буду, из таблицы должно быть понятно. Пример использования в сниппете:
require_once(MODX_ASSETS_PATH.'includes/idna_convert.class.php');
Отправка почтового сообщения средствами API MODX
MODX для отправки писем использует популярный скрипт PHPMailer. Но при этом использует в качестве прослойки свой API. Рассмотрим как отослать сообщение из какого-то сниппета или плагина.
$body = 'Текст письма'; $modx->getService('mail', 'mail.modPHPMailer'); $modx->mail->set(modMail::MAIL_BODY,$body); $modx->mail->set(modMail::MAIL_FROM,'info@RealAdmin.ru'); $modx->mail->set(modMail::MAIL_FROM_NAME,'RealAdmin'); $modx->mail->set(modMail::MAIL_SUBJECT,'Почтовое сообщение с сайта RealAdmin.ru'); $modx->mail->address('to','exemple-1@mail.ru'); $modx->mail->address('to','exemple-2@mail.ru'); $modx->mail->setHTML(true); if (!$modx->mail->send()) { $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo); } $modx->mail->reset();
В примере отсылается письмо на два почтовых адреса с указанием отправителя «info@RealAdmin.ru». Если сообщение не доставлено, то проверяйте корректность работы модуля sendmail на хостинге и не забудьте просмотреть письма в спаме.
Вывод копирайта средствами MODX
В дополнение информация о том, как вывести год в MODX, чтобы сделать копирайт. Используем PHX, который встроен в ядро движка.
[[+phx:input=`now`:strtotime:date=`%Y`]]
Результат: 2024
Чистка таблицы с сессиями
В MODX сессии хранятся в базе данных и при правильной настройке хостинга устаревшие сессии удаляются автоматически. Но бывают случаи когда этого не происходит и таблица разрастается до огромных размеров. В этом случае можно очистить старые сессии вручную. Для этого на стороне сайта необходимо исполнить код.
$session = new modSessionHandler($modx); $session->gc();
Если сессий скопилось очень много, то выполнение операции может занять длительное время. До нескольких минут. Стоит помнить, что при выполнении операций удалятся не все сессии, а только устаревшие.