Дополнительные поля в MODx Revolution, MODx API
Создадим простое текстовое поле
$name = 'tvname'; // имя ТВ
$tempID = '1'; // ID шаблонов, для которых доступна,
if (!$tv = $modx->getObject('modTemplateVar', array('name' => $name))) {
$tv = $modx->newObject('modTemplateVar');
}
$tv->fromArray(array(
'name' => $name,
'type' => 'text',
'caption' => 'Имя ТВ', // подпись
'description' => 'Описание ТВ', // описание
'category' => 0 // ID категории
));
$tv->save();
$tvs[] = $tv->get('id').'-'.$tempID;
foreach ($modx->getCollection('modTemplate') as $template)
{
$templateId = $template->id;
foreach ($tvs as $k => $tv) {
$tvOpt = explode("-", $tv);
$tvid = $tvOpt[0];
$tvTemps = explode(",",$tvOpt[1]);
foreach ($tvTemps as $tvTemp){
if($templateId == $tvTemp){
if (!$tvt = $modx->getObject('modTemplateVarTemplate', array('tmplvarid' => $tvid, 'templateid' => $templateId))) {
$record = array('tmplvarid' => $tvid, 'templateid' => $templateId);
$keys = array_keys($record);
$fields = '`' . implode('`,`', $keys) . '`';
$placeholders = substr(str_repeat('?,', count($keys)), 0, -1);
$sql = "INSERT INTO {$modx->getTableName('modTemplateVarTemplate')} ({$fields}) VALUES ({$placeholders});";
$modx->prepare($sql)->execute(array_values($record));
}
}
}
}
Заполним текстовое поле
// Выбираем ресурс
$page = $modx->getObject('modResource', 1);
if (!$page->setTVValue('tvname', 'Привет Мир')) {
$modx->log(1, 'Произошла ошибка при сохранении ТВ');
}
Получим значение tv параметра
$page = $modx->getObject('modResource', 1);
echo $page->getTVValue('tvname');
Удалим дополнительное поле
$tv = $modx->getObject('modTemplateVar', array('name' => 'tvname'));
$tv->remove();