Хак Количество новостей с последнего визита

Тема в разделе "DLE", создана пользователем dragonstyle, 20 июн 2009.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. dragonstyle

    dragonstyle Читатель

    Заблокирован
    Регистр.:
    17 ноя 2008
    Сообщения:
    525
    Симпатии:
    479
    Хак показа не последних новостей с момента выхода пользователей.
    Что сделано:
    1. Гости этого не видят
    2. Показует только новости какие опубликованы
    3. Кэшируеться

    Для начала мы открываем index.php
    находим:
    PHP:
    $tpl->set '{topnews}'$topnews );
    и ниже вставляем:
    PHP:
    if($is_logged) {
    $ti dle_cache("last_time_news"$member_id['user_id']);
    if(
    $ti === FALSE) {
    $l date"Y-m-d H:i:s"$_SESSION['member_lasttime'] );
    $th date "Y-m-d H:i:s"$_TIME );
    $t $db->super_query("SELECT COUNT(id) as count FROM ".PREFIX."_post WHERE date between '$l' and '$th' AND approve = '1'");
    $ti $t['count'];
    create_cache("last_time_news"$ti$member_id['user_id']);
    }
    $tpl->set '{last_time_news}'$ti );
    } else {
    $tpl->set '{last_time_news}''' );
    }
    А потом в шаблоне main.tpl в любом удобном месте вставляем :
    PHP:
    {last_time_newsНовостей опубликовано пока вас не было
    Конечно лучше будет в login.tpl добавить я так думаю.... ;)
    Автор хака: SOFTER, за что ему спасибо!

    p.s. у некоторых могут быть ошибки с кэшом, вставьте без него:
    PHP:
    if($is_logged) {
    $l date"Y-m-d H:i:s"$_SESSION['member_lasttime'
    ;] );
    $th date "Y-m-d H:i:s"$_TIME );
    $t $db->super_query("SELECT COUNT(id) as count FROM ".PREFIX."_post WHERE date between '$l' and '$th' AND approve = '1'");
    $ti $t['count'];
    $tpl->set '{last_time_news}'$ti );
    } else {
    $tpl->set '{last_time_news}''' );
    }
    Всего один запрос к БД !
    Усе, работа кончена ;)
     
Статус темы:
Закрыта.