Krzysztof Wesołowski Programowanie, elektronika, automatyka – doświadczenia i projekty

16lip/08

Obsługa komunikatora GG w phpBB3

Postaram się przedstawić w jaki sposób wyposażyć skrypt phpBB3 w całkiem funkcjonalne pole zawierające GG każdego użytkownika. Opis dotyczy stylu prosilver, bardziej zaawansowani użytkownicy bez problemu zaadaptują rady to innych szablonów.

Krok 1. Dodanie pola użytkownika

phpBB3 pozwala samemu dodawać nowe pola do profilu użytkownika. Niestety nie mamy bezpośredniego wpływu na ich wyświetlanie. Po kolei więc:

Wchodzimy w "Panel administracyjny"->"Użytkownicy i grupy".

W menu Użytkownicy wybieramy "Dodatkowe pola profilu", wpisujemy w pole po prawej stronie nazwe pola (np. gg), typ pola ustawiamy na "liczby" i klikamy "Utwórz pole". Ustawiamy parametry wg. potrzeb (przede wszystkim wyświetlanie pola musi być włączone :)). W opcjach zależnych od typu pola można ustawić podstawy walidacji pola, a w kolejnej zakładce jak pole się nazywa w wielu językach. Po przejściu 3 kroków pole zostało dodane. Niestety tak dodane pole będzie się wyświetlało po prostu jako: Numer GG: 12345433. Postarajmy się ulepszyć do domyślne zachowanie.

Krok 2. Włączenie wyświetlania pól

Ponieważ informacje o dodatkowych polach oraz ich zawartości są trzymane w osobnych tabelach bazy, ich wykorzystywanie zwiększa odrobinę obciążenie serwera. Dlatego w zależności od tego gdzie chcemy tych dodatkowych pól używać, musimy włączyć ich wyświetlanie.
Przechodzimy do "Panel administracyjny"->"Ogólne", i w menu po lewej, w sekcji "Konfiguracja serwera" znajdujemy zakładkę "Obciążenie serwera". W ustawieniach interesuje nas cześć znajdująca się na samym dole. ("Pozwól stylom wyświetlać własne pola profilu na liście użytkowników:","Wyświetl własne pola profilu w wątkach:" etc.). Tam też ustawiamy wg własnego uznania.

Krok 3. Edycja szablonów stylu

To trochę trudniejsza część pracy, przed jej rozpoczęciem dla własnej wygody lepiej zrobić kopie plików które będziemy zmieniać. Pliki można edytować na lokalnym komputerze jakimś ludzkim edytorem, lub też bezpośrenio w Panelu Administracyjnym (Zakładka Styl, i w menu Elementy Stylów wybieramy "Szablony",i klikamy na Edytuj przy prosilver)

Plik /styles/prosilver/template/memberlist_view.html

Czyli plik odpowiedzialny za wyświetlanie danych użytkownika w jego polu w profilu. Znajdujemy w nim:

Listing:
  1. <!-- BEGIN custom_fields -->
  2. <dt>{custom_fields.PROFILE_FIELD_NAME}:</dt>
  3. <dd>{custom_fields.PROFILE_FIELD_VALUE}</dd>
  4.  
  5. <!-- END custom_fields -->

Linia ta odpowiada za wyświetlanie pól użytkownika w formie nazwa: wartość, w dodatku w sekcji ogólnych informacji o użytkowniku.

Aby osiągnąć większe możliwości wpływu na wyświetlanie musimy usunąć tą część, i zastąpić ręcznie tworzonymi wpisami. Numerek GG będziemy wyświetlać w formie: GG:6796675

Pole do kontaktu przez GG chcemy dodać w sekcji kontakt, dlatego szukamy:

Listing:
  1. <!-- IF U_JABBER and S_JABBER_ENABLED -->
  2. <dt>{L_JABBER}:</dt>
  3. <dd><a onclick="popup(this.href, 550, 320); return false;" href="{U_JABBER}">{L_SEND_JABBER_MESSAGE}</a></dd>
  4.  
  5. <!-- ELSEIF USER_JABBER -->
  6. <dt>{L_JABBER}:</dt>
  7. <dd>{USER_JABBER}</dd>
  8.  
  9. <!-- ENDIF -->

Pod powyższa linią (odpowiedzialną za kontakt Jabber) dodamy nasz komunikator GG.

Listing:
  1. <!-- IF S_PROFILE_GG -->
  2. <dt>{PROFILE_GG_NAME}:</dt>
  3. <dd>
  4. <a title="Rozmowa z {PROFILE_GG_VALUE}" href="gg:{PROFILE_GG_VALUE}">
  5. <img style="position: relative; top: 3px;" src="http://status.gadu-gadu.pl/users/status.asp?id={PROFILE_GG_VALUE}&styl=1" alt="" />{PROFILE_GG_VALUE}
  6. </a>
  7. </dd>
  8.  
  9. <!-- ENDIF -->

Dzięki temu ładnie sformatowane pole GG bedzie się wyświetlało w polach profilu.

Plik /styles/prosilver/template/viewtopic_body.html

Czyli plik odpowiedzialny za wyświetlanie danych użytkownika w jego polu w profilu. Znajdujemy w nim:

Listing:
  1.  <!-- IF postrow.S_PROFILE_FIELD1 -->
  2. <!-- Use a construct like this to include admin defined profile fields. Replace FIELD1 with the name of your field. -->
  3. <dd><strong>{postrow.PROFILE_FIELD1_NAME}:</strong> {postrow.PROFILE_FIELD1_VALUE}</dd>
  4.  
  5. <!-- ENDIF -->

Powyższy cytat to w gruncie rzeczy instrukcja dodawania własnych pól do stylu.
Tuż poniżej powyższego znajdziemy kod odpowiedzialny za automatyczne wypisywanie pól:

Listing:
  1. <!-- BEGIN custom_fields -->
  2. <dd><strong>{postrow.custom_fields.PROFILE_FIELD_NAME}:</strong> {postrow.custom_fields.PROFILE_FIELD_VALUE}</dd>
  3.  
  4. <!-- END custom_fields -->

który należy skasować.
Teraz aby wpisać GG w formie podobnej jak w profilu (a nie w formie małej ikonki jak domyślne komunikatory) wystarczy pod/zamiast powyższego kodu wpisać:

Listing:
  1. <!-- IF postrow.S_PROFILE_GG -->
  2. <dd>
  3. <a title="Rozmowa z {postrow.PROFILE_GG_VALUE}" href="gg:{postrow.PROFILE_GG_VALUE}">
  4. <strong>{postrow.PROFILE_GG_NAME}:</strong>
  5. <img style="position: relative; top: 3px;" src="http://status.gadu-gadu.pl/users/status.asp?id={postrow.PROFILE_GG_VALUE}&styl=1" alt="Rozmowa z {postrow.PROFILE_GG_VALUE}" />{postrow.PROFILE_GG_VALUE}
  6. </a>
  7. </dd>
  8.  
  9. <!-- ENDIF -->

Pozwoli to na wyświetlanie Numeru GG pod awatarem w profilu.

Tagged as: , Komentarze
Komentarze (2) Trackbacks (0)
  1. zrobilem jak nalezy, ale mi nie poklazuje sloneczka tylko * i gdy chce dodac w profilu swoj numer gg to wyskakuje blad ,ze : Wartość pola „GG” jest za duża, maks. wartość to 100.

  2. Działa rewelacyjnie. Duży szacun dla autora. Proszę o jeszcze :D


Trackbacks are disabled.