Оценок: 2

Добавление стикера "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)

Оценок: 2

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

    Надежный хостинг VPS серверов
    • Свои ISO образы
    • VDS с оплатой раз и навсегда
    • Аренда VDS на любой срок, с оплатой по дням
    • Большое разнообразие конфигураций
    • Дата-центры в ЕС и России
    + скидка 10%