Разместить объявление
Rukassa - надёжная платёжная система для сайтов и телеграм ботов
хостинг
VIPAdmin / CMS / Datalife Engine / Хаки DLE / cmCatcount хак для DLE

cmCatcount хак для DLE



DLE хак cmCatcount от iCooLER — хак предназначен для вывода количества новостей в любой конкретной категории, может отобразить число публикаций в любом месте на странице. Возможности хака cmCatcount может показывать выражение больше, меньше, либо равно =<>, кол-во публикаций для определенной категории всего одним запросом, подключение можно осуществлять в одном месте, есть кеш, простая установка. В статье приведены два варианта хака для старых версий простой вывод количества новостей и для новых.

DataLife Engine хак cmCatcount — от iCooLER реализует возможность выводить количество новостей в любой конкретной категории в любом месте на странице.

Преимущества хака cmCatcount:

  — Реализованы условия больше, меньше, равно =<>
    — Получает кол-во новостей для каждой категории одним запросом
    — Подключение в одном месте (т.е. не надо подключать скрипт через include отдельно для каждой категории)
    — Использует кэш (префикс news_)


Как подключить:
Файл из архива пихаем в папку /engine/modules/ и в файле main.php перед строкой

echo $tpl->result['main']; прописываем include ENGINE_DIR . '/modules/cm.catcount.php';


Как добавлять в шаблоны *.TPL:

  {catcount:12} — выведет кол-во новостей в категории с ID 12
    [catcount:12 > 100] в категории 12 больше 100 новостей [/catcount:12]
    [catcount:12 = 100] в категории 12 ровно 100 новостей [/catcount:12]
    [catcount:12 < 100] в категории 12 меньше 100 новостей [/catcount:12]


P.S. Скрипт на живом сайте не тестировал!

 function cm_catcount( $matches ) {

        global $cat_info_count;
        if ( $matches[2] == '=' ) return ( $cat_info_count[$matches[1]] == $matches[3] ) ? $matches[4] : '' ;
            elseif( $matches[2] == '<' ) return ( $cat_info_count[$matches[1]] < $matches[3] ) ? $matches[4] : '' ;
                elseif( $matches[2] == '>' ) return ( $cat_info_count[$matches[1]] > $matches[3] ) ? $matches[4] : '';
                    else return false;
    }

    if ( !$cache = dle_cache( 'news_cm_categories_count', $config['skin'], false ) ) {
        $count = $db->query("SELECT c.id AS id, (SELECT COUNT(*) FROM " . PREFIX . "_post AS p WHERE p.category REGEXP '[[:<:]]' + c.id + '[[:>:]]') AS count FROM " . PREFIX . "_category AS c");
        while ( $row = $db->get_array($count) ) $cat_info_count[$row['id']] = $row['count'];
        create_cache( 'news_cm_categories_count', serialize($cat_info_count), $config['skin'], false );
    } else $cat_info_count = unserialize($cache);

    foreach ($cat_info_count as $id => $count) $tpl->result['main'] = str_replace("{catcount:{$id}}", $count, $tpl->result['main']);

    $tpl->result['main'] = preg_replace_callback("#\[catcount:([0-9]+)[\s]*?([=<>])[\s]*?([0-9]+)\](.*?)\[\/catcount:[0-9]+\]#is", "cm_catcount", $tpl->result['main']);


Ещё один хак, который уже есть в версии DLE 13 и 14 и выше, для вывода количества новостей в категории.
Внимание! В версии 13 вывод количества новостей в категории уже интегрирован разрабочтиками кодом

{catnewscount id="X"}


Для старых версий вывод количества новостей в категории для DLE 9.х-11.1 можно сделать этим хаком.

Установка:
1. Открыть engine/init.php и найти:

$banned_info = get_vars ( "banned" );


Добавить выше:

