Блог для вебмастеров и разработчиков
27 мая 2016, 16:31

MODX Revo API: Подборка кода для работы с API MODX

MODX Revo API

Для написания простого сниппета в MODX Revolution не нужно знать весь API, достаточно иметь подсказки по работе API, например: как получить id документа, как получить поля документа, как получить тв поля документа.

В данной подборке вы найдете для себя, коды которые облегчат создание своего сниппета и помогут разобраться в других сниппетах.

Содержание:


  1. Работа с документом:
  2. Работаем с контекстом сайта
  3. Получаем параметры сниппета
  4. Вывод и логирование ошибок
  5. Отправка писем через 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);
Комментарии ()
    Добавить комментарий