StartPublikacjeWięcej informacji w profilu użytkownika

Więcej informacji w profilu użytkownika

Oceń ten artykuł
(5 głosów)

W nowszych wersjach Joomla można zwiększyć ilość informacji o użytkownikach. A to dzięki dodatkowi Profil użytkownika. Administratorzy witryn pytają niekiedy, czy i w jaki sposób można wzbogacić dodatek o własne pola - na przykład, jak uzupełnić formularz rejestracyjny o wyrażenie zgody na przetwarzanie danych osobowych.

Rozwiązanie jest w zasięgu każdego administratora. Nie wymaga szczególnych umiejętności programistycznych. Nawet jeśli nie masz żadnego doświadczenia w edycji kodu PHP i XML, podołasz zadaniu pod warunkiem, że wprowadzisz niezbędne zmiany starannie, dbając dosłownie o każdy znak, każdą literę, każdy przecinek czy średnik, każdą kropkę.

Które pliki dodatku trzeba zmienić?

Zmian trzeba dokonać w trzech plikach dodatku oraz w plikach językowych. Pliki dodatku znajdują się w katalogu plugins/user/profile. Nas będą interesować trzy z umieszczonych tam plików - profile.xml i profile.php znajdujące się w głównym katalogu oraz profile.xml umieszczony w podkatalogu /profiles.

Zanim dokonasz jakichkolwiek zmian, utwórz kopię całego katalogu, aby - w razie niepowodzenia - powrócić do oryginalnych wersji plików.

Dodanie i definicja nowego pola

Pola obsługujące nowe informacje, które chcemy pozyskać od użytkowników, dodajemy i definiujemy w pliku profile.xml znajdującym się w podkatalogu /profiles.

Otwórz ten plik w swoim ulubionym edytorze kodu, np. Notepad++. Przyjrzyj się jego konstrukcji. Bez trudu zauważysz powtarzające się bloki objęte znacznikiem field. Każdy z takich bloków dodaje jedną informację do formularza rejestracyjnego i profilu użytkownika oraz definiuje jej format i inne atrybuty, np. nazwę (name), rodzaj (type) etykietę (label), opis (description). Niektóre z tych atrybutów, np. name czy type sa niezbędne, inne, takie jak class, description czy default są opcjonalne.

API Joomla udostępnia blisko 40 standardowych typów pól formularzy. Ich opisy znajdziemy w elektronicznej dokumentacji Joomla (lub w polskiej niekompletnej wersji: Standardowe pola formularzy a typy parametrów).

W naszym przykładzie dodamy kod, dzięki któremu użytkownicy bedą mogli wyrazić zgodę na przetwarzanie swoich danych osobowych oraz otrzymywanie informacji marketingowych. W tym celu możemy skorzystać z pola typu checkbox albo bardzo podobnego checkboxes. Pierwszy typ umożliwia dodanie jednego pola wyboru, drugie - kilku. Skorzystamy z drugiego rodzaju, także dlatego, że łatwiej jest w przypadku tego pola umieścić dokładny opis opcji. Nasz kod może wyglądać tak, jak poniżej:

 
<field
  name="zgody" 
  type="checkboxes"
  label="PLG_USER_PROFILE_FIELD_ZGODY_LABEL"  
  description="PLG_USER_PROFILE_FIELD_ZGODY_DESC"  
  filter="options"
  class="checkbox inline" 
  >
  <option value="przetw">PLG_USER_PROFILE_FIELD_ZGODY_PRZETWARZANIE</option>
  <option value="wysyl">PLG_USER_PROFILE_FIELD_ZGODY_WYSYLANIE</option>
</field>
 

W dokumentacji Joomla nie udało mi się znaleźć pełnej specyfikacji tego typu pola, ale od czegóż kod Joomla. Przeszukując pliki dodatków, znalazłem dobry wzór w pliku manifestu dla dodatku Codemirror. Gdyby użyć atrybutu default, można by jeszcze ustawić jedną z dwu zaprojektowanych opcji jako domyślną. Nie uczynimy tego ze względu na obowiązujące przepisy, które wymagają, by użytkownik wyrażał swoją zgodę czynnie.

Dodanie opcji konfiguracyjnych

Za konfigurację dodatku Profile użytkownika odpowiada plik profile.xml umieszczony w głównym katalogu dodatku. Otwieramy go w naszym edytorze kodu i - po przyjrzeniu się definicjom konfiguracji wszystkich innych pól - definiujemy fragment, który będzie odpowiadał za konfiguracje dodanego przez nas pola. Najprościej będzie skopiować np ostatni wpis objęty znacznikiem field i poprawić wartości atrybutów name, label oraz description. Oto przykładowy kod:

 
  <field
    name="zgody"
    type="list"
    label="PLG_USER_PROFILE_FIELD_ZGODY_LABEL"
    description="PLG_USER_PROFILE_FIELD_ZGODY_DESC"
    >
    <option  value="2">JOPTION_REQUIRED</option>
    <option  value="1">JOPTION_OPTIONAL</option>
    <option  value="0">JDISABLED</option>
  </field>  
 

Opcji konfiguracyjnych nie modyfikujemy - w przypadku wszystkich pól tego dodatku w konfiguracji ustalamy, czy wypełnienie pola jest wymagane, czy opcjonalne oraz czy pole ma być wyświetlane także w formularzu rejestracyjnym.

