Підрахунок кількості новин в категорії DLE
Створюю і просуваю комерційні сайти та інтернет-магазини з 2008 року. 8-09-2013, 22:23 1 664 0Підрахунок кількості новин, з'явився в 11.2 версії, біля категорії дуже зручно якщо хочете організувати файловий архів, де новини додаються дуже часто і користувач відслідковує зміни.
Призначення хака: підрахунок кількості новин в категорії.
Підтримка: 9.7-10.0 DLE
Що цікавого:
1) кешування кількості новин;
2) можливість прибирати «0», якщо новин за сьогодні по категорії немає;
3) виправлений баг неточного підрахунку кількості новин, якщо новина в декількох категоріях.
Установка:
1. У файлі index.php знаходимо:
$tpl->set ( '{AJAX}', $ajax );
[/code]
І вище вставляємо такий код, якщо хочемо щоби виводилось так - [+6 | 20]:
$sql_result = $db->query("select ct.id,(select count(*) from ". PREFIX ."_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND (DATE_FORMAT(date, '%Y%m%d')=CURDATE()) AND approve = '1') as new_,(select count(*) from ". PREFIX ."_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND approve = '1') as allnews_from ". PREFIX ."_category ct");$count_news_of_category = '';while($row = $db->get_row($sql_result)){if( $row['new_'] == '0') {$news_now = '';} else {$news_now = '<font color="#CC0000">+'.$row['new_'].'</font> | ';};$t = '[ '.$news_now.$row['allnews_'].' ]';$tpl->set('{count_categ_'.$row['id'].'}', $t);$count_news_of_category .= $row['id'].'#'.$t.'|';}
[/code]
Або вище вставляємо такий код, якщо хочемо щоби кількість виводилося так - (255 / +6):
$sql_result = $db->query("select ct.id,(select count(*) from ". PREFIX ."_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND (DATE_FORMAT(date, '%Y%m%d')=CURDATE()) AND approve = '1') as new_,(select count(*) from ". PREFIX ."_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND approve = '1') as allnews_from ". PREFIX ."_category ct");$count_news_of_category = '';while($row = $db->get_row($sql_result)){if( $row['new_'] == '0') {$news_now = ')';} else {$news_now = '/+'.$row['new_'].')';};$t = '('.$row['allnews_'].$news_now;$tpl->set('{count_categ_'.$row['id'].'}', $t);$count_news_of_category .= $row['id'].'#'.$t.'|';}
[/code]
2. У меню вставляємо куди потрібно:
{count_categ_1}
Де 1 - id номер відповідної в меню категорії або підкатегорії.
Проскакує 1 запит БД при перегляді будь-якої сторінки!
4.Открываем templates/Ваш шаблон/profile_popup.tpl ищем Последнее посещение: {lastdate} ниже добавить: Стаж юзера: {stag}