Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как вывести количество новых новостей за 24 часа в меню категорий {catmenu}?

Как вывести количество новых новостей за 24 часа в меню категорий {catmenu}?


     09.01.2017    Общие вопросы по PHP, Хаки    363

вопрос
Здравствуйте
в dle 1.2 появилась возможность автоматического вывода категорий в виде меню {catmenu}
тег {news-count} выводит число новостей с категории.

хочу добавить еще один тег, например: {news-new-count} который выводил бы количество новостей за последние 24 часа.
как подобное реализовать?

прошу помощи в реализации.

Ответа пока нет


7 комментариев

Верстала
Юзер

Верстала - 18 января 2017 20:57 -

Удалите ответ.
он совершенно неверный

PunPun
Эксперт

PunPun - 18 января 2017 23:19 -

Верстала, чем не устраивает тег {cat_today:1} ?

Истина в противоречии.​

Верстала
Юзер

Верстала - 19 января 2017 00:10 -

вот как Вы хотите реализовать
[item]<li><a href="{url}">{name} {cat_today:1}</a></li>[/item]
но это не верное решение потому что тогда во всем списке категорий будет стоять число новых категорий только с 1 категории потому что мы указали 1.
значение id должно браться с базы, как на примере значение с {url} или {name}

PunPun
Эксперт

PunPun - 19 января 2017 07:16 -

Верстала, открыть /engine/classes/templates.class.php найти
$template = str_replace( "{name}", $row['name'], $template );
Выше вставить
$template = str_replace( "{id}", $row['id'], $template );
+ правки ниже. В итоге: {cat_today:{id}}

Истина в противоречии.​

Верстала
Юзер

Верстала - 19 января 2017 16:54 -

Gameer,
К сожалению такой вариант не подходит так как этот способ не считает новые новости с под категорий.
но все равно, благодарю за уделенное время.

PunPun
Эксперт

PunPun - 18 января 2017 21:07 -

1. Открываем /engine/modules/main.php находим:
$tpl->compile ( 'main' );
Выше вставляем:
$tpl->copy_template = preg_replace_callback( "#{cat_all\:(.+?)}#is", function($data) use ($db, $config)
{
    return catCountFunction($data, $config, $db);
}, $tpl->copy_template );
$tpl->copy_template = preg_replace_callback( "#{cat_today\:(.+?)}#is", function($data) use ($db, $config)
{
    return catCountFunction($data, $config, $db, true);
}, $tpl->copy_template );


2. Открываем /engine/modules/functions.php находим:
function get_url($id) {
Выше вставляем:
function catCountFunction($cat_id, $config, $db, $curdate = false) 
{ 
    $cat_ids = array(); 
    if(substr_count($cat_id[1], ",")) 
        $cat_ids = explode(",", $db->safesql(trim(strip_tags(stripslashes($cat_id[1]))))); 
    else 
        $cat_ids[] = is_numeric($cat_id[1]) ? intval($cat_id[1]) : false; 
    if(!count($cat_ids)) return; 

    $cache_cat_news = false; 
    $cache_cat_news = dle_cache("news_acn" . intval($curdate), $config['skin'] . implode($cat_ids), false); 
    
    if ($config['allow_multi_category']) 
        $cat_query = "category regexp '[[:<:]](" . implode ( '|', $cat_ids ) . ")[[:>:]]'"; 
    else 
        $cat_query = "category IN ('" . implode ( "','", $cat_ids ) . "')"; 
    if (!$cache_cat_news) 
    { 
        if($curdate == false) 
            $row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$cat_query}"); 
        else 
            $row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$cat_query} AND date LIKE '".date("Y-m-d")."%'"); 
        $newscount = ($row['count'] > 0) ? intval($row['count']) : false; 
        if($newscount) 
            $cache_cat_news = $newscount; 
        create_cache("news_acn" . intval($curdate), $cache_cat_news, $config['skin'] . implode($cat_ids), false); 
    } 

    return ($cache_cat_news > 0 ? (($curdate == true) ? "+" : "") . $cache_cat_news : ""); 
}


Использование:
В нужном месте доступны теги:
{cat_all:1} или {cat_all:1,2,3,4} - выведет количество новостей за все время с этих категорий.
{cat_today:1} или {cat_today:1,2,3,4} - выведет количество новостей за сегодня с этих категорий.
Для благодарностей: R118095764291

Истина в противоречии.​

Stasiq
Юзер

Stasiq - 12 марта 2017 09:28 -

Спасиб

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх