Описание объектной модели MODx Revolution API и xPDO

Описание объектной модели MODx Revolution API и xPDO. Объектная модель MODx Revo API. Статья для понимания.

Объектная модель MODx Revo API. Статья для понимания.

Информация на этой странице, полезна только для разработчиков MODx при написании PHP кода в сниппетах или плагинах, которым необходимо знать, как взаимодействовать с ресурсами (документами, гиперссылками, символическими ссылками и статическими ресурсами) и элементами (чанками, сниппетами, плагинами, шаблонами, переменными шаблонов (TV) и категорий) в MODx Revolution.

Эта статья также краткое введение в xPDO. Она знакомит с основными методами xPDO, с которыми предстоит иметь дело в MODx Revolution. Многие методы, перечисленные здесь, являются методами xPDO, но объект $modx является потомком объекта $xpdo и все они доступны через $modx -> MethodName().

Текущий ресурс / Текущий пользователь

Текущий ресурс и пользователь доступны непосредственно в следующих переменных - членах класса MODx :

$currentResource = $modx->resource;
$currentUser = $modx->user;

Если пользователь не залогинен, имя пользователя будет '(anonymous)'.

Поля объектов доступны через метод get() для каждого объекта (или getContent() для содержания (контента) ресурса):

$intro = $modx->resource->get('introtext');
$UserID = $modx->user->get('id');
$content = $modx->resource->getContent();

Поиск других объектов

Получить ссылку на объект любого другого ресурса (с поиском по ID, наиболее быстрый способ):

$resource = $modx->getObject('modResource', $id);

В Рево, ссылки на все объекты MODx можно получить с помощью метода $modx->getObject() .

Вы можете "достать" ("get") объект MODx следующим образом:

$object = $modx->getObject('object-class-name', array('name' => 'object-name' ));

Или, чтобы получить объект по ID номеру:

$object = $modx->getObject('object-class-name', $object-id); 

Чтобы получить ссылку, например на чанк, можно использовать:

$chunk = $modx->getObject('modChunk',array('name' => 'chunkName' ));

Также для получения чанка будет работать, и несколько быстрее, если вы знаете идентификатор этого чанка. Это также более надежной, так как имя чанк может измениться, но ID никогда не будет меняться:

$chunk = $modx->getObject('modChunk',$chunkId);

Использование ID будет работать с любым типом объекта.

Чтобы получить ресурс (прежнее название "документ"), который опубликован и носит название "Recipes" (- англ. Рецепты), вам нужно сделать следующее:

$document = $modx->getObject('modResource',array(
    'published' => 1,
    'pagetitle' => 'Recipes'
));

Вот еще один способ сделать то же самое:

$name = 'modResource';
$criteria = array(
    'published' => 1,
    'pagetitle' => 'Recipes'
)
$document = $modx->getObject($name,$criteria)

Примечание: распространенной ошибкой при получении ресурса является использование 'name' или 'title' вместо 'pagetitle'. Ресурсы не имеют полей 'name' или 'title', хотя надпись на панели pagetitle создание/редактирование ресурсов гласит 'title'.

Вы также можете найти ресурс, указав свой id, alias, menu title, и/или любой из областей, перечисленных в таблице ниже. Если вы хотите массив документов, отвечающих вашим критериям, вы можете использовать getCollection() вместо getObject():

$docArray = $modx->getCollection('modResource',array(
    'published' => 1,
    'searchable' => 1
));

Помните, что getCollection() не возвращает массив PHP. Она возвращает массив объектов. Если вы хотите объекты полей получить в виде массива PHP, вы можете использовать метод объекта toArray():

$phpArray = $object->toArray();

Вы также можете использовать get() метод объекта, чтобы получить любое индивидуальное поле:

$resource->get('pagetitle');

Как мы видели с getObject(), вы также можете использовать запрос качестве критерия или getCollection() или getMany():

$tvCollection = $modx->getCollection('modTemplateVar', 
    "`name` IN ('" . implode("','", array('footer', 'header')) . "')");

