MODX. Панели и виджеты

Первая страница которую видит администратор после захода в административную часть сайта содержит в себе панель с виджетами (по адресу www.site.dom/manager/).

  • Панель — сущность, содержащая в себе набор виджетов.
  • Виджет — блок, реализующий какое-либо действие (отображает информацию, позволяет запустить код и т.п.).

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

Панелями (Dashboards) можно управлять пройдя по пути «Системные настройки» ⇒ «Панели» ⇒ вкладка «Панели». По умолчанию там уже имеется панель, можно редактировать ее, а можно создать новую.

Создать или отредактировать виджет (Widgets) можно по соседству, по адресу «Системные настройки» ⇒ «Панели» ⇒ вкладка «Виджеты».

Пример создания виджета просмотра неопубликованных статей.

Способ создания раздела управления виджетами для контент-менеджеров, от Ильи Уткина.

Разбор панели создания виджета

Виджеты могут быть нескольких типов, на момент написания статьи: HTML, Файл, Сниппет, Встроенный PHP-виджет.

  • HTML — кусок HTML кода, для отображения на панели, также поддерживает кэшированные плейсхолдеры и вызовы элементов.
    Hello, [[+modx.user.username]]!
  • Файл — путь к файлу, который будет подключаться при открытии панели.

    Указывая путь к файлу можно использовать плейсхолдеры:

    • [[++base_path]]
    • [[++core_path]]
    • [[++manager_path]]
    • [[++assets_path]]
    • [[++manager_theme]]

    При использовании файла можно возвращать обработанный результат, или имя класса:

    // возвращаем результат
    <?php
    return 'Hello, world!';
    
    // определяем и возвращаем имя класса
    class modDashboardWidgetHelloWorld extends modDashboardWidgetInterface { 
        public $version = '1.0';
     
        public function render() {
            $o = 'Hello, World! Version: '.$this->version;
            return $o;
        }
    }
    return 'modDashboardWidgetHelloWorld';

    Доступные переменные:

    • $modx — ссылка на экземпляр MODX.
    • $scriptProperties — массив свойств текущего виджета.
  • Сниппет — сниппет который будет обрабатываться при открытии панели. В содержимом указывается имя сниппета:
    CustomDashboardSnippetName
  • Встроенный PHP-виджет —  Inline PHP, строковая запись PHP кода.

    Пример:

    <?php
    return 'Hello, World!';

    Особенности:

    • Не используйте "echo", так как он будет игнорироваться;
    • Не используйте $modx->resource в вашем виджете, так как нет активного ресурса для панели инструментов
    • Не помещайте закрывающий тег PHP в конец кода.

Стоит помнить, что панель менеджера не привязана к какому либо ресурсу, поэтому вывод соответствующих тегов, либо использование конструкции $modx->resource в каком либо из типов виджетов, не приведут к рабочему результату.