Добавление стикера "NEW" или "UP" в блоге материалов Joomla

Небольшая правка макета вывода материалов в блоге категории (blog_item.php) для добавления стикеров "NEW" для новых материалов.

Находим в "/templates/ТЕКУЩИЙ_ШАБЛОН/html/com_content/category/" файл "blog_item.php", если такого файла нет, копируем его в соответствующий каталог из "/components/com_content/views/category/tmpl/", так же копируем все  php файлы из данного каталога в свой шаблон. Можно внести изменения и в "/components/com_content/views/category/tmpl/blog_item.php", но это до первого обновления системы.

Всего будет три стикера, ввыводиться будет один из них, либо ниодного, в зависимости от даты добавления и обновления материала. Соответственно понадобятся три даты - добавления, обновления и текущая. Текущую дату выведем через функцию date(), две другие уже есть в макете. Даты использую в виде 201409.27 (год и месяц без разделителя), таким образом отняв от даты обновления текущую дату получу что то вроде 2.15 (количество месяцев с даты обновления.количество дней)

В качестве примера буду использовать свой сайт. Т.к. новое добавляю не так уж часто, то новыми будут считаться материалы не старше трех месяцев.

Открываем "/templates/ТЕКУЩИЙ_ШАБЛОН/html/com_content/category/blog_item.php" и перед:

<?php if ($params->get('show_title')) : ?>

Вставляем следующий код (приведен с комментариями):

<?php
$days = (date('ym.d') - date("ym.d", strtotime($this->item->modified)));
//получим что то вроде 2.13, где 2 - месяцы, 13 - дни
if ($days < 3) { //если обновлено менее 3 месяцев назад
//Теперь сравним даты обновления и создания, если с момента создания до обновления прошло менее двух дней - материал новый
if ((date("ym.d", strtotime($this->item->modified)) - date("ym.d", strtotime($this->item->created))) < 0.02) {
if ($days < 1.1)
{
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>';
}
}
?>

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

Теперь осталось только оформить в css:
.newadded {position: absolute;
right: 0px;
top:0px}

Результат можно увидеть на данном сайте (решение то же, только для MODX)

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

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