Обратите внимание, что вы должны использовать поля, показанные в таблице с getObject(). Например, вы могли бы использовать 'pagetitle', чтобы найти документ, а 'name', чтобы найти сниппет или чанк.

Если вы хотите получить несколько соответствующих объектов, связанных с одним объектом, вы можете использовать метод объекта getMany(). Предполагая, что вы использовали getObject(), чтобы получить ссылку на ресурс или шаблона, вы можете получить связанные с ними TV как показано здесь:

$tvs = $template->resource->getMany('TemplateVars');

Кроме этого, вы можете получить дочерние ресурсы, вот так:

$children = $resource->getMany('Children');

getObject() и getOne() возвращают ноль, если запрашиваемый объект не найден, а getMany() и getCollection() возвращает пустой массив, если нет результатов приведенным критериям.

Все отдельные ресурсы (документ, гиперссылки, символические ссылки и статические ресурсы) могут быть получены с помощью:

$modx->getObject('modResource',$criteria);

но вы также можете искать их по отдельности:

$modx->getObject('modDocument',$criteria);
$modx->getObject('modWeblink',$criteria);
$modx->getObject('modSymlink',$criteria);
$modx->getObject('modStaticResource',$criteria);

Отдельные элементы (чанки, сниппеты, плагины, шаблоны, TV переменные и категории) должна быть получена с использованием ключа объекта желаемого класса:

$modx->getObject('modChunk',$criteria);
$modx->getObject('modSnippet',$criteria);
$modx->getObject('modPlugin',$criteria);
$modx->getObject('modTemplate',$criteria);
$modx->getObject('modTemplateVar',$criteria);
$modx->getObject('modCategory',$criteria);

Получение параметров системы

Конткретная системная настройка, может быть получена ??в сниппете методом getOption():

$setting = $modx->getOption('site_start');

Получение поля объекта с помощью $object->get()

После того как вы получили объект с помощью getObject(), getCollection(), или getMany(), вы можете использовать с $object->get() для получения любого поля объекта по названию:

$resource = $modx->getObject('modResource',12);
$longTitle = $resource->get('longtitle');

А текущий документ всегда доступен так:

$modx->resource;

Вы можете получить любое из его полей, используя его метод get():

$id = $modx->resource->get('id');
$name = $modx->resource->get('pagetitle');

Как и в MODx Evolution любой тег сниппета заменяется значением возвращаемым кодом сниппета. Итак, если вы хотите, чтобы отобразить поля от объекта который вы получили. Просто поместите что-то вроде этого в конце вашего сниппета:

return $resource->get('pagetitle');

При использовании get('content') на ресурсе, вы получите сырое значения поля content ресурса. Тэги в содержимом не будут обработаны.

Использование $object->getOne() и $object->getMany() с объектами

Если у объекта есть объекты, которые связаны с ним в схеме MODx, они могут быть получены с помощью методов объекта getOne() или getMany(). Ресурсы, например, имеют связи - Parent, Children, Template, CreatedBy, EditedBy и т.д. (приведены в таблице ниже). В то время как get() будет извлекать содержимое той или иной области ресурсов объекта, getOne() будет извлекать весь объект. getMany() - это метод получения массива объектов. Ключ к пониманию, какой именно из этих методов Вам нужен, это - может ли быть более одного объекта в результатах поиска. Если это так, вам надо импользовать getMany(). У Ресурса, например, есть только один родитель и вы получите его с помощью getOne ('Parent'). И тот же самый Ресурс может иметь несколько TV-переменных шаблона, ассоциированных к нему, поэтому для их извлечения нужно использовать getMany('TemplateVars').

Обратите внимание, что имена полей, используемые в вызове get() записываются в нижнем регистре, имена объектов, используемых в вызове getOne() и getMany() записаны в ВерблюжьемСтиле (CamelCase). Методы getOne() и getMany() часто принимают один аргумент (имя соответствующего объекта (ов), который(ые) вы хотите получить), но они также могут принимать необязательный второй аргумент, указывающий критерии поиска. Второй аргумент также полезен, если вы хотите отсортировать результаты getMany().

Для получения Идентификатор ID родительского ресурса:

$id = $resource->get('parent');