$news_count_in_array = dle_cache ( "news", "newscountcacheincats" );
if ($news_count_in_array) {
	$news_count_in_array = json_decode($news_count_in_array, true);
	if ( !is_array($news_count_in_array) ) $news_count_in_array = array();
} else {
	$news_count_in_array = array();
	if( $config['no_date'] AND !$config['news_future'] ) {
		$thisdate = date( "Y-m-d H:i:s", $_TIME );
		$where_date = " AND date < '" . $thisdate . "'";
	} else $where_date = "";

	$db->query( "SELECT category, COUNT(*) AS count FROM " . PREFIX . "_post WHERE approve=1" . $where_date . " GROUP BY category" );
	while ( $row = $db->get_row() ) {
		if(!$row['category']) continue;
		$cat_array = $temp_cat_array = explode(",", $row['category']);
		foreach ( $temp_cat_array as $value ) {
			if(!isset($news_count_in_array[$value])) $news_count_in_array[$value] = $row['count'];
			else $news_count_in_array[$value] = $news_count_in_array[$value] + $row['count'];
			if( $config['show_sub_cats']) {
				$temp_parent = $cat_info[$value]['parentid'];
				while ( $temp_parent ) {
					if( !in_array($temp_parent, $cat_array) ) {
						if(!isset($news_count_in_array[$temp_parent])) $news_count_in_array[$temp_parent] = $row['count'];
						else $news_count_in_array[$temp_parent] = $news_count_in_array[$temp_parent] + $row['count'];
						$cat_array[] = $temp_parent;
					}
					$temp_parent = $cat_info[$temp_parent]['parentid'];
				}
			}
		}
	}
	create_cache("news", json_encode($news_count_in_array), "newscountcacheincats");
	unset($temp_parent, $temp_cat_array, $cat_array);
}

foreach ($cat_info as $key => $value) {
	$cat_info[$key]['newscount'] = (int)$news_count_in_array[$key];
}
unset($news_count_in_array);


2. Открыть engine/classes/template.class.php и найти:

$this->template = file_get_contents( $this->dir . "/" . $tpl_name );


Добавить ниже:


		if (strpos ( $this->template, "{catnewscount" ) !== false) {
			$this->template = preg_replace_callback ( "#\\{catnewscount id=['\"](.+?)['\"]\\}#i", array( &$this, 'catnewscount'), $this->template );
		}


Найти еще:

$template = file_get_contents( $templatefile );


Добавить ниже:

if (strpos ( $template, "{catnewscount" ) !== false) {
			$template = preg_replace_callback ( "#\\{catnewscount id=['\"](.+?)['\"]\\}#i", array( &$this, 'catnewscount'), $template );
		}


Найти еще:

	function compile($tpl) {


Добавить выше:

function catnewscount($matches = array()) {
		global $cat_info;
		$id = (int)$matches[1];
		return (int)$cat_info[$id]['newscount'];
	}


Готово!

Теперь, для вывода количества, можно использовать тег:

{catnewscount id="id_категории"}


Версия DLE

[attachment=14865:hak-cmcatcount.rar]

cmCatcount хак для DLE

1-04-2022, 21:52 .zip

Скачать

ТОП Записей

Автор: Enoot

Дата: 01.04.2022 21:52

Просмотров: 571

Оцените статью:

0 0

Партнерки

Обзор RollerAds: умная пуш-сеть с инновационными инструментами
Обзор RollerAds: умная пуш-сеть с инновационными инструментами
-1
Перейти
Huffson Group: премиальная CPA-сеть для iGaming
Huffson Group: премиальная CPA-сеть для iGaming
-1
Перейти

Еще немного интересного

Сервисы / Парсинг A-PARSER - парсер сайтов № 1
Сервисы / Сервера и хостинги Хостинг PrivateAlps (Игнорирует DMCA)
Сервисы / Платёжные системы Merchant001- надежный эквайринг для сайта
Статьи Дорвеи 2023-2024
Арбитраж трафика / Статьи Арбитраж трафика на пуш уведомлениях
Статьи / Софт / Антидетект Браузеры Лучшие антидетект браузеры
Сервисы / Трекеры / Клоака Keitaro PRO - трекер для арбитража трафика
Хостинг / Скрипты сайтов / Статьи Как настроить работу почты
Хостинг / Скрипты сайтов / Статьи Урок доступ mysql с любого ip
Хостинг / Скрипты сайтов / Статьи Как сделать моментальную установку сервера? HOSTINPL
Хостинг / Статьи Exim (Восстановление по e-mail)
Скрипты сайтов / Статьи JavaScript - Меняем CSS

Отзывы (0)




To connect permitted only files with the extension: .tpl or .php To connect permitted only files with the extension: .tpl or .php