Włączenie nowego pola do kodu php

To, że zdefiniowaliśmy nowe pole oraz sposób jego konfiguracji nie wystarczy, by znalazło się w profilu użytkowników. Musimy jeszcze spowodować, aby Joomla obsłużył to nowe pole. Inaczej mówiąc, musimy je dodać do kodu php.

Obsługą dodatku Profil użytkownika steruje plik profile.php umieszczony w głównym katalogu dodatku. Musimy w nim dokonać dwóch zmian.

Najpierw uzupełniamy tablicę zmiennych $fields, zawierajacą listę pól. Na jej końcu, za wierszem 236 dopisujemy nazwę naszego pola - 'zgody'. Po zmianie ten fragment kodu będzie wyglądać następująco:

 
$fields = array(
    'address1',
    'address2',
    'city',
    'region',
    'country',
    'postal_code',
    'phone',
    'website',
    'favoritebook',
    'aboutme',
    'dob',
    'tos',
    'zgody',
  );
 

Następnie w kolejnym fragmencie kodu - po wierszu 256 dopisujemy linie odpowiedzialną za zmianę opisu pola widocznego podczas edycji zarówno w częsci frontowej, jak i na zapleczu witryny. Oto kod istniejącego już wiersza 256 i dodanego nowego wiersza w linii 257:

 
$form->setFieldAttribute('tos', 'description', 'PLG_USER_PROFILE_FIELD_TOS_DESC_SITE',
'profile');
$form->setFieldAttribute('zgody', 'description', 'PLG_USER_PROFILE_FIELD_ZGODY_DESC_SITE',
'profile');        
}
 

Jak się łatwo domyśleć, skopiowałem jeden z poprzednich wierszy, a następnie zmieniłem w nim nazwę pola na zgody oraz klucz stałej językowej.

Definicje stałych językowych

Aby dokończyć dzieła, musimy jeszcze zdefiniować znaczenie stałych językowych. Jeśli publikujemy witrynę tylko w języku polskim, wystarczy, że dodamy definicje użytych przez nas stałych do plików języka polskiego. Definicje stałych językowych dodatku Profile użytkownika znajdują się w pliku administrator/language/pl-PL/pl-PL.plg_user_profile.ini. Ale uzupełnienie tego pliku o dodane przez nas stałe językowe nie jest dobrym pomysłem, bo w przypadku aktualizacji pakietu językowego utracimy wszystkie zmiany. Dlatego własne lub zmodyfikowane deklaracje językowe najlepiej umieszczać w pliku zastępującym standardowe tłumaczenia. Plik taki, nazwany pl-PL.ini umieszczamy w katalogu administrator/languages/overrides (albo, jeśli dotyczy witryny w katalogu languages/overrides). Plik trzeba przygotować w edytorze, który potrafi zapisywać w kodowaniu utf-8 bez BOM, np. w Notepad++.

Poniżej przedstawiam treść pliku z definicjami stałych językowych użytych w plikach zmodyfikowanego dodatku Profil użytkownika:

 
PLG_USER_PROFILE_FIELD_ZGODY_LABEL="Twoje zgody"  
PLG_USER_PROFILE_FIELD_ZGODY_DESC="Zgody na przetwarzanie danych osobowych
i otrzymywanie informacji marketingowych"
PLG_USER_PROFILE_FIELD_ZGODY_DESC_SITE="Zgody na przetwarzanie danych osobowych
i otrzymywanie informacji marketingowych"        
PLG_USER_PROFILE_FIELD_ZGODY_PRZETWARZANIE="<p><small>Wyrażam zgodę na przetwarzanie
moich danych osobowych przez Fundację PCJ Otwarte Źródła z siedzibą w Bełchatowie,
os. Budowlanych 6/61, 97-400 Bełchatów - administratora danych osobowych,
w celach marketingowych.</small></p>
<p><small>Podanie danych osobowych jest dobrowolne. Osobie, której dane dotyczą,
 przysługuje prawo wglądu do danych osobowych oraz ich poprawiania.</small></p>"
PLG_USER_PROFILE_FIELD_ZGODY_WYSYLANIE="<p><small>Wyrażam zgodę na przesyłanie
na mój adres e-mail informacji handlowych o produktach, usługach
i przedsięwzięciach Fundacji PCJ Otwarte Źródła
oraz na kontaktowanie się ze mną przez Fundację PCJ Otwarte Źródła
pocztą elektroniczną w celach marketingu bezpośredniego.</small></p>"
 

Uwaga na aktualizacje Joomla!

Zmiany dokonane w rdzennych plikach Joomla można - niestety - bardzo łatwo utracić w wyniku aktualizacji. Trzeba się na to przygotować, zachowując w bezpiecznym miejscu kopię zmodyfikowanego dodatku tak, aby po każdej pełnej aktualizacji oprogamowania Joomla przywrócić nasze zmodyfikowane pliki.

Ostatnio zmieniany Wt. 12 Maj 2015
comments powered by Disqus Powrót na górę

Aktualności - spis treści

Oglądasz teraz:   StartPublikacjeWięcej informacji w profilu użytkownika

Twoje konto