xPDO cheat sheet
13 Июля 2019 15:18 (Редактировано: 17 Сентября 2020 00:58)
Список классов и соответствующих таблиц в базе данных
Класс | Таблица | Описание |
modResource | modx_site_content | Таблица с ресурсами |
modTemplateVar | modx_site_tmplvars | Таблица со списком всех TV, используемых на сайте |
modTemplateVarResource | modx_site_tmplvar_contentvalues | Таблица со значениями TV |
modTemplateVarTemplate | modx_site_tmplvar_templates | Таблица соответствия шаблонов и TV |
modTemplate | modx_site_templates | Таблица с шаблонами |
modChunk | modx_site_htmlsnippets | Таблица с чанками |
modSnippet | modx_site_snippets | Таблица со сниппетами |
modUser | modx_users | Таблица со списком пользователей |
modUserProfile | modx_user_attributes | Таблица с информацией по пользователям |
modSystemSetting | modx_system_settings | Таблица с системными настройками |
modMediaSource | modx_media_sources | Таблица с источниками файлов |
Методы xPDO
1. getObject.
Получаем 1 объект.
Параметры:
- Класс (str)
- Условия выборки (arr | int | str)
//Получаем ресурс с идентификатором 23
$resource = $modx->getObject('modResource', array('id' => 23));
//Получаем заголовок, так же можно получить любое поле из таблицы
$pagetitle = $resource->get('pagetitle');
//Получаем ТВ по id, также можно сделать по названию, например, image
$tv = $resource->getTVValue(3);
//Сотворить массив из объекта, который будет содержать все поля и их значения
$array = $resource->toArray();
2. getCollection.
Получаем массив из нескольких объектов.
Параметры:
- Класс (str)
- Условия выборки (arr | int | str)
//Получить все ресурсы с родителем 12 и шаблоном 8
$resources = $modx->getCollection('modResource', array('parent' => 12, 'template' => 8));
/*Примеры*/
$output = "<p>Всего ресурсов: " . count($resources);
foreach($resources as $k => $v) {
$output .= $k . ". " . $v->get('pagetitle');
}
print_r($output);
3. getCount.
Получаем количество ресурсов.
Параметры:
- Класс (str)
- Условия выборки (arr | int | str)
//Получить количество опубликованных ресурсов с родителем 55
$resCount = $modx->getCount('modResource', array('parent' => 55, 'published' => 1));
4. newQuery.
отовим SQL-запрос для выборки getCollection.
Параметры:
- Класс (str)
- Условия выборки (arr | int | str)
Благодаря этому методу мы можем готовить сложные условия выборки с inner join'ами и пр.
$sql = $modx->newQuery('modResource', array('parent' => 57, 'published' => '1')); //Обычный запрос на опубликованных ресурсов c родителем
$sql->orCondition(array('parent' => 23)); //Добавляем OR в запрос
$sql->andCondition(array('parent' => 45)); //Добавляем AND в запрос
$sql->where(array('deleted' => 0)); //Добавляем WHERE в запрос
/*Вариации where*/
$query = $modx->newQuery('modTemplateVarResource');
$query->where(array('price' => 2500)); //Запрос на все результаты с ценой 2500
$query->where(array('price:!=' => 2500)); //не равно
$query->where(array('price:>' => 2500)); //Больше
$query->where(array('price:<' => 2500)); //Меньше
$query->where(array('price:>=' => 2500)); //Больше либо равно
$query->where(array('price:<=' => 2500)); //Меньше либо равно
$query->where(array('price:LIKE' => '%26%')); //Добавляем LIKE
$query->where(array('price:NOT LIKE' => '%26%')); //Добавляем NOT LIKE
$query->where(array('price:IN' => array(1300,2500,500,7900))); //Добавляем IN
$query->where(array('price:NOT IN' => array(1300,2500,500,7900))); //Добавляем NOT IN
$query->where(array('price:IS' => null); //Добавляем IS
Modx API
1. parseChunk
Парсит чанк используя ассоциативный массив заменяемых значений. Не выполняет вложенные сниппеты. Экономит ресурсы.
Параметры:
- Имя чанка (str);
- Массив создаваемых плейсхолдеров, которые будут использоваться в чанке (array);
- Префикс. По умолчанию [[+
- Постфикс. По умолчанию ]]
$modx->parseChunk('chunkName', array('name' => 'John'), $prefix = '[[+', $suffix = ']]');
2. getChunk
Парсит чанк.
Параметры:
- Имя чанка (str);
- Массив создаваемых плейсхолдеров, которые будут использоваться в чанке (array).
- Префикс. По умолчанию [[+
- Постфикс. По умолчанию ]]
$modx->getChunk('cnkName', array('name' => 'Jhon'), $prefix = '[[+', $suffix = ']]');