
Перенос директории разработки 
Разберём на примере, как перенести контроллеры, плагины, сниппеты и шаблоны zoomx в папку core/elements/zoomx/.
Добавление кастомных контроллеров 
В папке core/config/ создаём файл elements.php и добавляем в него следующий код:
php
<?php
zoomx()->getLoader()->addPsr4('App\\Controllers\\', MODX_CORE_PATH . 'elements/zoomx/controllers/');Для примера добавим новый контроллер HelloController.
В папке core/elements/zoomx/controllers/ создаём файл HelloController.php, добавляем в него код:
php
<?php
namespace App\Controllers;
use Zoomx\Controllers;
class HelloController extends \Zoomx\Controllers\Controller {
  public function hello() {
    zoomx()->autoloadResource(false);
    $site_name = $this->modx->getObject('modSystemSetting', ['key' => 'site_name']);
    return "hello {$site_name->get('value')}!";
  }
}Открываем файл core/config/routes.php и добавляем обработку роутера:
php
// ---
$router->get('api/test', ['\App\Controllers\HelloController', 'hello']);
// ---Теперь открыв сайт по адресу https://site_name/api/test получим ответ от сервера.
Перенос папки плагинов, сниппетов и шаблонов 
В директории core/elements/zoomx/ создаём папки templates, snippets, plugins.
Копируем содержимое папки core/components/zoomx/templates/ в папку core/elements/zoomx/templates/.
Открываем системные настройки в панели управления сайтом и изменяем значения ключей:
| Ключ | Значение | 
|---|---|
| zoomx_file_snippets_path | {core_path}elements/zoomx/snippets/ | 
| zoomx_smarty_custom_plugin_dir | {core_path}elements/zoomx/plugins/ | 
| zoomx_template_dir | {core_path}elements/zoomx/templates/ |