Неверный подсчет сообщений и тем при глубоких подразделах.

Автор Blackbot, 31 августа 2009, 19:20:11

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Blackbot

Здравствуйте. Мой сайт требует много подразделов, но к сожалению при множестве подразделов я заметил что на разделе главной странице количество тем и сообщений становит 3 Сообщений и 3 Тем. Но если зайти в раздел полностью то видно что сообщений и тем намного больше, но разделы уходят еще дальше и раздел на главной странице их как бы не подсчитывает. Надеюсь не слишком запутал  :) Может ли кто ответить как улучшить подсчитывание тем и сообщений в глубоких подразделах? Заранее спасибо!

CedarMill

Какая версия форума?

Можно попробовать: Обслуживание форума>Пересчитать все форумы и статистику.
I love SMF and Joomla!

Blackbot


CedarMill

Понятно, неоднократно встречался с данной проблемой в 1.1.4 и 1.1.8 тоже самое и в 1.1.10

Решение проблемы: как пересчитать все форумы и статистику SMF 1.1.10
I love SMF and Joomla!

Blackbot


Blackbot

Мод пред ставленый по ссылке не помогает наверное слишком старый, есть еще варианты? :'(


Blackbot


Blackbot

Поставил версию SMF 2.0 RC1.2 и та же проблема... А может вы знаете моды для этой версии?

MrCreatoR

В описании (туда видимо мало кто заглядывает :)) к опции «Добавлять количество сообщений в подразделах к общей статистике главного раздела» сказано:

ЦитироватьВключение этой функции означает, что сообщения расположенные в подразделах родительского раздела будут подсчитывать в статистике форума.
Т.е по сути функция работает как и задуманно, однако это не то что ожидается, имхо, тут должна быть дополнительная опция для подсчёта всех вложенных разделов.

svobodniy

Столкнулся с такой же проблемой, создав вчера подразделы. В корневом разделе тем нет, поэтому на главной странице форума у него пустая графа со статистикой. Где ж решение? :(

Serifa

Я всегда использовала подразделы, и даже трехэтажные - было одно время - но ни разу не обращала внимания, что форум чего-то там не считает. Вы меня прямо интригуете. Вот специально сейчас форум закрою и буду подразделы переставлять.
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

svobodniy

Зачем закрывать, можно быстро посчитать все сообщения/темы в подразделах 2 и более уровня одного раздела, потом выйти на главную и посмотреть сколько там написано в разделе... Там будет отображено только количество тем/сообщений из корневого раздела и подразделов 1 уровня, но не из подразделов 2 и более уровня.

Наглядный пример:
- корень (5 тем, 30 сообщений)
-- подраздел 1 уровня (3 темы, 15 сообщений)
--- подраздел 2 уровня (20 тем, 150 сообщений)

На главной странице будет написано только 8 тем и 45 сообщений...

svobodniy


Serifa

Не знаю, у меня есть раздел, внутри подраздел в подразделе. Там было 4 темы, сейчас в глубоком подразделе создала еще одну пробную - их стало пять.

15+7 = 22? В другом разделе в подразделе 15 тем (анкеты), внутри еще подраздел, там семь  тем. Итого 22, все подсчитывает. Может, просто тем нужно больше, чтобы форум сбился со счета?))
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

svobodniy

И общее количество отображается на главной странице форума в правой колонке напротив названия раздела?..

В каждом подразделе и разделе считаются количество тем на 2 уровня, не более... Т.е. темы из под-подраздела на главной форума не показывается... Делал пересчет, делал проверки на ошибки и т.д. - реакции ноль. Только переношу на уровень выше, сразу количество отображает на главной.

Serifa

Цитата: svobodniy от 16 октября 2009, 21:08:04
И общее количество отображается на главной странице форума в правой колонке напротив названия раздела?..

В каждом подразделе и разделе считаются количество тем на 2 уровня, не более... Т.е. темы из под-подраздела на главной форума не показывается... Делал пересчет, делал проверки на ошибки и т.д. - реакции ноль. Только переношу на уровень выше, сразу количество отображает на главной.

У меня все показывается. Но я давно заметила, что у меня вообще форум уникальный)) Все моды ставились без глюков и с первого раза, и вообще все работает всегда, если я сама не испорчу) Что значит: некриво поставленный форум. Кстати, ставила не я, так что респект моему хостеру, который это делал))
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

