Не нравятся результаты поиска? Попробуйте другой поиск!

Top-files


     11.05.2014    Модули    1518

вопрос
Добрый день!
Есть такой прекрасный модуль Top-files
Возник вопрос, как сделать вывод ТОП с определенной категории ?


Зарание благодарен!

Ответил: vitnet


<?php

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

$is_change = false;

if( $config['allow_cache'] != "yes" ) {
    $config['allow_cache'] = "yes";
    $is_change = true;
}

$topfiles = dle_cache( "topfiles", $config['skin'], $member_id['user_group'] );

if( $topfiles === false ) {
    
    function ok_type($n) {
        return ($n%10==1 && $n%100!=11 ? 0 : ($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2));
    }
    
    $sum = 10;
    $cat = "1"; // ID категорий через запятую

    //$db->query( "SELECT * FROM " . PREFIX . "_files WHERE dcount > 0 ORDER BY dcount DESC LIMIT 0," . $sum );
    $count = $db->query( "SELECT p.id, p.category, f.id, f.news_id, f.name, f.dcount FROM " . PREFIX . "_files f LEFT JOIN " . PREFIX . "_post p ON (p.id=f.news_id) WHERE f.dcount > 0 AND p.category IN ({$cat}) ORDER BY dcount DESC LIMIT 0," . $sum );

    $i = 1;

    $file_list = array();
    
    while ( $row = $db->get_row($count) ) {
        $alls_num = array('раз', 'раза', 'раз');
        $counts_u = $alls_num[ok_type($row['dcount'])];
        
        if( $user_group[$member_id['user_group']]['allow_files'] ) {
            if( $user_group[$member_id['user_group']]['allow_hide'] ) {
                $files = "<li><a href=\"/engine/download.php?id=" . $row['id'] . "\" title=\"Скачали: " . $row['dcount'] . " " . $alls_num[ok_type($row['dcount'])] . "\">" . $i . ". " . $row['name'] . "</a></li>";
            } else {
                $files = "<li>Скрытый текст</li>";
            }
        } else {
            $files = "<li>Загрузка запрещена</li>";
        }
        
        $file_list[] = $files;
        $i++;
    }
    $db->free($count);
    
    $topfiles = ( count( $file_list ) ) ? implode( "", $file_list ) : "Ничего нет";

    create_cache( "topfiles", $topfiles, $config['skin'], $member_id['user_group'] );
}

echo $topfiles;

if( $is_change ) $config['allow_cache'] = false;

?>

Комментарии пользователей (13)

kolumb
8

205 | 46

kolumb - 11 мая 2014 20:35 - Юзер

Почему не работает ?
$db->query( "SELECT c.id, f.name, f.dcount FROM " . PREFIX . "_files as f, " . PREFIX . "_category as c WHERE c.id IN (2,13) AND f.dcount > 0 ORDER BY f.dcount DESC LIMIT 0,$sum" );

kolumb
8

205 | 46

kolumb - 12 мая 2014 00:32 - Юзер

Спасибо огромное все работает!
Если можно, подскажите как к этому запросу:
$count = $db->query( "SELECT p.id, p.category, f.id, f.news_id, f.name, f.dcount FROM " . PREFIX . "_files f LEFT JOIN " . PREFIX . "_post p ON (p.id=f.news_id) WHERE f.dcount > 0 AND p.category IN ({$cat}) ORDER BY dcount DESC LIMIT 0," . $sum );

Добавить еще таблицу category в ней, мне нужно поле name !

vitnet
218

2172 | 930

vitnet - 12 мая 2014 21:58 - Эксперт

Цитата: kolumb
мне нужно поле name

Для каких целей?

Может проще узнать имя категории по ее ID?

kolumb
8

205 | 46

kolumb - 12 мая 2014 23:15 - Юзер

