|
Подсчет количества файлов в категории с учетом файлов в подкатегориях Slaed 2.1 и выше (Lite ветка)
Для тех, кому важна статистика в модуле файлов.
Пример смотрим у меня в Файловом архиве. Наведя мышку на количество дождитесь всплывающей подсказки.
1. Добавим в стили Код | 1 2
| .for_c4et0 {color: #aaa;font-size: 9px;}
.for_c4et1 {color: #aaa;font-size: 9px; text-decoration: underline; cursor:pointer;} |
2. Заменим функцию на новую. Все изменения прокомментированы PHP - Код | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| <?php function categories($id="") { global $prefix, $db, $module_name, $tabcolumn, $showsubkat; // добавлено $massiv3 static $massiv, $massiv2, $massiv3; $id = (intval($id)) ? $id : 0; $where = ($id) ? "WHERE parentid = '$id'" : ""; $tdwidth = intval(100/$tabcolumn); if (!is_array($massiv)) { $result = $db->sql_query("SELECT cid, title, parentid FROM ".$prefix."_files_categories ".$where.""); while (list($cid, $title, $parentid) = $db->sql_fetchrow($result)) $massiv[] = array($cid, $title, $parentid); } if (!is_array($massiv2)) { $result = $db->sql_query("SELECT cid, title, parentid FROM ".$prefix."_files_categories"); while (list($cid, $title, $parentid) = $db->sql_fetchrow($result)) $massiv2[] = array($cid, $title, $parentid); }
// начало вставки 1 if (!is_array($massiv3)) { $result = $db->sql_query("SELECT fc.cid, fc.parentid, Count(f.lid) AS tmp FROM ".$prefix."_files AS f INNER JOIN ".$prefix."_files_categories AS fc ON (fc.cid=f.cid) WHERE status != '0' GROUP BY fc.cid, fc.parentid"); //0 //1 в текущ//2всего//3в подкат //4 while (list($cid, $parentid, $summ) = $db->sql_fetchrow($result)) $massiv3[$cid] = array($parentid, $summ, $summ, 0, $cid);
foreach ($massiv3 as $key => $val) { $flag = $val[0]; while ($flag!=0) { $massiv3[ $flag ][2] = $massiv3[ $flag ][2] + $val[1]; $massiv3[ $flag ][3] = $massiv3[ $flag ][3] + $val[1]; $flag = $massiv3[ $flag ][0]; } } } // конец вставки 1
if ($massiv) { foreach ($massiv as $key => $val) { if ($val[2] == $id) { // добавлено условие, что бы выводился ноль, в случае отсутствия файлов в категории if (!isset($massiv3[$val[0]][1])) {$massiv3[$val[0]][1] = 0;} if (!isset($massiv3[$val[0]][2])) {$massiv3[$val[0]][2] = 0;} if (!isset($massiv3[$val[0]][3])) {$massiv3[$val[0]][3] = 0;} // добавлено $massiv3[бла-бла], расставлены стили и титлы $ccontent .= "<td valign=\"top\" width=\"".$tdwidth."%\"><table border=\"0\"><tr><td><img border=\"0\" src=\"images/blocks/Files.gif\" title=\"$title\"></td><td><a href=\"index.php?name=$module_name&op=cat&id=$val[0]\" title=\"$val[1]\"><b>$val[1]</b></a> " ."<b r><font class=\"for_c4et0\"><span class=\"for_c4et1\" title=\"Всего в категории (с учетом кол-ва в подкатегориях): " .$massiv3[$val[0]][2]."\">сумм. " .$massiv3[$val[0]][2] ."</span> / <span class=\"for_c4et1\" title=\"Всего в категории (без учета кол-ва в подкатегориях): " .$massiv3[$val[0]][1]."\">в кат. " .$massiv3[$val[0]][1] ."</span> / <span class=\"for_c4et1\" title=\"Всего в подкатегориях: " .$massiv3[$val[0]][3]."\">в пкат. " .$massiv3[$val[0]][3] ."</span></font>" ."</td></tr>"; if ($showsubkat == 1 && $massiv2) { foreach ($massiv2 as $key => $val2) { if ($val[0] == $val2[2]) { // добавлено условие, что бы выводился ноль, в случае отсутствия файлов в категории if (!isset($massiv3[$val2[0]][1])) {$massiv3[$val2[0]][1] = 0;} if (!isset($massiv3[$val2[0]][2])) {$massiv3[$val2[0]][2] = 0;} if (!isset($massiv3[$val2[0]][3])) {$massiv3[$val2[0]][3] = 0;} // добавлено $massiv3[бла-бла], расставлены стили и титлы $ccontent .= "<tr><td colspan=\"2\"><img border=\"0\" src=\"images/navi.gif\" title=\"$val2[1]\"> <a href=\"index.php?name=$module_name&op=cat&id=$val2[0]\" title=\"$val2[1]\">$val2[1]</a> " ."<b r><font class=\"for_c4et0\"><span class=\"for_c4et1\" title=\"Всего в категории (с учетом кол-ва в подкатегориях): " .$massiv3[$val2[0]][2]."\">сумм. " .$massiv3[$val2[0]][2] ."</span> / <span class=\"for_c4et1\" title=\"Всего в категории (без учета кол-ва в подкатегориях): " .$massiv3[$val2[0]][1]."\">в кат. " .$massiv3[$val2[0]][1] ."</span> / <span class=\"for_c4et1\" title=\"Всего в подкатегориях: " .$massiv3[$val2[0]][3]."\">в пкат. " .$massiv3[$val2[0]][3] ."</span></font>" ."</td></tr>"; } } } $ccontent .= "</table></td>"; if ($cont == ($tabcolumn - 1)) { $ccontent .= "</tr><tr>"; $cont = 0; } else { $cont++; } } } } if ($ccontent) { OpenTable(); echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"10\" align=\"center\"><tr>".$ccontent."</td></tr></table>"; list($files_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(lid) FROM ".$prefix."_files WHERE status !='0'")); list($cat_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(cid) FROM ".$prefix."_files_categories")); echo "<hr><center>"._ALLFILES.": <b>$files_num</b> "._INF." <b>$cat_num</b> "._ALLFILES2."</center>"; CloseTable(); } } ?> |
Дата публикации: 16.07.2007 Прочитано: 11869 раз |
|
Комментарии
ifahr | | Дата: 07.09.2007 | Комментарий: 6 |
| | Serg, красавчик!
Успешно применил твой хак в нескольких других модулях. Все отлично работает! Спасибо! | | Serg_pnz | | | | | Дата: 01.08.2007 | Комментарий: 5 |
| | MrSmit, весьма странно... когда тестировал вроде специально на это внимание обращал... Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот | | MrSmit | | | Дата: 01.08.2007 | Комментарий: 4 |
| | Serg_pnz ок. Есть еще вопросик по этому хаку...
Дело в том что если в категории много подкатегорий, а в этих подкатегориях есть тоже подкатегории, то не выводится количество файлов... Что нужно дописать чтобы устранить это???
Спасибо | | Serg_pnz | | | | | Дата: 01.08.2007 | Комментарий: 3 |
| | Цитата | У тебя в коде, что написан в этой теме.... тег или что это я не знаю.. (просто в PHP ,большой 0) <br>, между ними стоит пробел. Убери его... |
Это нарочно пробел поставлен - что бы статья отображалась правильно на сайте. (К сожалению бб-редактор в слаеде далек от совершенства, да и на том же ipb иногда без пробела или иного символа не разместить то, что хотелось бы - я имею ввиду код) Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот | | MrSmit | | | Дата: 01.08.2007 | Комментарий: 2 |
| | Тоже отличный и нужный хак. Вот только есть очень маленькая неполадочка.... когда выводится количество файлов в сумме, в категории и подкатегории, они не переносятся на новую строку.
У тебя в коде, что написан в этой теме.... тег или что это я не знаю.. (просто в PHP ,большой 0) <br>, между ними стоит пробел. Убери его... А то такие как я, ЛАМЕРЫ, попробуют и все, а разбираться не захотят.
Вот это нужно чуть подправить.
<b r><font class=
А так хак супер. Респект тебе | | sam07 | | Дата: 17.07.2007 | Комментарий: 1 |
| | Вау... Серж не перестаешь удивлять!
Думаю данный хак будет полезен если не всем, то многим, ибо "модернизировать" свой сайт ДОЛЖЕН каждый.
Ну а автору "модернизаций" и "тюнингов" троекратный respect!
Так держать! | |
|
|
Всего 16 на 2 страницах по 10 на каждой странице [<<] [ 1 | 2 ] |
|
|
|