Чтобы получить родительский ресурс как объект MODx:

$parentResource = $resource->getOne('Parent');

Кроме того, для получения пользователем объекта пользователя, который создал ресурс:

$user = $resource->getOne('CreatedBy');

Или, для текущего ресурса:

$user = $modx->resource->getOne('CreatedBy');

Объект пользователя содержит только ID, имя пользователя и хэш пароля пользователя. Чтобы получить больше, вам нужно получить объект modUserProfile, связанный с этим пользователем:

$user->getOne('Profile');

Если у вас есть профиль, вы можете использовать его получить() для получения любого поля ресурса:

$profile->get('fullname');

Чтобы получить детей документ, отсортированный по названию:

$criteria = $modx->newQuery('modResource');
$criteria->where(array(
   'parent' => $modx->resource->get('id'),
));
$criteria->sortby('pagetitle','ASC');
$children = $modx->resource->getMany('Children',$criteria);

Переменные шаблона (Template Variables, они же TV-параметры)

Получение обработанного значение TV из текущего документа (или любой документ, на который у вас есть ссылка) легко с помощью этого метода (отметим, что обе буквы "V" имени метода getTVValue() должны быть большими (прописными)):

$val = $modx->resource->getTVValue('name_of_tv');
$val = $modx->resource->getTVValue($id); // ID of the TV (not the document)

или

$resource = $modx->getObject('modResource',array('pagetitle'=>'SomePage'));
$val = $resource->getTVValue('name_of_tv');
$val = $resource->getTVValue($id); // ID of the TV (not the document)

Получение значения TV из другого документа немного сложнее, так как обрабатываемое значение TV может быть различным для каждого документа, в который она встроена, как результат, вы должны либо получить объект ресурса, описанным выше способом, или использовать специфические методы TV и вызвать по ID документа. Предположим, что $id является идентификатором ID документа (а не TV):

/* Get the TV */
$tv = $modx->getObject('modTemplateVar', array('name'=>'MyTV'));

/* get the raw content of the TV */
$rawValue = $tv->getValue($id);

/* get the processed content of the TV */
$processedValue = $tv->renderOutput($id);

Использование toArray() с getChunk()

MODx позволяет легко разделить вывод и данные. Один очень удобный способ это сделать, это поместить плейсхолдеры в чанк, а затем оптравить все поля объекта в одном вызове getChunk(). Скажем, например, что вы хотите показать некоторые из полей ресурса с помощью пользовательского сниппета. Если вы создаете TPL чанк с плейсхолдерами для полей, которые вы хотите показать, вы можете отобразить его в MODx Revolution используя очень мало строк кода.

toArray() работает с любым объектом MODx, но чаще всего используется с ресурсами и пользователями. Это создает PHP ассоциативный массив с полями объекта. Этот массив может быть использован в качестве второго аргумента $modx->getChunk() , чтобы заменить плейсхолдеры в блоке с соответствующими значениями. Этот пример показывает, как отображать поля ресурсов очень эффективно. Представьте, что вы хотите показать поля ресурса, который называется MyDocument и что это ваш TPL чанк - ShowResource:

<div class="ShowResource">
    <p>Page Title: [[+pagetitle]]</p>
    <p>Long Title: [[+longtitle]]</p>
    <p>Alias: [[+alias]]</p>
    <p>Summary: [[+introtext]]</p>
</div>>

Если вы поместите следующий тег сниппета на странице, он будет отображать поля ресурсов с помощью приведённого кода сниппета ниже.

    [[!ShowFields]]  

Вот код сниппета:

$resource = $modx->getObject('modResource',array('pagetitle'=>'MyDocument'));
$fields = $resource->toArray();
return $modx->getChunk('ShowResource',$fields);

Modx заменит все плейсхолдеры в шаблоне чанка значениями массива $fields, который содержит все поля ресурсов. Немного быстрее, но менее читабельная версия сниппета имеет только две строки:

$resource = $modx->getObject('modResource',array('pagetitle'=>'MyDocument'));
return $modx->getChunk('ShowResource',$resource->toArray());

Если вы хотите, отобразить поля текущего ресурса, сниппет становится еще более компактным:

