• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Поиск Колличество новостей рядом категорией

Статус
В этой теме нельзя размещать новые ответы.

aboos

Создатель
Регистрация
17 Июн 2010
Сообщения
20
Реакции
0
Нашел кучу в сети хаков для вывода кол-ва новостей рядом, одним пользовался работает на 8.5 а теперь проблемс в том что ругается на 9dle как быть?
 
Нашел кучу в сети хаков для вывода кол-ва новостей рядом...
Рядом с чем? Или кол-во новостей в ряд? :-] если писать то правильно и полностью, а не незаконченными фразами...
:p
 
Просто ругается на выводимый тег. Содается файл news_count.php в папке модули и этот файл должен как я понял инклудиться в индекс.пхп В общем не хочет работать. Давай я код сюда выложу:
1) кэширование количества новостей;
2) возможность убирать «0», если новостей за сегодня по категории нет;
3) исправлен баг неточного подсчета количества новостей, если новость в нескольких категориях.

УСТАНОВКА для версий DLE8.2-8.5

1) Создаем новый php файл, и вставить в него следущий код:
<?php

/********* Количество новостей в главном меню **********/
$count_news = dle_cache( "count_news_of_category", $config[’skin’] );
if( !$count_news )
{
//кэш с количеством новостей пуст
$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))
{
$t = $row['new_'].'|'.$row['allnews_'];
$tpl->set('{count_categ_'.$row['id'].'}', $t);
$count_news_of_category .= $row['id'].'#'.$t.'¦';
}
/**В кэш **/
create_cache( 'count_news_of_category', $count_news_of_category);
$db->free();
}
else
{
//достанем количество новостей из кэша
$arr_newscount = explode('¦', $count_news);
for ($i = 0; $i <= count($arr_newscount) - 2; $i++)
{
$arr_onenews = explode('#', $arr_newscount[$i]);
$tpl->set('{count_categ_'.$arr_onenews[0].'}', $arr_onenews[1]);
}
}
/************************************/


?>

Сохроняем его под именем news_count.php в engine/modules/

2) Открываем index.php
находим:
require_once ROOT_DIR . '/engine/init.php';
ниже вставляем:
require_once ROOT_DIR . '/engine/modules/news_count.php';
3) Открываем файл ./engine/modules/addnews.php
находим:
$thistime = date( "Y-m-d H:i:s", $added_time );
ниже вставляем:
clear_cache('count_news_of_category');

4) Открываем /engine/ajax/editnews.php
находим:
clear_cache( 'news_' );

ниже вставляем:
clear_cache('count_news_of_category');
5) В шаблоне main.tpl ставите теги на количество новостей.
Тег выглядит так: {count_categ_2}, где 2 – это id категории.
Например у меня в шаблоне main.tpl, где я отображаю менюшку, будет выглядит так:
Для просмотра ссылки Войди или Зарегистрируйся

Отобразиться как Софт 5|258.
(о формировании внешнего вида содержимого тега см. ниже)

Формировании внешнего вида
Внешний вид количества новостей (то, что заменит тег в шаблоне) формируется в файле news_count.php который мы делали на первом этапе.
В строке №16:
$t = $row['new_'].'|'.$row['allnews_'];

Для данной строки содержимое отобразится так: 8|2358

Рассмотрим примеры:
Пример 1:
Если надо скобки – все просто – указанную строку меняем на:
$t = ' ('.$row['new_'].'/'.$row['allnews_']. ' )';

Отобразиться: (8/2358)
Пример 2:
$t = ' ('.$row['allnews_'].'/'.$row['new_']. '+)';

Отобразиться: (2358/8+)
Пример 3:
$t = ' (всего:'.$row['allnews_'].', сегодня:'.$row['new_']. ')';

Отобразиться: (всего: 2358 сегодня: 8)

Кроме того, есть возможность убрать 0 (ноль), если новостей на сегодня нет.
Для этого, в коде, ВМЕСТО строки
$t = $row['new_'].'|'.$row['allnews_'];

ставим 2 строки
if( $row['new_'] == '0') {$news_now = '(';} else {$news_now = '('.$row['new_'].'/';};
$t = $news_now.$row['allnews_'].')';

Если новости есть, отобразится: (8/2358)
Если новостей за сегодня нет, отобразится: (2358)

вот в принципе хак, но на 9-ке работать не хочет.
Дело в том что я нашел отличный шаблон в котором дописан поиск фильтрации в главном поле поиска, не хотелось с ним растоваться, а шаблон на 8.5 работать не хочет, точнее дописанный поиск моросит!
 
Поставил ради теста только что.
Всё работает...:nezn:
 
какой ужас.
а не проще переписать функцию кэша категорий самого dle ?
 
Поставил ради теста только что.
Всё работает...:nezn:
На 9-ке работает???
на 9-ке что то у меня не получилось(
на 8.5 отлично встает!
CNiks0N написал(а):
какой ужас.
а не проще переписать функцию кэша категорий самого dle ?
Да я б с радостью все на свете переписал бы, на вот не совсем волоку в этих тонкостях. Хак не мой, в сети нашел на куче сайтов по дле
 
Все ребята, тема закрыта, проблему решил, всем спасибо!
 
Все ребята, тема закрыта, проблему решил, всем спасибо!
Совет на будущее - излагай что надо полностью правильно и на русском языке :-] с одной стороны конечно понятно что нужно тебе было, но с другой - с того что ты написал - ХЗ что тебе нужно...
 
Совет на будущее - излагай что надо полностью правильно и на русском языке :-] с одной стороны конечно понятно что нужно тебе было, но с другой - с того что ты написал - ХЗ что тебе нужно...
Ок, договорились ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху