Шаблоны Извлечения
Определение шаблона
Шаблон извлечения (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
:
"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:
"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
: определяет, какой граф объекта использовать для связанных объектов xPDOObjectsgraphCriteria
: определяет критерии для фильтрации связанных xPDOObjects определённых вgraph
script
: дополнительный script который будет использоваться для создания транспортной единицы/единиц для этого описания транспортной единицыpackage
: xPDO имя пакета для указанного классаclass
xPDOScriptVehicle
source
: сценарий для выполнения во время установки транспортной единицы