Главная/Wiki/Дополнительные поля Modx API

Wiki · MODX

Дополнительные поля Modx API

Создание и работа с TV (дополнительными полями) через 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();

← Все разделы wiki

Контакты

Давайте обсудим задачу

Свяжитесь удобным способом — ответим и предложим формат работы.

Время работы

Пн–Пт 10:00–18:00
Сб–Вс Выходной
Обед 13:00–14:00

Почта и адрес

info@webstepup.ru
г. Волгодонск, ул. Степная 86, офис 11

Полный бриф

Обратный звонок