Создание и обновление элементов

16 февраля 2023, 23:00

В комплекте с компонентом MigxPageConfigurator поставляется скрипт mgr_elems для работы с элементами сайта: ресурсами, TV, сниппетами и плагинами.

Создание и обновление ресурсов

Часто при разработке сайта требуется создать в админке дерево ресурсов. Для ускорения процесса можно воспользоваться встроенным скриптом. Создайте папку create, по умолчанию в папке elements, если у вас другой путь, пропишите его в системной настройке mpc_path_to_create. В папке создайте файл resource.inc.php примерно с таким содержимым

return [
    'web' => [        
        [
            'pagetitle' => 'Изготовление печатей и штампов',
            'hidemenu' => false,
            'published' => true,           
            'file_name' => 'templatename.tpl',
            'tvs' => ['img' => 'assets/project_files/images/pechati.png'],
            'content' => '<div class="custom">
                            <blockquote class="blockquote">
                                Таким образом, постоянный количественный рост и сфера нашей активности однозначно определяет каждого участника как способного принимать собственные решения касаемо стандартных подходов.
                            </blockquote>
                         </div>',
            'resources' => [
                'pagetitle' => 'Изготовление печатей и штампов',
                'hidemenu' => false,
                'published' => true,           
                'file_name' => 'templatename.tpl',
            ]             
        ],
    ],
];

где file_name - имя файла шаблона, если указано будут произведены те же действия, что и при запуске скрипта mgr_tpl.php. Однако, можно указать сразу ID нужного шаблона в поле template. Как вы поняли поле resources отвечает за дочерние ресурсы, для них не нужно указывать parent. Затем нужно запустить в терминале скрипт php -d display_errors -d error_reporting=E_ALL public_html/core/components/migxpageconfigurator/console/mgr_elems.php resource

Создание и обновление TV

С переменными шаблонов всё то же самое, что и с ресурсами: в папке create создаем файл tv.inc.php. Содержимое файла должно быть примерно таким

return [
    'test_sbl' => [
        'type' => 'superboxselect',
        'caption' => 'Связанные статьи',
        'description' => '',
        'category' => 'Связанные ресурсы',
        'input_properties' => [
            'selectType' => 'resources',
            'where' => '[{"template:=":"4"}]'
        ],
        'elements' => '',
        'templates' => [
            'Главная'
        ],
    ],
    'test_img' => [
        'type' => 'image',
        'caption' => 'Картинка',
        'description' => '',
        'category' => 'MigxPageConfigurator',
        'templates' => [
            'Пустой шаблон'
        ],
        'resources' => [
            'page-types' => 'assets/img.jpg'
        ]
    ],
    'test_migx' => [
        'type' => 'migx',
        'caption' => 'Конфигурация страницы',
        'description' => '',
        'category' => 'MigxPageConfigurator',
        'input_properties' => [
            'configs' => 'config',
        ],
        'templates' => [
            'Вывод содержимого',
            'Пустой шаблон'
        ],
    ],
    'test_migx2' => [
        'type' => 'migx',
        'caption' => 'Блоки',
        'description' => 'Описание ТВ',
        'category' => 'Блоки на главной',
        'input_properties' => [
            'formtabs' => [
                [
                    'caption' => 'Блоки',
                    'fields' => [
                        [
                            'field' => 'block_title',
                            'caption' => 'Заголовок'
                        ],
                        [
                            'field' => 'block_description',
                            'caption' => 'Описание'
                        ],
                        [
                            'field' => 'block_image',
                            'caption' => 'Картинка',
                            'inputTVtype' => 'image'
                        ]
                    ]
                ]
            ],
            'columns' => [
                [
                    'header' => 'Картинка',
                    'dataIndex' => 'block_image',
                    'renderer' => 'this.renderImage'
                ],
                [
                    'header' => 'Заголовок',
                    'dataIndex' => 'block_title'
                ],
                [
                    'header' => 'Описание',
                    'dataIndex' => 'block_description'
                ]
            ]
        ],
        'templates' => [
            'Вывод содержимого'
        ],
    ],
];

Затем нужно запустить в терминале скрипт php -d display_errors -d error_reporting=E_ALL public_html/core/components/migxpageconfigurator/console/mgr_elems.php tv

Создание и обновление сниппетов

Несмотря на то, что pdoTools позволяет использовать файловые сниппеты, зачастую удобнее создать статичный сниппет в админке, чтобы вызывать его по короткому имени. Создадим для этого в папке create файл snippet.inc.php приблизительно следующего содержания:

return [
    'testSnippet' => [
        'file' => 'snippet.test',
        'description' => 'формирует вызов сниппета с указанным пресетом',
        'categoryName' => 'Новая категория',
        'properties' => []
    ],
    'testStaticSnippet' => [
        'file' => 'snippet.static_test',
        'static' => 1,
        'description' => 'получает контакты в формате массива',
        'properties' => []
    ],
];

Обратите внимание, что имя файла с кодом сниппета указывается без расширения, сам файл должен лежать в папке core/elements/snippets/. В поле properties можно указать массив параметров по умолчанию. Затем нужно запустить в терминале скрипт php -d display_errors -d error_reporting=E_ALL public_html/core/components/migxpageconfigurator/console/mgr_elems.php snippet

Создание и обновление плагинов

Плагины в Modx Revolution вообще не работают, если не создать их в админке, поэтому методика изложенная выше, как нельзя лучше подходит для них. Порядок тот же: cоздаем в папке create файл plugin.inc.php примерно такого содержания

return [
    'testPlugin' => [
        'file' => 'plugin.test',
        'description' => '',
        'categoryName' => 'Категория плагинов',
        'events' => [
            'OnDocFormDelete' => [],
            'OnCacheUpdate' => [],
            'OnResourceUndelete' => [],
            'OnDocFormSave' => [],
            'OnDocFormPrerender' => [],
            'OnLoadWebDocument' => [],
            'OnPackageInstall' => [],
        ],
    ],
    'testStaticPlugin' => [
        'file' => 'plugin.static_test',
        'description' => '',
        'static' => 1,
        'events' => [
            'OnLoadWebDocument' => [],
            'OnPackageInstall' => [],
        ],
    ],
];

Обратите внимание, что имя файла с кодом плагина указывается без расширения, сам файл должен лежать в папке core/elements/plugins/. Затем нужно запустить в терминале скрипт php -d display_errors -d error_reporting=E_ALL public_html/core/components/migxpageconfigurator/console/mgr_elems.php plugin



Предыдущий документ
Работа с изображениями
Следующий документ
Разная информация по регионам