return $modx->getChunk('ShowResource',$modx->resource->toArray());

Наборы параметров (Property Sets)

Набор параметров (Property Set) является объектом MODx, который содержит ассоциативный массив ключей и значений (так же, как System Settings). Набор параметров может быть прикреплен к элементам или на вкладке Свойства элемента (доступно при редактировании элемента в админке Manager), или Tools | Наборы параметров (Property Sets) в главном меню админки Manager. Элемент может иметь более одного прикреплённого набора параметров (Property Set) и набор параметров Property Set может быть присоединен к более чем одному элементу. Присоединение набора параметров делает его доступным для этого элемента, но на самом деле для использования набора параметров со сниппетом или чанком, он должен быть указан в теге элемента следующим образом:

[[SnippetName@PropertySetName]]
[[$ChunkName@PropertySetName]]

При подключении к сниппету, Property Set играет роль набора параметров сниппета (Property Set, - ранее Parameters Set в английской версии MODx). Для чанк или других элементов, значения в Property Set заменят теги плейсхолдеров в блоке, которые используют ключи от Property Set. Например, назовём набор параметров "MyProperties", который прикреплён к чанку под названием "MyChunk", вам придется это писать тег чанка так:

[[$MyChunk@MyProperties]]

Если это параметр называется "make" со значением "Ford", плейсхолдер [ [+make]] будет заменен на "Ford" в отображаемом блоке.

Когда вы вызываете сниппет со свойством прикреплённом в теге:

[[SnippetName@PropertySetName? &property1=`value1` &property2=`value2`]]

Значения перечисленные в Наборе параметров переопределят значения параметров сниппета по умолчанию (определённые в админке) И передаваемые в теге сниппета (&property1 и &property2) заменят значения в Набора парамтеров прикреплённом в теге снипетта. Разумеется, это верно только для свойств с совпадающими именами.

То же самое касается других элементов с прикрепленными наборами параметров. Значения в Property Set заменят любые Свойства по умолчанию с совпадающими именами.

Получение Обработанного содержимого объекта

В некоторых случаях, может появиться необходимость в сниппете, который будет получать вывод обработанного чанка или другого сниппета. Эти две функции, runSnippet() и getChunk(), по-прежнему доступны в Рево. В этом примере сниппета, $props содержит свойства сниппета в массиве:

$modx->runsnippet($snippetName, $props);
$modx->getChunk($chunkName);

При выполнении сниппета содержащего runSnippet('SnippetName') в коде, будут использоваться Свойства сниппета по умолчанию. Если вы хотите передать сниппет с использованием Набора параметров, то это делается с помощью: runSnippet('SnippetName', $properties). И свойства по умолчанию, и те параметры, которые передаются в теге сниппета будут доступны в сниппете. Те параметры которые были переданы в теге сниппета заменят Свойства по умолчанию, если их имена совпадут.

Теги плейсхолдеров в чанке будет заменены значениями прилагающимися в Наборе параметров, но как эти метки будут обработаны при использовании getChunk() в сниппете? Ответ второй аргумент getChunk(), содержащий свойства массива. Потому что несколько наборов свойств может иметь такое же имя, вы должны искать правильно по названию:

$setName = 'desiredPropertySetName';
$chunkName = 'desiredChunkName';

$object = $modx->getObject('modChunk',array(
        'name' =>$chunkName));

$propSet = $modx->getObject('modPropertySet',array(
        'name' =>$setName));

return($modx->getChunk($chunkName, $propSet->getProperties() ));

Вы должны знать разницу между Наборами параметров и Свойствами по умолчанию доступными на вкладке Свойства элементов. Эти свойства по умолчанию не являются технически Наборами параметров (Property Set). По факту, они являются эквивалентом Параметров Набора параметров. Метод getProperties() будет получать только один итоговый Набор параметров:

/* get the Default Properties of a snippet (or other element) */
$snippet = $modx->getObject('modSnippet',array('name'=>'SnippetName'));
$properties = $snippet->getProperties();