svobodniy

У меня тоже все работает и никогда никаких проблем не было. Вот первый раз почти за 2 года... Потянуло меня, блин, создать подраздел 3-го уровня...

svobodniy

Кстати, у Вас форум 1.х? (под аватаркой написано) Просто у меня SMF 2.0 RC1.2. Может это баг?

Serifa

У меня 1.1.10, правильно. Тогда вам надо к команде Симплемашинки обращаться. А почему нельзя просто свернуть все третьи подразделы? И проблема исчезнет.
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

svobodniy

Мне нужна структура аж до 4го уровня... А уже на 3м такие вот непонятки... Здоровенная ветвь с кучей тем, но которые находятся на 3-4 уровне, отображается на главной странице форума как ноль... 0 тем, 0 сообщений... Ужос :)

Drakonsa

Все таки перепроверьте
Цитата: digger от 01 сентября 2009, 05:00:29
Разделы форума - Настройки - Добавлять количество сообщений в подразделах к общей статистике главного раздела

Отключите - сохраните настройки - включите - сохраните

svobodniy

Делал - не помогало. Сделал сейчас еще 3 раза... Не помогло. На главной странице форума все еще зияет дырка (ноль) :)


svobodniy

В том то и дело, понять бы что это :) Соответственно забыть или добиваться исправления...

А пока думаю, как уменьшить древовидность своего форума :)

digger®

Так и задумано. http://www.simplemachines.org/community/index.php?topic=330850.0

И в переводе допущена ошибка.
"Count child's posts in parent's totals"
должно быть
"Добавлять количество сообщений в дочерних подразделах к общей статистике родительского раздела"
а не
"Добавлять количество сообщений в подразделах к общей статистике главного раздела"

Перевод исправил.

svobodniy

Жаль.. Как бы от этого избавиться? :) Мод?

З.Ы. Кстати, на счет новых сообщений, такая же тема... Не показывает.


svobodniy

У меня это упрощает, так как есть 5 архивов разных проектов, разложенных по годам и сезонам...

MSSMLV

Кто нибудь решил эту проблему? Ведь это довольно важно, а я так понял, что забросили. Поставил форум SMF 2.0 RC2 и столкнулся с бедой не подсчета сообщений. Все уже перерыл, но не нашел ничего толкового для решения. Подскажите плиз, как сделать, чтобы все сообщения считались или думать о другом движке. Мне SMF очень нравится, но очень нужна глубокая древовидность.

digger®

Цитата: MSSMLV от 05 марта 2010, 17:07:31
Кто нибудь решил эту проблему? Ведь это довольно важно, а я так понял, что забросили. Поставил форум SMF 2.0 RC2 и столкнулся с бедой не подсчета сообщений. Все уже перерыл, но не нашел ничего толкового для решения. Подскажите плиз, как сделать, чтобы все сообщения считались или думать о другом движке. Мне SMF очень нравится, но очень нужна глубокая древовидность.

Ну не считает и не считает. Это как то мешает пользоваться форумом и вложенными разделами?

MSSMLV

Я так понял работает по принципу "Ну катится, ну крутятся же колеса, ну подумаешь поршня прогорели..."

Мне нужен правильно работающий движок. И я думаю не очень смотрится форум, когда на многих ветках у него надпись "0 тем, 0 сообщений" из-за того, что они в разделах четвертого уровня.

GeorG

ЦитироватьЭто как то мешает пользоваться форумом и вложенными разделами?
Мешает видеть, новые появившиеся ответы^^ Хотя иконка на главной, обновляется :)
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

MSSMLV

Ребята, те кто силен в php, помогите решить проблемку. Может есть какой то мод или чуть править нуно, подскажите. Это реально нужно. И я думаю не только мне.

Drakonsa

Цитата: MSSMLV от 05 марта 2010, 17:41:09
Я так понял работает по принципу "Ну катится, ну крутятся же колеса, ну подумаешь поршня прогорели..."

Мне нужен правильно работающий движок. И я думаю не очень смотрится форум, когда на многих ветках у него надпись "0 тем, 0 сообщений" из-за того, что они в разделах четвертого уровня.


ЦитироватьDownload SMF 2.0 RC2
Note: As this is in development, we do not recommend running SMF 2.0 RC2 on a production site.


Нужен полностью работающий, ставьте 1.1.х

digger®

Цитата: MSSMLV от 05 марта 2010, 17:41:09
Я так понял работает по принципу "Ну катится, ну крутятся же колеса, ну подумаешь поршня прогорели..."

Мне нужен правильно работающий движок. И я думаю не очень смотрится форум, когда на многих ветках у него надпись "0 тем, 0 сообщений" из-за того, что они в разделах четвертого уровня.

Если так волнует вопрос, пишите в багрепорты и фичреквесты разработчикам.
Апните тему http://www.simplemachines.org/community/index.php?topic=365862.0

edmitriy

Значит так. Трабл тикет на основном форуме техподдержки уже создавалась (для версии 2.0). На самом деле, как выяснилось, эта проблема - не баг, а фича. Подсчёт статистики сделан именно таким образом, что подсчёт идёт максимум на 2 уровня вглубь, чтобы форум не тормозил на этом сложном запросе.
Подробное освещение проблемы тут.
Для тех, кто не знает английского языка, краткое решение выглядит так:
1) Сделать бэкап файла Sources/Subs-BoardIndex.php
2) Вызвать его на редактирование и найти
            LEFT JOIN {db_prefix}collapsed_categories AS cc ON (cc.id_cat = c.id_cat AND cc.id_member = {int:current_member})' : '')) . '
            LEFT JOIN {db_prefix}moderators AS mods ON (mods.id_board = b.id_board)
            LEFT JOIN {db_prefix}members AS mods_mem ON (mods_mem.id_member = mods.id_member)
      WHERE {query_see_board}' . (empty($boardIndexOptions['countChildPosts']) ? (empty($boardIndexOptions['base_level']) ? '' : '
          AND b.child_level >= {int:child_level}') : '
          AND b.child_level BETWEEN ' . $boardIndexOptions['base_level'] . ' AND ' . ($boardIndexOptions['base_level'] + 1)),

3) Заменить этот код на
            LEFT JOIN {db_prefix}collapsed_categories AS cc ON (cc.id_cat = c.id_cat AND cc.id_member = {int:current_member})' : '')) . '
            LEFT JOIN {db_prefix}moderators AS mods ON (mods.id_board = b.id_board)
            LEFT JOIN {db_prefix}members AS mods_mem ON (mods_mem.id_member = mods.id_member)
                WHERE {query_see_board}',

4) Найти там же код
                // Found a child of a child - skip.
              else
                      continue;

и закомментировать это всё.

После этого всё должно заработать.

Учтите, что на нагруженных форумах данная функция может привести к серьёзному подтормаживанию, по крайней мере судя по обсуждению в вышеуказанном топике. Используйте на свой страх и риск.

Макар

хм ............
а если в строке
AND b.child_level BETWEEN ' . $boardIndexOptions['base_level'] . ' AND ' . ($boardIndexOptions['base_level'] + 1)),
заменить +1 , для примера на +2
AND b.child_level BETWEEN ' . $boardIndexOptions['base_level'] . ' AND ' . ($boardIndexOptions['base_level'] + 3)),
то будет же считать третий уровень включительно .......  а +4 четвертый и игнорировать более глубокие уровни ............

