MODX. Полезные снипеты

Сниппет «Только для администратора»

if($UserID = $modx->user->get('id')=='1'){
    echo $input;
}

/* Вывод на странице */
[[!isAdmin?&input=`hi`]]

Форматирование дат

День, месяц числом, год

[[+publishedon:strtotime:date=`%d.%m.%Yг.`]]
//30.04.2012г.

День, месяц прописью, год

[[+publishedon:strtotime:date=`%d %b %Y`]]
//30 Apr 2012

Почитать про функцию форматирования даты strftime можно тут.

Для появления русского языка в начале шаблона нужно вызвать сниппет setLocale:

<?php
setlocale(LC_ALL, "ru_RU.UTF-8");

Если нужно установить локаль только для функций времени, то лучше использовать не LC_ALL, а LC_TIME (подробнее о локалях).

Если очень нужно вывести месяц на русском, но хостинг не позволяет,можно использовать сниппет dateRU.

<?php
$month_arr = array('01' => 'Янв',
                   '02' => 'Фев',
                   '03' => 'Мар',
                   '04' => 'Апр',
                   '05' => 'Мая',
                   '06' => 'Июн',
                   '07' => 'Июл',
                   '08' => 'Авг',
                   '09' => 'Сен',
                   '10' => 'Окт',
                   '11' => 'Ноя',
                   '12' => 'Дек'
                  );
  
$time = strtotime($input);
$month = strftime('%m', $time);
$day = strftime('%d', $time);
$year = strftime('%Y', $time);
    
return "$day $month_arr[$month] $year";

Вызывать вот так:

[[+publishedon:dateRU]]г.
//30 Апр 2012г.

Получить все значения TV поля

<?php
$tvid = 1; // id нужного ТВ параметра
$res = array(); // Сюда забиваем результаты

$q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tvid));
$q->select('contentid,value');
if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$res[$row['contentid']] = $row['value'];
	}
}
print_r($res);