vitnet
Добавил так :
$count = $db->query(" SELECT p.id, p.category, f.id, f.news_id, f.name, f.dcount, c.id, c.name FROM " . PREFIX . "_files f LEFT JOIN " . PREFIX . "_post p ON (p.id=f.news_id) LEFT JOIN " . PREFIX . "_category c ON (c.id=p.category) WHERE f.dcount > 0 AND p.category IN ({$cat}) ORDER BY dcount DESC LIMIT 0," . $sum);

Все работает но, есть НО
Идет конфликт
$row['name']
так как поле name есть и в dle_files и в dle_category

Не пойму как вывести !
К примеру:
echo "Имя категории", $row['name'];
echo "Имя атаччмента", $row['name'];

vitnet
218

2172 | 930

vitnet - 12 мая 2014 23:58 - Эксперт

Цитата: vitnet
Может проще узнать имя категории по ее ID?

Юзайте
$cat_info[$row['category']]['name']

kolumb
8

205 | 46

kolumb - 13 мая 2014 00:16 - Юзер

Цитата: vitnet
$cat_info[$row['category']]['name']

Капец как все просто ) СПАСИБО !
P.S Скажите а, $cat_info я так понимаю можно в любой таблицы узнавать инфу?
dle_ignore_list , dle_links, dle_images и тд ?

kolumb
8

205 | 46

kolumb - 17 мая 2014 11:57 - Юзер

Если можно подскажите как еще сделать ?
Если аттач взят в тег
[hide]аттач[/hide] 

тогда выводится
Внимание! У вас нет прав для просмотра скрытого текста.

А то пулучается гости могут качать , а в самой новости нет!
Делал так
if ($user_group[$member_id['user_group']]['allow_hide'])
    $row['name'] = preg_replace("'\[hide\](.*?)\[/hide\]'si", "\\1", $row['name']);
else
    $row['name'] = preg_replace("'\[hide\](.*?)\[/hide\]'si", "<div class=\"quote\">" . $lang['news_regus'] . "</div>", $row['name']);

Но результата ноль!

vitnet
218

2172 | 930

vitnet - 17 мая 2014 12:46 - Эксперт

Дополнил ответ, будьте внимательны есть изменения в кеше

kolumb
8

205 | 46

kolumb - 17 мая 2014 13:04 - Юзер

vitnet
А, если в тегагах модуля Хайд ?
[hidden=5,10,15]аттач[/hidden]

или
[hide=5,10,15]аттач[/hide]

vitnet
218

2172 | 930

vitnet - 17 мая 2014 15:56 - Эксперт

Мы же не парсим новость а всего лишь выводим то что в нее прикрепили, так что делайте выводы

kolumb
8

205 | 46

kolumb - 17 мая 2014 18:24 - Юзер

Ясно!
А как сделать что бы текст выводился разный ?
if( $user_group[$member_id['user_group']]['allow_hide'] ) {
            $files = "<li><a href=\"/engine/download.php?id=" . $row['id'] . "\" title=\"Скачали: " . $row['dcount'] . " " . $alls_num[ok_type($row['dcount'])] . "\">" . $i . ". " . $row['name'] . "</a></li>";
        } else {
            $files = "Скрытый текст";
        }


if( $user_group[$member_id['user_group']]['allow_files'] ) {
            $files = "<li><a href=\"/engine/download.php?id=" . $row['id'] . "\" title=\"Скачали: " . $row['dcount'] . " " . $alls_num[ok_type($row['dcount'])] . "\">" . $i . ". " . $row['name'] . "</a></li>";
        } else {
            $files = "Загрузка запрещена";
        }

Если так вставить тогда пишет текст того кода который выше!

vitnet
218

2172 | 930

vitnet - 17 мая 2014 20:00 - Эксперт

Дополнил ответ

kolumb
8

205 | 46

kolumb - 18 мая 2014 00:36 - Юзер

vitnet
Если в настройка стоит
Просмотр скрытого текста НЕТ
А
Разрешить скачивание файлов ДА

И аттач не взят в теги
[hide]аттач[/hide]
, все равно пишет Скрытый текст когда в полной новости можно скачать без проблем!

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

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