Skip to content
  1. Система
  2. Утилиты
  3. Teleport
  4. Расширение
  5. Шаблоны Извлечения

Шаблоны Извлечения

Определение шаблона

Шаблон извлечения (Extract tpl) - это JSON файл который описывает как Teleport'у строить транспортный пакет. Он состоит из трёх основных частей: name, атрибутов пакета attributes, и коллекции одного или больше vehicles - транспортных единиц.

Имя шаблона

Имя name Шаблона извлечения используется при генерации имени файла Извлечённого транспортного пакета. По этой причине, вам следует избежать использования - или других специальных символов в имени шаблона: name. Используйте _ для разделения слов, если Вам это необходимо.

Аттрибуты пакета

Подсказка

Доступны в teleport'е >=1.2.0*

Часть attributes даёт возможность задать аттрибуты транспортного пакета который генерируется командой Extract. Например, это может быть использовано для установки аттрибутов пакета, которые будут использованы Менеджером пакетов при установке Дополнения, даёт вам возможность использовать Teleport как простой способ создавать устанавливаемые транспортные пакеты для использования в любом сайте MODX.

Заметим, однако, что при создании пакетов для использования в качестве дополнений MODX, вы должны избежать использования используемых Teleport'ом классов обозначения транспортных пакетов. Избегайте в описании пакетов использования классов, которые xPDO использует сам (xPDOObjectVehicle, xPDOFileVehicle, xPDOScriptVehicle, или xPDOTransportVehicle).

Вот пример использования аттрибутов attributes которые могли бы быть использованы для создания установочного пакета, типа Дополнение MODX. Этот теоретический тестовый test компонент расположен в директории MODX core/components/ указывает зависимость от Компонента collections версии 3.x (для свойства MODX 2.4 зависимости пакетов) и включает содержимое файла changelog.txt, расположенного в директории компонента как атрибут changelog:

php
"attributes": {
  "changelog": {
    "sourceType": "fileContent",
    "source": "{+properties.modx.core_path}components/test/changelog.txt"
  },
  "requires": {
    "collections": "~3.0"
  }
},

Вы можете видеть в этом примере, отдельные аттрибуты могут получать брать содержимое из файлов доступных команде Extract путём задания значения аттрибута объекту с помощью свойств sourceType и source где sourceType значение указано fileContent и source - это полный путь к файлу из которого нужно получить содержимое. Другие типы sourceType могут начать поддерживаться в будущем.

Описание Транспортных единиц (Vehicles)

Свойство vehicles описывает коллекцию xPDO транспортных единиц которая будет включена в пакет согласно тому как это описано. Транспортные единицы могут быть производными xPDOVehicle ядра, производными Teleport'а, и даже кастомными производными.

Простой пример settings.tpl.json входящий в состав Teleport описывает две xPDOObject транспортные единицы, которые упакуют все Системные настройки и настройки контекста из сайта MODX:

php
"vehicles": [
  {
    "vehicle_class": "xPDOObjectVehicle",
    "object": {
      "class": "modSystemSetting",
      "criteria": [
        "1 = 1"
      ],
      "package": "modx"
    },
    "attributes": {
      "preserve_keys": true,
      "update_object": true
    }
  },
  {
    "vehicle_class": "xPDOObjectVehicle",
    "object": {
      "class": "modContextSetting",
      "criteria": [
        "1 = 1"
      ],
      "package": "modx"
    },
    "attributes": {
      "preserve_keys": true,
      "update_object": true
    }
  }
]

При Инъекции (Inject), упакованные транспортные единицы объектов сохранят свои значения первичных ключей (primary keys)и обновят существующие объекты в сайте-цели Инъекции которые совпадут по первичному ключу, как описано в атрибутах для каждой транспортной единицы в коллекции.

Каждая транспортная единица состоит из необязательных vehicle_package, vehicle_class, object определяющих содержимое транспортной единицы, и необязательные атрибуты attributes транспортной единицы. vehicle_package должен быть опущены при использовании xPDOVehicle реализаций (implementations ООП) ядра. object будет уникальным для каждой vehicle_class реализации (implementation ООП).

xPDOFileVehicle

  • source: абсолютный путь к файлу или каталогу, который должен быть упакован
  • target: PHP выражение которое будет исполнено eval() во время инсталляции, чтобы определить куда файл/директорию распаковывать

xPDOObjectVehicle

  • class: определяет класс xPDOObject чтобы быть упакованным транспортной единицей
  • criteria: массив или объект, описывающий критерии, которые будут использоваться, чтобы выбрать (xPDO выборка) экземпляры указанного класса class
  • graph: определяет, какой граф объекта использовать для связанных объектов xPDOObjects
  • graphCriteria: определяет критерии для фильтрации связанных xPDOObjects определённых в graph
  • script: дополнительный script который будет использоваться для создания транспортной единицы/единиц для этого описания транспортной единицы
  • package: xPDO имя пакета для указанного класса class

xPDOScriptVehicle

  • source: сценарий для выполнения во время установки транспортной единицы