Делаем свою мини-панель управления для администратора сайта

май 3 , 2015
Метки:

Через панель управления Modx Revo можно отредактировать какой угодно контент на сайте, причем любое редактирование однообразно и легко запоминается. Но сколько раз Ваш заказчик жаловался на то, как неудобно редактировать отзывы через документы или прайс-лист в migx-поле. В статье показан простой способ, как сделать редактирование сайта дружелюбнее для своего клиента.

Несмотря на громкий заголовок статьи, речь не пойдет о преобразовании админки Modx. Мы всего-навсего рассмотрим простой способ, как дать возможность клиенту выполнять некоторые операции не через админку Modx, а прямо на страничке сайта.

Идея очень проста и активно применяется в различных cms. Допустим, у нас есть страница отзывов, где транслируются все отзывы посетителей сайта. Чтобы удалить отзыв (например, крайне нецензурный или неадкватный), можно зайти в админку, найти нужный ресурс, кликнуть правой кнопкой мыши и нажать удалить. Но мы все знаем, насколько наши клиенты не любят заходить в админку, которая кажется им слишком сложной и неудобной. Поэтому мы дадим им возможность удалять отзывы прямо на страницах сайта. Для всех посетителей сайта страница будет выглядеть как обычно. Но для авторизованного клиента (мы рассмотрим случай для пользователя admin), у каждого отзыва появится новый блок с кнопкой Удалить. Кликнув по ней, отзыв сразу удалится, и изменения станут видны на сайте. Такие ручные операции занимают некоторое время, да и не хочется реализовывать функционал, которые уже есть "из коробки", но клиентам очень нравятся подобные примочки. Тем более, что здесь Вы всегда будете уверены, что ничего лишнего клиент на сайте не удалит и не отредактирует, потому что Вы покажете ему только тот функционал, который нужен, без лишних терминов и полей Modx. Пример будет очень простой. Нам понадобится js-файл, в котором будет написаны скрипты для отправки запросов на сервер, php-файл (или несколько их), где будет сам функционал для работы с Modx API, и самое главное, запомнить несколько простых конструкций. В коде везде используется пользователь admin. Итак, у нас есть блок, выводящий отзыв в браузер из поля migx.

    

Немного модифицируем его

    [ [+modx.user.username:is=`admin`:then=`
    
    `] ]
    

Мы видим, что для обычных посетителей отзывы будут выглядеть, как обычно. Но для авторизованного пользователя admin перед каждым отзывом появится небольшая панель с двумя кнопками Редактировать и Удалить. Скрипт для подключения файла с функциями для нашей "админки" и форму редактирования отзыва можно подключить также через {{+modx.user.username}}
На серверной стороне не забывайте проверять, пришел ли запрос от пользователя admin. Делается это так

    $user = $modx->getUser();
    $username = $user->get('username');
    if ($username !== 'admin') {
        echo 'Неверное имя пользователя';
        exit();
    }
    // Здесь идет нужный код

Как подключить Modx API во внешнем файле и работать с ресурсами, можно прочитать в этих статьях
Подключение Modx API во внешнем файле
Базовые операции с Modx API

Метки:
Заходите в группу в контакте - https://vk.com/webdevkin
Анонсы статей, обсуждения интернет-магазинов, vue, фронтенда, php, гита.
Истории из жизни айти и обсуждение кода.
Как Вам статья? Оцените!