Опубликовано: 18 февраля 20205 г Подскажите как создать универсальное условие, которое бы отображало контент, в зависимости от количества сообщений пользователя за неделю. Вроде такого: <if test="$member['post_week'] > 10"> Контент отображается, если у данного пользователя есть 10 сообщений на форуме за неделю. </if>
Опубликовано: 19 февраля 20205 г admin/applications/forums/modules_public/extras/stats.php Найти ksort($members); Ниже добавить $ids = array(); foreach( $members as $member ) { $ids[] = $member['member_id']; } $weekStats = array(); if ($ids) { $this->DB->build( array( 'select' => 'author_id, COUNT(*) as post_week', 'from' => 'posts', 'where' => "post_date > " . (time() - 604800) . " AND author_id IN(" . implode( ',', $ids ) . ")", 'group' => "author_id", ) ); $o = $this->DB->execute(); while( $r = $this->DB->fetch($o) ) { $weekStats[$r['author_id']] = $r['post_week']; } } foreach( $members as $name => $member ) { $members[$name]['post_week'] = isset($weekStats[$member['member_id']]) ? $weekStats[$member['member_id']] : 0; } В шаблоне использовать $info['post_week']
Опубликовано: 19 февраля 20205 г Автор 8 часов назад, newbie сказал: admin/applications/forums/modules_public/extras/stats.php С таким фиксом, почему то показывает только у супермодераторов....
Опубликовано: 20 февраля 20205 г Автор 1 час назад, newbie сказал: А у остальных что-то показывается? Показывает ноль. Тогда как если в шаблон код php устанавливаешь, всё нормально и правильно отображается.
Опубликовано: 20 февраля 20205 г Автор 6 часов назад, newbie сказал: Изменил код. Пробуйте Теперь всё нормально. Ещё раз благодарю за помощь.
Опубликовано: 21 февраля 20205 г Автор Сделал такое же и для тем, внедрил код в шаблон userInfoPane Всё нормально, но как всегда кроме одного - на каждого пользователя один запрос. Тот хард-код подходит для тем? Если да, то в какой файл его прикрутить?
Опубликовано: 22 февраля 20205 г Автор 21.02.2020 в 14:25, Haktar сказал: Тот хард-код подходит для тем? Если да, то в какой файл его прикрутить? Не подскажите хард для топиков?
Опубликовано: 23 февраля 20205 г Автор 20.02.2020 в 10:21, newbie сказал: Изменил код. Пробуйте Можно ещё и аналогичный код для топиков? Пожалуйста!
Опубликовано: 26 февраля 20205 г 23.02.2020 в 16:40, Haktar сказал: Можно ещё и аналогичный код для топиков? Пожалуйста! Там же почти то же самое. Нашли код топиков -> Вытащили юзеров -> Получили данные (код выше) -> Добавили данные к юзерам.
Опубликовано: 26 февраля 20205 г Автор 4 часа назад, newbie сказал: Нашли код топиков -> Вытащили юзеров -> Получили данные (код выше) -> Добавили данные к юзерам. Если бы я хоть знал в какой файл добавлять и куда именно в этом файле.
Опубликовано: 26 февраля 20205 г Вы не знаете, какой шаблон отвечает за вывод темы? Не поверю. topicViewTemplate Нашли его в \admin\applications\forums\modules_public\forums\topics.php $template = $this->registry->output->getTemplate('topic')->topicViewTemplate( $this->forum, $this->topic, $post_data, $displayData ); $post_data содержит данные о постах, включая авторов. Получаем ID'шники Вместо foreach( $members as $member ) { $ids[] = $member['member_id']; } Используем foreach( $post_data as $post ) { if ( $post['author']['member_id'] ) { $ids[$post['author']['member_id']] = $post['author']['member_id']; } } Вместо foreach( $members as $name => $member ) { $members[$name]['post_week'] = isset($weekStats[$member['member_id']]) ? $weekStats[$member['member_id']] : 0; } Используем foreach( $post_data as $pid => $post ) { if ($post['author']['member_id']) { $post_data[$pid]['author']['post_week'] = isset($weekStats[$post['author']['member_id']]) ? $weekStats[$post['author']['member_id']] : 0; } } В шаблоне userInfoPane используем <if test="isset($author['post_week'])">{$author['post_week']}</if>
Опубликовано: 28 февраля 20205 г Автор 26.02.2020 в 13:24, newbie сказал: Вы не знаете, какой шаблон отвечает за вывод темы? Не поверю. topicViewTemplate Так я про файл думал, не про шаблон. 26.02.2020 в 13:24, newbie сказал: $post_data содержит данные о постах, включая авторов. Получаем ID'шники Вместо Спасибо. Я так понял что изменённую информацию вставлять в файл topics.php. А куда именно, ведь нужно же правильно разместить, иначе работать не будет.
Опубликовано: 28 февраля 20205 г Автор 12 минут назад, Haktar сказал: Я так понял что изменённую информацию вставлять в файл topics.php. А куда именно, ведь нужно же правильно разместить, иначе работать не будет. Всё нашёл. Добавить выше $template = $this->registry->output->getTemplate('topic')->topicViewTemplate( $this->forum, $this->topic, $post_data, $displayData );
Опубликовано: 1 марта 20205 г Автор Такой ещё маленький вопросик - а как в коде указать что бы учитывались для подсчёта только сообщения где счётчик сообщений включён?
Подскажите как создать универсальное условие, которое бы отображало контент, в зависимости от количества сообщений пользователя за неделю.
Вроде такого:
<if test="$member['post_week'] > 10">
Контент отображается, если у данного пользователя есть 10 сообщений на форуме за неделю.
</if>