Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Условие от количества сообщений за неделю

Опубликовано:

Подскажите как создать универсальное условие, которое бы отображало контент, в зависимости от количества сообщений пользователя за неделю.

Вроде такого:

<if test="$member['post_week'] > 10">

Контент отображается, если у данного пользователя есть 10 сообщений на форуме за неделю.

</if>

Рекомендованные сообщения

Опубликовано:

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']

Опубликовано:
  • Автор
8 часов назад, newbie сказал:

admin/applications/forums/modules_public/extras/stats.php

С таким фиксом, почему то показывает только у супермодераторов....

Опубликовано:

А у остальных что-то показывается?

Опубликовано:
  • Автор
1 час назад, newbie сказал:

А у остальных что-то показывается?

Показывает ноль. Тогда как если в шаблон код php устанавливаешь, всё нормально и правильно отображается.

Опубликовано:

Изменил код. Пробуйте

Опубликовано:
  • Автор
6 часов назад, newbie сказал:

Изменил код. Пробуйте

Теперь всё нормально. Ещё раз благодарю за помощь.

Опубликовано:
  • Автор

Сделал такое же и для тем, внедрил код в шаблон userInfoPane

Всё нормально, но как всегда кроме одного - на каждого пользователя один запрос.

Тот хард-код подходит для тем? Если да, то в какой файл его прикрутить?

Опубликовано:
  • Автор
21.02.2020 в 14:25, Haktar сказал:

Тот хард-код подходит для тем? Если да, то в какой файл его прикрутить?

Не подскажите хард для топиков?

Опубликовано:
  • Автор
20.02.2020 в 10:21, newbie сказал:

Изменил код. Пробуйте

Можно ещё и аналогичный код для топиков? Пожалуйста!

Опубликовано:
23.02.2020 в 16:40, Haktar сказал:

Можно ещё и аналогичный код для топиков? Пожалуйста!

Там же почти то же самое.

Нашли код топиков -> Вытащили юзеров -> Получили данные (код выше) -> Добавили данные к юзерам.

Опубликовано:
  • Автор
4 часа назад, newbie сказал:

Нашли код топиков -> Вытащили юзеров -> Получили данные (код выше) -> Добавили данные к юзерам.

Если бы я хоть знал в какой файл добавлять и куда именно в этом файле.

Опубликовано:

Вы не знаете, какой шаблон отвечает за вывод темы? Не поверю.

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>

 

Опубликовано:
  • Автор
26.02.2020 в 13:24, newbie сказал:

Вы не знаете, какой шаблон отвечает за вывод темы? Не поверю.

topicViewTemplate

Так я про файл думал, не про шаблон.

 

26.02.2020 в 13:24, newbie сказал:

$post_data содержит данные о постах, включая авторов.

Получаем ID'шники

Вместо 

Спасибо. Я так понял что изменённую информацию вставлять в файл topics.php. А куда именно, ведь нужно же правильно разместить, иначе работать не будет.

Опубликовано:
  • Автор
12 минут назад, Haktar сказал:

Я так понял что изменённую информацию вставлять в файл topics.php. А куда именно, ведь нужно же правильно разместить, иначе работать не будет.

Всё нашёл. Добавить выше 

		$template = $this->registry->output->getTemplate('topic')->topicViewTemplate( $this->forum, $this->topic, $post_data, $displayData );

 

Опубликовано:
  • Автор

Такой ещё маленький вопросик - а как в коде указать что бы учитывались для подсчёта только сообщения где счётчик сообщений включён?

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.