Jump to main content Jump to doc navigation

Theme settings и custom resolvers делают темы переносимее и гибче без ручной настройки после установки.

Theme Settings

При сборке темы Fred автоматически включает все system settings namespace темы. Ключи должны иметь префикс fred.theme.theme-name, где theme-name имя темы. Пример для цвета фона в демо One Pager: fred.theme.one-pager.bg-color.

Каждая тема включает system setting fred.theme.theme-name.theme_dir, создаваемый по умолчанию. Это web-доступные assets темы: images и css.

В сборку попадают только settings конкретной темы. Проверьте префикс и namespace, иначе settings будут проигнорированы.

Extract Template

Extract Templates позволяют включить settings или configuration Extras, используемых в Themes. Формат:

{
    "packages": [],
    "vehicles": []
}

packages это массив из одного или нескольких third-party packages. Вызывается метод $modx->getService с параметрами:

  • name: имя package, обычно lowercase
  • class: имя service class, часто camel case
  • componentName: необязательно, по умолчанию name, каталог внутри components/
  • modelName: необязательно, по умолчанию name, каталог внутри model/
  • settingPrefix: необязательно, по умолчанию name, префикс system setting при custom core path

vehicles это соответствующий массив vehicles в формате vehicle object:

  • object: обёртка со свойствами:
    • class: имя xPDO class
    • graph: xPDO graph
    • criteria: необязательно, по умолчанию [], xPDO criteria для фильтра объектов
    • graphCriteria: необязательно, по умолчанию null, xPDO graph criteria
  • attributes: xPDOTransport attributes

Пример для MODX Minify

{
    "packages": [
        {
            "name": "modxminify",
            "class": "modxMinify"
        }
    ],
    "vehicles": [
        {
            "object": {
                "class": "modxMinifyGroup",
                "graph": {
                    "File": []
                }
            },
            "attributes": {
                "preserve_keys": false,
                "update_object": true,
                "unique_key": "name",
                "related_objects": true,
                "related_object_attributes": {
                    "File": {
                        "preserve_keys": false,
                        "update_object": true,
                        "unique_key": "filename"
                    }
                }
            }
        }
    ]
}

Пример для Client Config

{
    "packages": [
        {
            "name": "clientconfig",
            "class": "ClientConfig"
        }
    ],
    "vehicles": [
        {
            "object": {
                "class": "cgGroup",
                "graph": {
                    "Settings": []
                }
            },
            "attributes": {
                "preserve_keys": false,
                "update_object": true,
                "unique_key": "label",
                "related_objects": true,
                "related_object_attributes": {
                    "Settings": {
                        "preserve_keys": false,
                        "update_object": true,
                        "unique_key": ["key", "group"]
                    }
                }
            }
        }
    ]
}

Resolvers

Для продвинутых разработчиков custom PHP resolvers выполняются после установки темы как финальный шаг установки, или первыми при удалении. Экземпляр modX доступен через $transport->xpdo. Resolvers запускаются при install, upgrade или uninstall через Packager Installer в MODX Manager.

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more