Виджет на сайте MODX
Готового плагина под MODX нет, но поставить виджет — одна строка в шаблоне или маленький плагин на системном событии, если нужна галочка «только для вошедших в Manager».
Готового модуля под MODX Revolution нет: пакет расширения (Extra) собирается штатной сборкой самого MODX, а не файлами из репозитория, поэтому его нельзя отдать одним ZIP-архивом, как плагин WordPress. Зато поставить виджет — минута работы, платный тариф Правки.Про нужен так же (какие бывают).
Способ 1. Строка в шаблоне
Самый быстрый вариант, если у вас есть доступ к шаблону или чанку футера сайта (обычно подключается тегом [[$Footer]]). Вставьте перед закрывающим </body>:
<script src="https://pravki.pro/widget.js" data-key="ВАШ_КЛЮЧ" defer></script>
Ключ виджета — в кабинете Правки.Про: проект → «Виджет на сайте» → «Код для установки». Готово: кнопка «Правка» появится на всех страницах, которые используют этот шаблон.
Способ 2. Плагин на системном событии
Нужна галочка «только для вошедших в Manager» — тогда без правки шаблона не обойтись, зато ключ и адрес сервиса потом меняются в системных настройках, а не в коде.
- Создайте системные настройкиСистема → Системные настройки → «+ Создать настройку»:
pravkipro_widget_key(строка),pravkipro_widget_admins_only(да/нет),pravkipro_widget_host(строка, необязательно). - Создайте плагинЭлементы → Плагины → «+ Новый плагин», вставьте код ниже, на вкладке «Системные события» подключите
OnWebPagePrerender. - Заполните настройкиВ
pravkipro_widget_key— ключ из кабинета Правки.Про (проект → «Виджет на сайте»). Остальное можно оставить пустым.
<?php
$key = trim((string) $modx->getOption('pravkipro_widget_key', null, ''));
if ($key === '') return;
$adminsOnly = (bool) $modx->getOption('pravkipro_widget_admins_only', null, false);
if ($adminsOnly && !$modx->user->isAuthenticated('mgr')) return;
$host = rtrim((string) $modx->getOption('pravkipro_widget_host', null, ''), '/');
if ($host === '') $host = 'https://pravki.pro';
$snippet = '<script src="' . htmlspecialchars($host, ENT_QUOTES) . '/widget.js" data-key="'
. htmlspecialchars($key, ENT_QUOTES) . '" defer></script>';
$output = $modx->resource->_output;
if (stripos($output, '</body>') !== false) {
$modx->resource->_output = str_ireplace('</body>', $snippet . "\n</body>", $output);
} else {
$modx->resource->_output = $output . $snippet;
}OnWebPagePrerender срабатывает после генерации страницы, поэтому плагин правит уже готовый HTML напрямую — это штатный способ добавлять код в футер MODX без правки каждого шаблона.
Что попадает в правку
- Скриншот с выделенным местом — снимок видимой области с рамкой вокруг элемента, по которому кликнул клиент. Разбирать CSS-селектор человеку не нужно.
- Запись действий — по желанию. Клиент нажимает «Записать действия» и показывает баг курсором. Поля ввода в записи маскируются, запись не идёт фоном.
- Контекст страницы — адрес, размер окна, браузер и плотность пикселей.
- Из личного — только имя. Клиент вводит его сам, оно остаётся в localStorage его браузера.
Кнопка «Правка» не появилась
| Причина | Что сделать |
|---|---|
| Виджет выключен в кабинете | Проект → «Виджет на сайте» → переключатель «Виджет включён». Архивный проект тоже гасит виджет. |
| Не выбран пул для правок | В том же окне выберите пул, в который падают правки с сайта. |
| Пул закрыт | Закрытый и выполненный пул правок не принимает — откройте его или выберите другой. |
| Пул со сквозным шифрованием | У сниппета нет пароля пула, шифровать нечем. Нужен обычный пул (подробнее). |
| Нужен платный тариф | Виджет на сайте доступен на платных тарифах Правки.Про. |
| Домен не разрешён | Если в кабинете задан список разрешённых сайтов — добавьте в него адрес этого сайта. |
| Кеш вывода | Если шаблон или чанк с виджетом кешируется (тег [[$Footer]] без !), очистите кеш сайта после изменений: Система → Очистить кеш сайта. |
| Плагин не подключён к событию | Способ 2: проверьте, что на вкладке «Системные события» плагина отмечен OnWebPagePrerender — без этого код не выполняется. |
Разработчику
Ключ виджета не секрет: он и так виден в исходном коде страницы и позволяет только создавать правки в целевом пуле — прочитать им нельзя ничего. Чтобы виджет не работал на посторонних сайтах, задайте в кабинете список разрешённых доменов.