Клиент попросил сделать чтобы уведомления с формы шли ему в ВК, В принципе решений в сети много на PHP и JS. Но вот простого гайда по созданию данной функции в modx я не нашел.

Вот моё простое решение. Нам понадобиться получить от VK access token, Установить AjaxForm и Formit. Как ставить 2 последних рассказывать не буду.

Получаем access token от VK

  1. Создаем Тут приложение типа Standalone-приложение, с любым именем на ваш выбор. Из настроек приложения получаем ID приложения
  2. Правим ссылку
    oauth.vk.com/authorize?client_id=0000000&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=offline,messages&response_type=token&v=5.37
    Где client_id=0000000 вместо нулей пишем ID своего приложения.
    И переходим по этой ссылке

  3. нас перенаправляет на страницу с предупреждением. И как раз тут из адресной строки копируем всё после access_token=

Делаем отправку формы в ВК через Formit, на примере простой формы

Вызываем сниппет AjaxForm. Я делал так чтобы форма приходила и на почту и в vk

// Вызов AjaxForm
[[AjaxForm?
	&snippet=`FormIt`
        &form=`form`
        &hooks=`email, vk-message`
        &emailSubject=`Заголовок сообщения для почты`
        &emailTo=`Ваш email`
        &validate=`name:required,phone:required`
]]

// Чанк form содержащий саму форму обратной связи
<form action="#" name="form" id="form">
	 <input type="text" name="name" placeholder="Ваше имя">
	 <input type="tel" name="phone" placeholder="Телефон">
	 <input type="submit" value="Продать авто"> 
</form>


Как можно заметить у сниппета AjaxForm в &hooks по мимо стандартного email (Который отвечает за отправку на почту) еще есть и vk-message. Вот его мы и создадим, он будет как раз отправлять нам форму в вк.

Создаем сниппет vk-message

<?php
//ID пользователя которому будут отсылаться сообщения
$user_id = "00000000";

//Сюда мы вводим наш токен. Полученный из ссылки.
$access_token= " sadascsdsadasdasfafaweasdsadasdasdasdasdasdsad";

//Версия VK API. Оставляем без изменений
$v = 5.37;

// Создаем переменную под текст нашего сообщения
$messages= "";

//Создаем массив под переменные, В нем будет текст сообщения
$arr = array();

$formName = $modx->getOption('formName', $formit->config, 'form-'.$modx->resource->get('id'));
$values = $hook->getValues();

//Задаем нашим input переменные
$name = $values['name'];
$phone = $values['phone'];

if($name){
	$arr["Имя"] = $name;
}
if($phone){
	$arr["Телефон"] = $phone;
}

// Собираем наш массив и добавляем в переменную messeges
foreach($arr as $key => $value) { 
     $messages .= $key.":".$value. "\n" ; 
  }

// Собираем нашу ссылку для запроса
$vkurl="https://api.vk.com/method/messages.send";
$params=[
    'user_id' => $user_id,
    'message' => $messages,
    'v' => $v,
    'access_token' => $access_token
];
$sendmess = curl_init($vkurl);
curl_setopt($sendmess, CURLOPT_HEADER, false);
curl_setopt($sendmess, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($sendmess, CURLOPT_POST, 1);
curl_setopt($sendmess, CURLOPT_POSTFIELDS, ($params));
curl_setopt($sendmess, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($sendmess);
$modx->log(MODX_LOG_LEVEL_ERROR, $result);
curl_close($sendmess);
return true;

И всё должно заработать. Проверяем