Хак Как? Вывод в main шаблон количества новостей

Тема в разделе "DLE", создана пользователем toxass, 27 апр 2009.

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

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

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

    toxass Постоялец

    Регистр.:
    24 июл 2007
    Сообщения:
    114
    Симпатии:
    15
    Сабж. Нужно для каталога файлов.
     
  2. FL@SH

    FL@SH Читатель

    Заблокирован
    Регистр.:
    20 июл 2008
    Сообщения:
    193
    Симпатии:
    25
    Нужно тупо количество новостей на сайте?
     
  3. toxass

    toxass Постоялец

    Регистр.:
    24 июл 2007
    Сообщения:
    114
    Симпатии:
    15
    Да. Еще вопрос, это дает +1 запрос к базе каждый раз при рефреше странички?
     
  4. clif

    clif Постоялец

    Регистр.:
    10 сен 2007
    Сообщения:
    120
    Симпатии:
    4
    скорее всего ... список категорий следующего вида

    - категория (12)
    --суб категория (3)
    --суб категория (3)
    --суб категория (3)
    - категория (12)
    --суб категория (3)
     
  5. toxass

    toxass Постоялец

    Регистр.:
    24 июл 2007
    Сообщения:
    114
    Симпатии:
    15
    нет, нет...надо просто вывести сколько новостей во всех разделах в main шаблоне, такой тэг есть в stats, но в main он не пашет(
     
  6. FL@SH

    FL@SH Читатель

    Заблокирован
    Регистр.:
    20 июл 2008
    Сообщения:
    193
    Симпатии:
    25
    Да, +1 запрос к бд Вот, лови.
    Открываем index.php
    Находим
    PHP:
    $tpl->load_template 'main.tpl' );
    Ниже добавляем
    PHP:
    $all_col_news $db->super_query("SELECT COUNT(*) as count from ".PREFIX."_post");
    $tpl->set("{all_col_news}"$all_col_news['count']);
    как вариант можно сделать кеширование.

    PS если помог - кнопка спасибо внизу справа ;)
     
    toxass нравится это.
  7. DemanZ

    DemanZ Постоялец

    Регистр.:
    16 мар 2007
    Сообщения:
    144
    Симпатии:
    113
    Мой вариант статистики сайта:
    Выводит общее количество новостей тег {allnews}
    Выводит общее количество пользователей тег {allusers}
    Выводит количество новостей за день тег {todaynews}
    Выводит количество пользователей зарегистрированных за день тег {todayusers}
    P.s> с кэшем на 12 часов, и так сказать 1 запрос без кэша.

    найти:
    PHP:
    require_once ROOT_DIR.'/engine/init.php';
    добавить ниже:
    PHP:
    function get_vars_prev_next ($file$time_minute 1440){
        
    $filename ENGINE_DIR.'/cache/system/'.$file.'.php';
        if (
    file_exists($filename)){
            
    $cr_time filemtime($filename);
            
    // 86400 - если кэш больше дня, удалить...
            
    if ((time() - $cr_time) > ($time_minute 60)) {
                @
    unlink($filename);
                return 
    false;
            }
        }
        return 
    unserialize(@file_get_contents(ENGINE_DIR.'/cache/system/'.$file.'.php'));
    }

    $site_stats get_vars_prev_next('site_stats'720);
    if(!
    $site_stats){

        
    $row $db->super_query("SELECT SUM(c1) count_statsusers, SUM(c2) count_statsnewusers, SUM(c3) count_statsnews, SUM(c4) count_daynews FROM ((SELECT 0 c1,0 c2, COUNT(*) c3, COUNT(IF(date>(NOW() - INTERVAL 1 DAY),1,NULL)) c4  FROM "PREFIX ."_post WHERE approve = '1')  UNION  (SELECT COUNT(*) c1, COUNT(IF(FROM_UNIXTIME(reg_date) > (NOW() - INTERVAL 1 DAY),1,NULL)) c2, 0 c3,0 c4 FROM "USERPREFIX ."_users)) as t1 ;");
        
        
    $site_stats['news'] = $row['count_statsnews'];
        
    $site_stats['daynews'] = $row['count_daynews'];
        
    $site_stats['users'] = $row['count_statsusers'];
        
    $site_stats['newusers'] = $row['count_statsnewusers'];
        
    set_vars('site_stats'$site_stats);
        
    $db->free();
    }
    найти:
    PHP:
    $tpl->load_template('main.tpl');
    Добавить ниже:
    PHP:
    // ------- статистика по сайту ------------------
        
    $tpl->set('{allnews}'$site_stats['news']);
        
    $tpl->set('{allusers}'$site_stats['users']);
        
    $tpl->set('{todaynews}'$site_stats['daynews']);
        
    $tpl->set('{todayusers}'$site_stats['newusers']);


    // ------- статистика по сайту ------------------
     
    lift нравится это.
  8. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.378
    DemanZ
    Воркает, но есть косяк: показывает суммарное количество новостей а не новости прошедшие модерацию. Можно это как то вправить?
    И можно как то еще и выводить общее количество категорий/подкатегорий?
     
  9. DemanZ

    DemanZ Постоялец

    Регистр.:
    16 мар 2007
    Сообщения:
    144
    Симпатии:
    113
    Косяк подправил...
    Я думаю можно, гляну на досуге...
    если отдельным запросом то вот он:
    Код:
    select  COUNT(*) as all_cat, COUNT(IF(parent_id='0',1,NULL)) as count_root, COUNT(IF(parent_id != 0,1,NULL)) as count_parent from dle_video_category
    выведет:
    all_cat - количество всех категорий
    count_root - количество "главных категорий (не подкатегории)"
    count_parent - количество подкатегорий
    P.s> гляну как объединить...
     
    lift нравится это.
  10. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.378
    И всеравно оющее количество новостей вывело сейчас включая не прошедших модерацию.
    Слушай, если ты все подправиш, то может докрутиш и последнюю фишку стат-странички - размер базы? :) чтоб в майне можно было сразу всю стату выводить и по юзерам и по статьям и по размеру БД.
     
Статус темы:
Закрыта.