Список классов и соответствующих таблиц в базе данных
Класс | Таблица | Описание |
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)
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. toArray.
Формирует массив полей со значениями из свойств объекта.
Параметры:
- Префикс ('') (string),
- Сырые значения (false) (boolean),
- Исключить ленивые поля (false) (boolean),
- Использовать связи (false) (boolean | integer | string | array)
//такая конструкция уберет лишние поля из выборки, если в подготовленном запросе были указаны конкретные поля
$object->toArray('', false, true);
//Такая конструкция добавит префикс ключам в массиве
$object->toArray('pls_');
4. getCount.
Получаем количество ресурсов.
Параметры:
- Класс (str)
- Условия выборки (arr | int | str)
//Получить количество опубликованных ресурсов с родителем 55
$resCount = $modx->getCount('modResource', array('parent' => 55, 'published' => 1));
5. getChildIds.
Получает все дочерние идентификаторы указанного ресурса.
Параметры:
- id ресурса (int)
- Глубина поиска (int)
- Контекст (string)
//Получить массив всех дочерних ресурсов ресурса с id 14, но не глубже чем на 6 ресурсов в контексте web
$arrIds = $modx->getChildIds(14, 6, ['context' => 'web']);
6. newQuery.
Подготвалвиает SQL-запрос для выборки getObject, getCollection или для получения сырого результата.
Параметры:
- Класс (str)
- Условия выборки (arr | int | str)
Благодаря этому методу мы можем готовить сложные условия выборки с inner join'ами и пр.
$query = $modx->newQuery('modResource', array('parent' => 57, 'published' => '1')); //Обычный запрос на опубликованных ресурсов c родителем
$query->orCondition(array('parent' => 23)); //Добавляем OR в запрос
$query->andCondition(array('parent' => 45)); //Добавляем AND в запрос
$query->select('id, pagetitle'); //Выбираем нужные поля. Если, при этом используется toArray то в toArray нужно передать параметры: toArray('', false, true), иначе будут выведены все поля
/*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
/*Через xPDOQuery::SQL_AND можно указывать несколько where*/
$query->where(array('deleted:=' => 0), xPDOQuery::SQL_AND, null, 1);
$query->where(array('searchable:=' => 1), xPDOQuery::SQL_AND, null, 1);
Построенные запросы теперь можно использовать как параметр для получения объекта:
$object = $modx->getObject('modResource', $query);
Или коллекции:
$collection = $modx->getCollection('modResource', $query);
Также, можно просто выполнить запрос для получения сырого результата:
$query->prepare();
$query->stmt->execute();
$rawArray = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
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 = ']]');