/* Get the properties of a particular Property Set */
$propSet = $modx->getObject('modPropertySet',array('name'=>'PropertySetName'));
$properties = $propSet->getProperties();

Когда чанк извлекается с getChunk() Свойства по умолчанию будет доступны для тегов плейсхолдеров чанка и будет заменено любым одноименным свойством переданным во втором параметре в вызове getChunk ('ChunkName', $properties).

Аналогичный процесс необходим, если вы хотите отправить Набор параметров вдоль при вызове runSnippet(). Свойства в массиве набора параметров будут доступны в сниппете, как если бы они были введены в качестве свойства во теге сниппета.

Для других элементов, как только вы получите элемент с $modx->getObject(), вы можете получить обработанные выходные с помощью вызова $element->process(). Это работает для чанков и сниппетов также (на самом деле, как getChunk(), так и runSnippet() методы, вызываеют метод элемента process()). Как вы догадались, в вызове $element->process($properties), также доступны и одноименные свойства передаваемые в тег элемента и перекрывает свойства элемента по умолчанию.

Вам не нужно отправлять Свойства по умолчанию при вызове getChunk(), runSnippet(), или вызове process(). Они используются автоматически.

Поскольку элементы могут иметь более одного набора свойств связанных с ними, это всегда нужно указать, какой Набор параметров вы хотите передать, если вы не хотите использовать по умолчанию свойства MODx.

Этот метод работает и для ресурсов. После того как вы получите объект ресурса с помощью $modx->getObject(), обработанные поля содержания ([[*content]]) ресурса доступны с помощью $resource->process(). Будьте осторожны, чтобы не сделать вызвов этого метода на текущий ресурс содержащий вызов сниппета, который вызывает метод process() на текущий ресурс, чтобы избежать бесконечного цикла, то же самое касается любого другого ресурса.

Получение Сырого (-англ. raw - с необработанными тегами) содержимого объектов

В MODx, сырое содержимое так и называется «Content» ("Содержимое"). Для чанка, содержимое - HTML код чанка, включая плейсхолдеры тегов. Для сниппетов, или плагинов, это реальный php код. Вам редко понадобится делать это, Вы вообще захотите сделать это, если вы создаёте сниппет утилиту или плагин предназначены для изменения Базы Данных MODx или для отладки, но для получения контента, вы можете использовать следующие:

$object->getContent();

Конечно, вы можете получить содержимое отдельных полей:

$object->get('fieldName')

Ниже приведена таблица для соответствующих имен полей, но помните, что имена полей могут измениться в будущих версиях (особенно для блоков и сниппетов), поэтому getContent() будет лучшим выбором для основного содержания объекта, так как будет автоматически снабжать их правильными именами полей.

Пожалуйста, обратите внимание, что работа с полями объекта напрямую (и особенно их изменение) это не то, чем занимаются типичные разработчики MODx. Это не является необходимым для создания веб-сайта, или даже типичного чанка, сниппета, или плагина. Это должно быть сделано только тем, кто действительно знает, что делает, и то только тогда, когда встроенных функций для получения и редактирования содержимого объекта будет недостаточно. Примером может служить пользовательский поиск и замена сниппетов процесса или чанками, или система контроля версий для MODx. Даже в таких случаях, использовать xPDO для внесения изменений в Базу Данных может быть лучшим решением.

Следующая информация здесь просто чтобы дать вам более полное представление о том, как MODx обрабатывает объекты и предоставить список наиболее часто используемых имен полей в каждом объекте. Обратите внимание, что список не является полным и отдельные имена полей могут измениться в будущих версиях (другая причина для использования стандартных функций доступа).

Изменение объектов

После получения ссылки на объект с помощью $modx->getObject(), вы можете изменить значение ее поля следующим образом:

$object->set('FieldName', 'Value');
$object->save();

Для изменения или создания основного поля Содержание ресурса или элемента (например, "Content" области ресурса, содержание чанков, код сниппета), всегда используйте setContent():

$object->setContent('Value');
$object->save();

Вы знаете, что ссылки на загруженные ресурсы доступны с помощью $modx->resource, но вы никогда не должны использовать это, чтобы изменить ресурс, потому что это на самом деле копия ресурса. Всегда получите ссылку с помощью $modx->getObject(), прежде чем пытаться изменить объект.

