-
Ilość ostrzeżeń
Yo.
Sprawa wygląda tak, domyślnie w vb4 w postach wyświetlana jest wyłacznie liczba aktywnych ostrzeżeń, gdy wygasną - liczba się zmniejsza. Odpowiada za to zmienna $post[infractions], a wyświetla ją {vb:raw post.infractions} w template postbit/postbit_legacy.
Ja jednak chciałbym, aby wyświetlała się liczba wszystkich ostrzeżeń, a nie tylko tych aktywnych. Jedyne miejsce na forum, w którym znalazłem zapisaną tą liczbę, to okienko, w ktorym daje się użytkownikowi ostrzeżenie: /infraction.php?do=report&u=id_usera, jest to template "userinfraction".
Wyświetla ją zmienna {vb:raw totalinfractions}, niestety gdy wstawię tą zmienną do postbit_legacy, żeby wyświetlała się w postach, to już nie działa (nic się nie wyświetla w jej miejscu). Próbowałem też zmienić $post[infractions] na $post[totalinfractions] oraz {vb:raw post.infractions} na {vb:raw post.totalinfractions} ale również nie działa.
Jak dostać się do tej zmiennej i wyświetlić ją w kazdym poście użytkownika zamiast liczby aktywnych ostrzeżeń?
Rainbow
-
Problem polega na tym, że ilość ostrzeżeń (aktywnych) znajduje się w tabeli user, do której jest dowiązanie w zapytaniu showthread_query.
Możesz to zrobić na dwa sposoby.
a) prostszy
b) trudniejszy, optymalniejszy
a) Musisz dodać w hooku: showthread_postbit_create lub postbit_display_complete dodatkowe zapytanie, które zliczy wszystkie wpisy w tabeli infraction, gdzie userid będzie należało do użytkownika, do którego właśnie należy post. Zaznaczam, iż jest to bardzo nieoptymalne, ponieważ dla każdego posta będzie dodatkowe zapytanie SQL, a co za tym idzie - jeżeli na stronie masz wyświetlane na raz 20 postów, zyskasz dodatkowe 20 zapytań.
b) Musisz dodać kod w hooku: showthread_query, aby dodał dodatkowe dowiązanie do tabeli, w której umieszczone są wszystkie ostrzeżenia (infraction). Zachowując relację user.userid = infraction.userid. Wraz z dowiązaniem trzeba dodać dodatkowe pole COUNT(*) aby zliczył wszystkie ostrzeżenia danego użytkownika. Potem w hooku showthread_postbit_create - musisz przypisać nową zmienną np.: Kod:
$post['totalinfractions']
, do której będzie przypisana liczba ostrzeżeń danego użytkownika. Teraz wystarczy tylko umieścić zmienną w szablonie. Ten sposób nie dodaje nowego zapytania SQL, a tylko rozszerza już obecne przez co jest optymalnym rozwiązaniem.