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

Как сделать без вывода по времени подсчет количество материалов в категории?


     03.02.2016    Все вопросы » Общие вопросы по PHP    1646

вопрос
Доброго времени суток!
Помогите заточить под нужду сайта.
Суть модуля такая: вывод количества материалов категории по заданному времени.
Нужно поправить, чтобы он выводил за все время в нужных категориях.
Модуль удобен тем, что не требует правок движка и полностью бесплатный. Взял тут.
Сам модуль:


Вот инструкция по установке:

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


4 комментария

ПафНутиЙ
Админ

ПафНутиЙ - 3 февраля 2016 21:53 -

<?php

if (!defined('DATALIFEENGINE')) {
    die("Hacking attempt!");
}

$cfg = array(
    'hour'     => !empty($hour) ? $hour : '24',
    'template' => !empty($template) ? $template : 'nnt',
    'total'    => !empty($total) ? true : false,
);

if ($cat_id) {
    $c_id = "AND category IN ({$cat_id})";
}

$temp_date = ($cfg['total']) ? date('Y-m-d H:i', $_TIME) : date('Y-m-d H:i', $_TIME - (3596 * $cfg['hour']));

$nnt = false;

$nnt = dle_cache("news_nnt" . $cat_id, $config['skin'], true);

if (!$nnt) {

    if (file_exists(TEMPLATE_DIR . '/' . $cfg['template'] . '.tpl')) {

        if (!isset($tpl)) {
            $tpl      = new dle_template();
            $tpl->dir = TEMPLATE_DIR;
        } else {
            $tpl->result['nnt'] = '';
        }

        $tpl->load_template($cfg['template'] . '.tpl');

        $dateSelect = ($cfg['total']) ? "date <= '$temp_date' " : "date >= '$temp_date' AND date <= '$temp_date' + INTERVAL '" . $cfg['hour'] . "' HOUR";

        $row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE $dateSelect $c_id");

        $newscount = ($row['count'] > 0) ? $row['count'] : '';

        if ($newscount) {
            $tpl->set('[new]', "");
            $tpl->set('[/new]', "");
            $tpl->set('{new}', stripslashes($newscount));
            $tpl->set_block("'\\[not-new\\](.*?)\\[/not-new\\]'si", "");
        } else {
            $tpl->set_block("'\\[new\\](.*?)\\[/new\\]'si", "");
            $tpl->set('{new}', "");
            $tpl->set('[not-new]', "");
            $tpl->set('[/not-new]', "");
        }

        $tpl->compile('nnt');

        $nnt = $tpl->result['nnt'];

        create_cache("news_nnt" . $cat_id, $nnt, $config['skin'], true);

        $tpl->clear();
        $db->free();

    } else {

        $nnt = 'Отсутствует файл шаблона: ' . $config['skin'] . '/' . $cfg['template'] . '.tpl';

    }
}

echo $nnt;

Каков вопрос - таков и ответ. Просто помните об этом.

xatabich10
Юзер

xatabich10 - 4 февраля 2016 10:33 -

Жутко извиняюсь, но выводит все равно не все имеющиеся материалы в категории.
Вывод осуществляю так:
{include file="engine/modules/nnt.php?cat_id=37&hour=хх"}

Но сколько бы часов не поставил... все равно отображаются не все материалы. Если убрать: &hour=хх, то ничего не выводится.
Там где хх я пробовал разные значения 24, 48, 72, 72000 последний показал больше всего материалов, но не все имеющиеся.

ПафНутиЙ
Админ

ПафНутиЙ - 4 февраля 2016 10:36 -

{include file="engine/modules/nnt.php?cat_id=37&total=y"}

Каков вопрос - таков и ответ. Просто помните об этом.

xatabich10
Юзер

xatabich10 - 4 февраля 2016 10:49 -

Проверил на разных категориях и получается следующее: те что относительно свежие, показывает (номером) все материалы в категории, те что давние и имеют много материалов... подсчитывает только за какой то отрезок времени. Видимо ориентируется все еще по времени.

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

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

наверх