27 мая 2016, 16:31
MODX Revo API: Подборка кода для работы с API MODX
Для написания простого сниппета в MODX Revolution не нужно знать весь API, достаточно иметь подсказки по работе API, например: как получить id документа, как получить поля документа, как получить тв поля документа.
В данной подборке вы найдете для себя, коды которые облегчат создание своего сниппета и помогут разобраться в других сниппетах.
Содержание:
- Работа с документом:
- Работаем с контекстом сайта
- Получаем параметры сниппета
- Вывод и логирование ошибок
- Отправка писем через MODX API
1.1) Получаем объект документа:
Данный код поможет получить объект документа, где был вызван сниппет. Он пригодится нам для работы с документом, например: для замены значения полей, для получения значения полей и т.д.$resource = $modx->resource;
Для получения объекта другого документа нужно использовать код.
/* Для получения документа по Id, в данном примере получит документ с id 62 */ $resource = $modx->getObject('modResource', 62); /* В данном примере будет получен документ с pagetitle равному Документ */ $resource = $modx->getObject('modResource', array('pagetitle' => 'Документ'));
1.2) Получаем и изменяем значения полей документа:
После получения объекта документа вы можете получить значения его полей или заменить их.$resource->get('id'); // Получаем id документа $resource->get('pagetitle'); // Получаем pagetitle документа $resource->set('pagetitle', 'Новый заголовок'); // Заменяем pagetitle документа $resource->getTVValue('price'); // Получаем значение ТВ поля price $resource->setTVValue('price', '2000'); // Заменяем значение ТВ поля price
1.3) Получаем ссылку на документ
Для получения ссылки используйте код.$modx->makeUrl(12); // 12 - id документа $modx->makeUrl(12, '', array('key' => 'value')); // Выведет адрес с get параметром
Данный код выведет полный url к документу.
$modx->makeUrl(12, '', '','full'); // 12 - id документа
1.4) Создание документа с помощью API MODX:
С помощью API MODX можно создать документ.$resource = $modx->newObject('modDocument'); // Создаем объект $resource->set('template', 1); // Присваиваем документу нужный нам шаблон $resource->set('pagetitle', 'Новый документ'); // Присваиваем документу pagetitle $resource->set('parent', 5); // Выбираем родительский ресурс для документа $resource->save(); // Сохраняем документ
1.5) Удаление документа:
Документ будет удален сразу из базы.$resource = $modx->getObject('modResource', 62); // Получаем документ $resource->remove(); // Удаляем документ
2) Работаем с контекстом сайта:
Для получения ключа текущего контекста используется код, данный пример вернет, например:web
для сайта или mgr
для админки, также любые другие ключи, если есть еще контексты.$modx->context->key;
Для переключения контектса. Данные код переключит контекст на
web
.$modx->switchContext('web');
Получение опций контекста.
/* Вернет значение опции emailsender, эквивалент info@frontblog.ru */ $modx->getOption('emailsender'); /* Вернет id основной страницы указанной в настройках - 1 */ $modx->getOption('site_start'); /* Возвращает опцию emailsender, если эта опция пуста или равно 0, тогда ** возвращает значение по умолчанию, в данном примере это mail@mail.com */ $modx->getOption('emailsender', null, 'mail@mail.com'); /* Возвращает опцию emailsender, если эта опция только пуста, тогда возвращает ** значение по умолчанию, в данном примере это mail@mail.com */ $modx->getOption('emailsender', null, 'mail@mail.com', true);
3) Получаем параметры сниппета:
В этом примере мы получим значение опции сниппета, но если она пуста вернем значение по умолчанию. Первым параметром передаем название нужной нам опции, вторым параметром указываем$scriptProperties
— это все опции сниппета, третьим параметром передаем значение по умолчанию.$modx->getOption('tpl', $scriptProperties, 'ResourceItem');
4) Вывод и логирование ошибок:
При создании сниппета могут возникать ошибки, для вывода ошибок используйте код.error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1);
Для добавления ошибок в лог файл MODX.
$modx->log(modX::LOG_LEVEL_ERROR, 'Error!');
5) Отправка писем через MODX API:
В MODX API предусмотрена возможность отправки почты./* Включаем сервис почты */ $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@frontblog.ru'); /* Тут указываем заголовок письма */ $modx->mail->set(modMail::MAIL_SUBJECT, 'Ваша учётная запись активирована'); /* Указываем чанк с содержимым письма, от туда будет браться сообщение для письма. ** Можно обойтись без чанка замените $modx->getChunk('email') на свой текст */ $modx->mail->set(modMail::MAIL_BODY, $modx->getChunk('email')); /* Отправка письма */ $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();
К письму можно привязать файл, для этого нужно указать путь от корня сайта
/* $attachment заменить на путь к файлу */ $modx->mail->attach($attachment);
Вернуться назад