вроде :( так
Если Вы здесь недавно, не обольщайтесь тоном некоторых дискуссий.
Все чаще слова - юзай поиск, приобретают смысл - иди в ж..........  Приобретение смысла автоматизированно - Ответы на любой вопрос по SMF
Не пишите несколько сообщений подряд - тут вам не Twitter  >:( в остальных ситуациях мы не сильно зверствуем 2funny

edmitriy

Скорее всего, Макар, так и будет. Поэтому тут уже самому заказчику надо определяться с тем, на каком уровне вложенности статистика подразделов становится неинтересной. Что касается моего случая, то мне понадобилось в реализации получать статистику на титульной странице обо всех темах, поэтому для меня вышеуказанный рецепт оказался более подходящим.

GeorG

Мод легко сделать, регулировать вложенность из админки...
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Serifa

Сделать мод, но в ФАКе указать, что форум по умолчанию работает вот так и вот так, чтобы люди не узнавали об этом в последнюю очередь. Мне-то пофиг на подсчет, в общем, а кому-то важно.
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!


Макар

Если Вы здесь недавно, не обольщайтесь тоном некоторых дискуссий.
Все чаще слова - юзай поиск, приобретают смысл - иди в ж..........  Приобретение смысла автоматизированно - Ответы на любой вопрос по SMF
Не пишите несколько сообщений подряд - тут вам не Twitter  >:( в остальных ситуациях мы не сильно зверствуем 2funny

KainCq

Если изменить код данным способом, то действительно начинается вестись подсчет тем/сообщений, но в колонке последний ответ не высвечивается это сообщение... Как сделать что бы и там выводилось? Что поправить в коде?

KainCq

Решение проблемы без костылей
Опробовано на SMF 2.0 RC5

Ищем в Sources/Subs-BoardIndex.php следующий код (у меня это строка 76)
AND b.child_level BETWEEN ' . $boardIndexOptions['base_level'] . ' AND ' . ($boardIndexOptions['base_level'] + 1)),
И меняете его на вот этот
AND b.child_level BETWEEN ' . $boardIndexOptions['base_level'] . ' AND ' . ($boardIndexOptions['base_level'] + 2)),

Далее ищите следующий код (строчка 223-226)
$parent_map[$row_board['id_parent']][0]['posts'] += $row_board['num_posts'];
$parent_map[$row_board['id_parent']][0]['topics'] += $row_board['num_topics'];
$parent_map[$row_board['id_parent']][1]['posts'] += $row_board['num_posts'];
$parent_map[$row_board['id_parent']][1]['topics'] += $row_board['num_topics'];


И после него добавляете следующий код
/** added by FH in order to also show last posts of grand children at board index **/
if($parent_map[$row_board['id_parent']][0]['last_post']['timestamp'] < forum_time(true, $row_board['poster_time'])) {
censorText($row_board['subject']);
$row_board['short_subject'] = shorten_subject($row_board['subject'], 24);
$this_last_post = array(
'id' => $row_board['id_msg'],
'time' => $row_board['poster_time'] > 0 ? timeformat($row_board['poster_time']) : $txt['not_applicable'],
'timestamp' => forum_time(true, $row_board['poster_time']),
'subject' => $row_board['short_subject'],
'member' => array(
'id' => $row_board['id_member'],
'username' => $row_board['poster_name'] != '' ? $row_board['poster_name'] : $txt['not_applicable'],
'name' => $row_board['real_name'],
'href' => $row_board['poster_name'] != '' && !empty($row_board['id_member']) ? $scripturl . '?action=profile;u=' . $row_board['id_member'] : '',
'link' => $row_board['poster_name'] != '' ? (!empty($row_board['id_member']) ? '<a href="' . $scripturl . '?action=profile;u=' . $row_board['id_member'] . '">' . $row_board['real_name'] . '</a>' : $row_board['real_name']) : $txt['not_applicable'],
),
'start' => 'msg' . $row_board['new_from'],
'topic' => $row_board['id_topic']
);

// Provide the href and link.
if ($row_board['subject'] != '')
{
$this_last_post['href'] = $scripturl . '?topic=' . $row_board['id_topic'] . '.msg' . ($user_info['is_guest'] ? $row_board['id_msg'] : $row_board['new_from']) . (empty($row_board['is_read']) ? ';boardseen' : '') . '#new';
$this_last_post['link'] = '<a href="' . $this_last_post['href'] . '" title="' . $row_board['subject'] . '">' . $row_board['short_subject'] . '</a>';
}
else
{
$this_last_post['href'] = '';
$this_last_post['link'] = $txt['not_applicable'];
}
$parent_map[$row_board['id_parent']][0]['last_post'] = $this_last_post;
}
/** end **/


После этого и сообщения начнут считаться и на главную выводиться от кого последний ответ.

Rostovchanka

по своей проблеме в поиске нашла только эту тему
есть еще темы по этой проблеме и по моей версии?

способ указанный постом выше опробован на практике? работает корректно?

к проблемам отображения (не считает на 3-м уровне, не отображает на главной последнее сообщение из третьего уровня и глубже), могу добавить, что в информационном центре на главной "Последнее сообщение: ..." показывает тоже со второго уровня :(, хотя последнее сообщение с третьего

Serifa

Может, проще приспособить свои потребности с возможностями форума, а не ковырять код? Закидывайте в третий уровень темы, которым необязательно появляться в инфоцентре. Флуд там всякий или еще что.
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!