Создание новых объектов

Опять же, это не то, что вы обычно будете делать, если вы не разработчик дополнений, который создает сценарии построения. Это должно быть сделано с заботой и с пониманием того, какие поля обязательны для заполнения для каждого типа объекта. Вы можете создавать новые объекты так:

$object = $modx->newObject('modChunk');
$object->set('name', 'ChunkName');
$object->setContent('This will be the content of the new chunk.');
$object->set('description', 'I created this chunk in a snippet');
$object->set('category', 'MyChunks');
$object->save();

Каждый объект, описанный здесь имеет идентификатор и может быть задан, однако, вы никогда не должны, задавать (с помощью set() ) - ID сами. Кроме того, при изменении или создании объектов, убедитесь, что переменные, используемые для новых значений имеют правильный тип (т.е. так же, как тип поля, которое вы устанавливаете). См. файл / ядро ??/ модели / схемы / modx.mysql.schema.xml Подробнее о dbtypes, precision и т.д.

Вот список наиболее часто используемых объектов с их имена классов и имена некоторых из своих полей и типов. Связанных объектов, доступных с getOne() и getMany() приведены ниже поля для каждого объекта:

Общие объекты и некоторые их свойства

Документ / ресурсов (имя класса = 'modResource')

  • id (int - идентификатор ресурса)
  • pagetitle (text)
  • isfolder (int 0/1)
  • longtitle (text)
  • description (text)
  • alias (text)
  • published (int 0/1)
  • introtext (text - оно же Аннотация)
  • content (text)
  • template (int - id идентификатор шаблона)
  • menuindex (int)
  • searchable (int 0/1)
  • cacheable (int 0/1)
  • createdby (int - id идентификатор пользователя)
  • editedby (int - id идентификатор пользователя)
  • deleted (int 0/1)
  • deletedby (int - id идентификатор пользователя)
  • publishedby (int - id идентификатор пользователя)
  • createdon (date - дата первого сохранения)
  • publishedon (date - дата публикации последнего изменения)
  • editedon (date - дата редактирования его в последний раз)
  • menutitle (text)
  • donthit (int 0/1) (устарел)
  • haskeywords (int 0/1) (устарел)
  • hasmetatags (int 0/1) (устарел)
  • hidemenu (int 0/1)

 

  • Связанные объекты доступны getOne()
    • Parent (class = "modResource")
    • Template (class = "modTemplate")
    • CreatedBy (class = "modUser")
    • EditedBy (class = "modUser")
    • DeletedBy (class = "modUser")
    • PublishedBy (class = "modUser")
    • ContentType (class = "modContentType")
    • Context (class = "modContext")
  • Связанные объекты доступны в getMany()
    • Children (class = "modResource")
    • TemplateVars (class = "modTemplateVar")
    • TemplateVarTemplates (class = "modTemplateVarTemplate")

