Данная статья содержит пример программного кода, который можно вставить в сниппет, ориентированный на MODX Evolution (проверял на версии 1.0.10), и он будет генерировать новые документы а-ля страницы с заданным или заданными TV параметрами, заблаговременно подготовленными посредством админки CMS.
<?php include_once "manager/processors/cache_sync.class.processor.php"; global $modx; // Установка свойств нового ресурса: $new_document = array( 'pagetitle' => 'Авто-статья', 'content' => 'Данная страница сгенерирована автоматически.'; 'longtitle' => '', 'description' => '', 'alias' => '', 'published' => 1, 'parent' => 0, 'introtext' => '', 'template' => 4, // - идентификатор существующего шаблона 'searchable' => 1, 'cacheable' => 1, 'createdby' => 1, 'createdon ' => time(), 'editedby' => 1, 'editedon ' => time(), ); // Вставка новой страницы в базу данных: $newDocId = $modx->db->insert( $new_document, $modx->getFullTableName('site_content') ); $new_tv = array( 'contentid' => $newDocId, 'tmplvarid' => '4', // - идентификатор TV 'value' => 'Привет человекам!!!', // - значение TV ); $newTvId = $modx->db->insert( $new_tv, $modx->getFullTableName('site_tmplvar_contentvalues') ); // Очистка кэша: $sync = new synccache(); $sync->setCachepath("assets/cache/"); $sync->setReport(false); $sync->emptyCache(); return '<pre>' . print_r( array( 'интификатор документа' => $newDocId, 'интификатор TV параметра' => $newTvId, ), true) . '</pre>'; ?>
Как этим всем пользоваться:
- Открываем приложение под названием phpMyAdmin и смотрим табличку modx_site_tmplvars. По имени вашего TV параметра, который вы добавляете и прикрепляете к шаблону через Менеджер стандартным путем заранее, находите интересующую строчку. Запоминаете значение поля ID, — идентификатор переменной темплейта.
- В массиве
$new_tv
меняете целое число в'tmplvarid' => '4'
на ваш айдишник. - Ну и третий момент. Т.к. это демонстрационный набросок не забываем поменять значение возвращаемое сниппетом, — сейчас это массив с
print_r()
.
Не работает как мне кажется строчка
$newTvId = $modx->db->insert( $new_tv, $modx->getFullTableName(‘site_tmplvar_contentvalues’) );
не возвращает id вставленного документа, а просто вставляет документ в базу