Стикеры для новых и обновленных материалов MODX

Ранее уже делал подобное для Joomla. Теперь, после смены CMS решил сделать то же и в MODX. Пример стикеров можете видеть на этом сайте.

Для добавления нужно создать новый сниппет, для которого понадобятся:

  • Дата создания материала - publishedon
  • Дата изменения - editedon
  • ID ресурса, для которого нужно вывести стикер (нужен для получения дат).

Выводиться стикеры будут как для шаблона, так и для чанка в getResources. Если в первом случае проблем не возникло, то с получением ID ресурса в чанке оказалось не так просто. В итоге решил передавать ID из чанка в сниппет через параметр. Возможно дело в малом опыте работы с MODX, а возможно другого решения и нет.

В итоге получился сниппет, назовем его "NewUp", со следующим содержимым:

<?php
$resource = $modx->getObject('modResource', $rid);
$datepub = date('ym.d', strtotime($resource->get('publishedon')));
$dateedit = date('ym.d', strtotime($resource->get('editedon')));
$days = (date('ym.d') - $dateedit);
//получим что то вроде 1.15, где 1 - месяцы, 15 - дни
if ($days < 3) { //если обновлено менее 3 месяцев назад
//Теперь сравним даты обновления и создания, если с момента создания до обновления прошло менее трех дней - материал новый
if (($dateedit - $datepub) < 0.03) {
if ($days < 1.15)
{
echo '<div class="newadded"><img src="/images/newst1.png" alt="добавлено менее 1,5 месяцев назад" /></div>';
} else {
echo '<div class="newadded"><img src="/images/newst2.png" alt="добавлено менее 3 месяцев назад" /></div>';
}
}
//Если с момента создания до обновления прошло более трех дней - материал обновленный
else {
echo '<div class="newadded"><img src="/images/newst3.png" alt="обновлено менее 3 месяцев назад" /></div>';
}
}

Комментарии здесь лучше убрать, а alt="" сделать пустыми. Время прошедшее с даты создания, обновления лучше сделать поменьше (у меня обновления происходят редко, следовательно и 3 месяца - новое :))

Затем в чанк, или шаблон вставляем следующий код:

[[!NewUp? &rid=`[[+id]]`]]

Для шаблона - &rid=[[*id]], для чанка getResources - &rid=`[[+id]]`

Изображения, которые я использовал:

Добавить комментарий

Комментарии (0)