Чанк (имя класса = 'modChunk')

  • name (text)
  • description (text)
  • category (int - category id number)
  • snippet (text - chunk's contents)
  • locked (int 0/1- то есть заблокирован для редактирования)
  • Связанные объекты доступны в getOne()
    • Category (class = "modCategory")
  • Связанные объекты доступны в getMany()
    • PropertySets (class = "modElementPropertySet")

сниппет (имя класса = 'modSnippet')

  • name (text)
  • description (text)
  • category (int - category id number)
  • snippet (text - snippet's contents)
  • locked (int 0/1 - AKA locked for editing)
  • properties (text)
  • Связанные объекты доступны в getOne()
    • Category (class = "modCategory")
  • Связанные объекты доступны в getMany()
    • PropertySets (class = "modElementPropertySet")

Плагин (имя класса = 'modPlugin')

  • name (text)
  • description (text)
  • category (int - category id number)
  • plugincode (text - plugin's contents)
  • locked (int 0/1 - AKA locked for editing)
  • properties (text)
  • disabled (int 0/1)
  • Связанные объекты доступны getOne()
    • Category (class = "modCategory")
  • Связанные объекты доступны getMany()
    • PropertySets (class = "modElementPropertySet")
    • PluginEvents (class = "modPluginEvent")

Шаблон (имя класса = 'modTemplate')

  • templatename (text)
  • description (text)
  • category (int - category id number)
  • content (text)
  • icon (text)
  • locked (int 0/1)
  • Связанные объекты доступны в getOne()
    • Category (class = "modCategory")
  • Связанные объекты доступны в getMany()
    • PropertySets (класс = "modElementPropertySet")
    • TemplateVarTemplates (класс = "modTemplateVarTemplate")

Переменные шаблонов TV-параметры (имя класса = 'modTemplateVar')

  • type (text)
  • name (text)
  • caption (text)
  • description (text)
  • category (int - category id)
  • locked (int 0/1)
  • elements (text)
  • rank (int)
  • display (text)
  • display_params (text)
  • default_text (text)
  • Связанные объекты доступны getOne()
    • Category (class = "modCategory")
  • Связанные объекты доступны в getMany()
    • PropertySets (class = "modElementPropertySet")
    • TemplateVarTemplates (class = "modTemplateVarTemplate")
    • TemplateVarResources (class = "modTemplateVarResource")
    • TemplateVarResourceGroups (class = "modTemplateVarResourceGroup")

Пользователи (имя класса = 'modUser')

  • username (text)
  • password (text)
  • cachepwd (text)
  • Связанные объекты доступные в getOne()
    • Profile" (class = "modUserProfile")
  • Связанные объекты доступные в getMany()
    • CreatedResources (класс = "modResource")
    • EditedResources (класс = "modResource")
    • DeletedResources (класс = "modResource")
    • PublishedResources (класс = "modResource")
    • SentMessages (класс = "modUserMessage")
    • ReceivedMessages (класс = "modUserMessage")
    • UserSettings (класс = "modUserSetting")
    • UserGroupMembers (класс = "modUserGroupMember")

Профиль пользователя (class name = 'modUserProfile')

  • fullname (text)
  • role (int)
  • email (text)
  • phone (text)
  • mobilephone (text)
  • blocked (int 0/1)
  • blockeduntil (int - date)
  • blockedafter (int - date)
  • logincount (int)
  • lastlogin (int - date)
  • thislogin (int - date)
  • failedlogincount (int)
  • sessionid (text)
  • dob (int - date)
  • gender (int 0/1)
  • country (text)
  • state (text)
  • zip (text)
  • fax (text)
  • photo (text)
  • comment (text)
  • Связанные объекты доступные в getOne()
    • User (class = "modUser")
    • UserRole (class = "modUserRole")

Устаревшие методы

В MODx Revolution, многие из методов ранее использовавшиеся для получения сведений о документе отменены или устарели (будет отменены в ближайшее время).

Следующие методы являются устаревшими в MODx Revolution (и большинство из них были удалены начиная с версии MODx 2.1):
  • getSettings()
  • getDocumentObject()
  • getLoginUserType()
  • getDocument()
  • getDocuments()
  • getUserDocGroups()
  • getFullTableName()
  • getAllChildren()
  • getActiveChildren()
  • getDocumentChildren()
  • getDocumentChildrenTVars()
  • getTemplateVar()
  • getTemplateVars()
  • getTemplateVarOutput()
  • getParent()
  • getPageInfo()
  • getUserInfo()
  • getWebUserInfo()
  • getDocGroups()
  • changeWebUserPassword()
  • changePassword()
  • cleanDocumentIdentifier()
  • getDocumentIdentifier()
  • getDocumentMethod()
  • checkPreview()
  • logEvent()
  • getManagerPath()
  • userLoggedIn()
  • mergeDocumentContent()
  • mergeSettingsContent()
  • mergeChunkContent()
  • mergePlaceholderContent()
  • isBackend()
  • isFrontend()
  • insideManager()
  • putChunk()
Я очень долго не мог найти Описание объектной модели MODx Revolution API и xPDO в рунете, поэтому нашёл хороший англоязычный материал и перевёл его. Здесь приведён перевод статьи Боба Рэя