Форум о социальных сетях Поиск по форуму Инвестиции SMM обучение SMM курсы
Форум о социальных сетях Поиск по форуму Инвестиции SMM обучение SMM курсы
  • Страница 1 из 1
  • 1
Сколько файлов в категории
#1
Воскресенье, 30.01.2011, 00:49
Rast1shkO_o
Проверенный
Сообщения: 747
Репутация: 1661
Всем доброе время суток!
У меня сложилась такая проблемка:
Мне захотелось сделать в категорях счётчик - показов, сколько всего файлов в данной категории.

Из этого:

Я хочу поулчить это:

Я на DLE 8.5 | Кто знает, пожалуйста помогите :) , я в dle начинающий) Только осваиваюсь chuckle

by Rast1shkO_o ©
#2
Воскресенье, 30.01.2011, 08:52
naxal4ik
Проверенный
Сообщения: 312
Репутация: 312

Установка для версий DLE 8.2 - 8.5:

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

Code
<?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
Находим:

Code
require_once ROOT_DIR . '/engine/init.php';

Ниже вставляем:

Code
require_once ROOT_DIR . '/engine/modules/news_count.php';

3) Открываем файл /engine/modules/addnews.php
Находим:

Code
$thistime = date( "Y-m-d H:i:s", $added_time );

Ниже вставляем:

Code
clear_cache('count_news_of_category');

4) Открываем /engine/ajax/editnews.php
Находим:

Code
clear_cache( 'news_' );

Ниже вставляем:

Code
clear_cache('count_news_of_category');

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

Code
[url=http://1024kbytes.com/programms/]Софт   {count_categ_2}[/url]

Формировании внешнего вида
Внешний вид количества новостей (то, что заменит тег в шаблоне) формируется в файле news_count.php который мы делали на первом этапе.
В строке №16:

Code
$t = $row['new_'].'|'.$row['allnews_'];

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

Рассмотрим примеры:
Пример 1:
Если надо скобки – все просто – указанную строку меняем на:

Code
$t = ' ('.$row['new_'].'/'.$row['allnews_']. ' )';

Отобразиться: (8/2358)
Пример 2:

Code
$t = ' ('.$row['allnews_'].'/'.$row['new_']. '+)';

Отобразиться: (2358/8+)
Пример 3:

Code
$t = ' (всего:'.$row['allnews_'].', сегодня:'.$row['new_']. ')';

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

Кроме того, есть возможность убрать 0 (ноль), если новостей на сегодня нет.
Для этого, в коде, ВМЕСТО строки:

Code
$t = $row['new_'].'|'.$row['allnews_'];

Ставим 2 строки:

Code
if( $row['new_'] == '0') {$news_now = '(';} else {$news_now = '('.$row['new_'].'/';};
$t = $news_now.$row['allnews_'].')';

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

Автор не я)

  • Страница 1 из 1
  • 1
Поиск:
Форум
Социальные сети
Хостинг от uCoz