UWAGA: Pojawiła się nowa wersja systemu - phpBB 3.3.19. Ostatnie wydania (od wersji 3.3.17 do najnowszej) przynoszą kluczowe poprawki, które chronią Twoje forum przed zagrożeniami i dbają o spokój Twojej społeczności. Polecam nie odkładać tego na później, tyllko zaktualizować fora!

Polski pakiet językowy dla phpBB 3.3.19

Dynamiczne liczenie postów nieprzeczytanych

Pomoc przy instalacji oraz użytkowaniu phpBB 3.0.x. Forum nie służy do zgłaszania znalezionych błędów, innowacji lub problemów związanych ze stylami i modyfikacjami.
Wujek
Posty: 5
Rejestracja: 07 grudnia 2012, 16:01

Dynamiczne liczenie postów nieprzeczytanych

Post autor: Wujek » 07 grudnia 2012, 16:08

Witam.

Moje forum to http://forum.eresa.pl i właśnie dodałem bibliotekę TINYCONhttp://tommoor.github.com/tinycon/, jednak nie wiem, jak wywoływać dynamicznie posty nieprzeczytane. Favicon teoretycznie będzie odświeżał się co 30 sekund, więc rozwiązanie powinno być w miarę "lekkie".

Jest coś, co może mi pomóc? Bo skrypty PHP odpadają, prawda? Będą działały tylko przy odświeżeniu, a nie o to mi chodzi/


PS Nie będę zakładał nowego tematu, ale mam jeszcze problem z prywatnymi wiadomościami. Admin może je wysyłać, lecz nikt inny (a uprawnienia ma każda grupa!)


Pozdrawiam serdecznie całą grupę PHPbb :)

Wujek
Posty: 5
Rejestracja: 07 grudnia 2012, 16:01

Re: Dynamiczne liczenie postów nieprzeczytanych

Post autor: Wujek » 07 grudnia 2012, 19:33

zapomniałem dodać:
Wersja phpBB: 3.0.11

nie widzę opcji edytuj

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Dynamiczne liczenie postów nieprzeczytanych

Post autor: jaroslw » 08 grudnia 2012, 15:40

Za pomocą samego JS nie wyciągniesz danych z bazy. Do tego będziesz potrzebował PHP. Do skryptu możesz wysłać żądanie AJAX i zwracać dane (liczbę postów) w postaci JSON. Ze swojej strony mogę wspomóc kawałkiem kodu PHP, który służy u nas do wyświetlania liczby nieprzeczytanych postów:

Kod: Zaznacz cały

// Count posts since last vivist
	if ($user->data['is_registered'] && $config['load_search'] && $auth->acl_get('u_search') && $auth->acl_getf_global('f_search'))
	{
		// Include forum_id 0 (globals) in the list and then look up and include all other forums the user is authorized to read
		if (!isset($forum_ids))
		{
			$forum_ids[] = 0;

			$sql = 'SELECT forum_id
				FROM ' . FORUMS_TABLE;
			$result = $db->sql_query($sql);

			while ($row = $db->sql_fetchrow($result))
			{
				if ($auth->acl_get('f_read', $row['forum_id']))
				{
					$forum_ids[] = $row['forum_id'];
				}
			}

			$db->sql_freeresult($result);
		}

		$unread_posts_count = 0;

		// Unread posts count
		$sql = $db->sql_build_query('SELECT', array(
			'SELECT'	=> 'COUNT(p.post_id) as total',

			'FROM'		=> array(
				POSTS_TABLE => 'p'
			),

			'LEFT_JOIN'	=> array(
				array(
					'FROM'	=> array(FORUMS_TRACK_TABLE => 'ft'),
					'ON'	=> 'p.forum_id = ft.forum_id AND ft.user_id = ' . $user->data['user_id']
				),
				array(
					'FROM'	=> array(TOPICS_TRACK_TABLE => 'tt'),
					'ON'	=> 'p.topic_id = tt.topic_id AND tt.user_id = ' . $user->data['user_id']
				)
			),

			'WHERE'		=> '(p.post_time > tt.mark_time
				OR (tt.mark_time IS NULL AND p.post_time > ft.mark_time)
				OR (ft.mark_time IS NULL AND p.post_time > ' . $user->data['user_lastmark'] . '))
				AND ' . $db->sql_in_set('p.forum_id', $forum_ids)
		));

		$result = $db->sql_query($sql);
		$unread_posts_count = $db->sql_fetchfield('total', false, $result);
		$db->sql_freeresult($result);

		$template->assign_var('UNREAD_POSTS_COUNT', $unread_posts_count);
	}
W naszym przypadku przekazuje on do stylu zmienną {UNREAD_POSTS_COUNT}.
Pobierz styl: we_universal • we_clearblue
Nowości i aktualizacje: Facebook • Google+ • Twitter

Wujek
Posty: 5
Rejestracja: 07 grudnia 2012, 16:01

Re: Dynamiczne liczenie postów nieprzeczytanych

Post autor: Wujek » 08 grudnia 2012, 17:09

Super, jest idealnie. Działa jak marzenie.
Pozdrawiam i dziękuję :)

Wujek
Posty: 5
Rejestracja: 07 grudnia 2012, 16:01

Re: Dynamiczne liczenie postów nieprzeczytanych

Post autor: Wujek » 09 grudnia 2012, 16:12

Witam to jeszcze raz ja.
Jednak zadanie z AJAXem przerosło mnie. (myślałem, że pójdzie gładko to uprzedziłem fakt w poprzenim poście, hehe)

Szukałem i szukałem (słowa kłuczowe: AJAX, function, PHP, refresh), ale nie znalazłem odpowiedzi. Jestem kompletnym laikiem w tym temacie.

Chciałem zrobić coś takiego: kod który podałeś chciałem wrzucić w jakąś funkcję, a ajaxem wywoływać ją. To w ogóle możliwe?

Bo o JSON'ie to już w ogóle nie mówię. To wysoka szkoła jazdy, albo ja taki głupi :mrgreen:

Wujek
Posty: 5
Rejestracja: 07 grudnia 2012, 16:01

Re: Dynamiczne liczenie postów nieprzeczytanych

Post autor: Wujek » 09 grudnia 2012, 21:01

Pomogło mi "Call PHP function by Ajax", znajdziecie w google.
Pozdrawiam

Zablokowany

Wróć do „Użytkowanie”