• Rejestracja
vBHELP.pl - polskie wsparcie vBulletin
  1. #1
    Awatar Rainbow
    Rainbow jest nieaktywny Użytkownik
    Dołączył
    Jan 2009
    Posty
    21

    Domyślnie 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



  2. #2
    Awatar WoG
    WoG
    WoG jest nieaktywny vB Specialist
    Dołączył
    Feb 2008
    Posty
    2 812
    Przydatne posty
    298
    Wpisów
    1

    Domyślnie

    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.
    Z poważaniem,
    WoG

    Ty też możesz pomóc spolszczać vBulletin 5: GitHub.com
    "Rozczarowanie spowodowane niską jakością pamięta się długo po przeminięciu radości spowodowanej niską ceną"


Chmurka.pl

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67