A felhasználókról szóló információk megjelenítési lehetőségei

thamas képe
Drupal verzió: 5.x
Tudásszint: Adminisztrátor
Használt modulok:
  • Bio 5.x-1.0
  • Bio 5.x-1.x-dev (2007. 07. 03.)

Drupallal kezelt webhelyünkön az egyes regisztrált felhasználók adatait alapértelmezésben a www.oldalam.hu/user/id (ahol az "id" a felhasználót azonosító szám) útvonalon, a felhasználók listáját pedig a www.oldalam.hu/profile útvonalon érhetjük el. A felhasználók kezeléséért a User modul felelős, ez azonban csak néhány adatot kezel a felhasználóval kappcsolatban. További információk megjelenítésére a Drupal alaprendszer a Profile modult kínálja, ami telepítés után nincs bekapcsolava. Ha használni szeretnénk, először engedélyeznünk kell, majd ennek segítségével újabb mezőket adhatunk a felhasználói profilhoz.

A profile nem node

Az így megjelenített tartalom azonban – a Drupalra általában jellemző gyakorlattól eltérően – nem node. Ez azért jelentehet gondot, mert a node-okkal kapcsolatos funkciók (pl. egyéni szempontú listázás) nem, vagy nehezen, egyéb kiegészítőkkel használhatóak csak. (Az említett probléma orvoslására született pl. a Site User List modul.)

Sokan azonabn úgy vélekednek, hogy a Profile modul fölött eljárt az idő és inkább arra törekszenek, hogy a felhasználói adatokat valamilyen módon „node-osítsák”. A témának saját csoportja is van a Groups.Drupal.org-on, illetve a Drupal.org keresőjét használva is találhatunk vonatkozó fórumot, ami aktív forgalmat mutat. A profilok node-dá alakítására való törekvés eredményeként született például a Node Profile modulcsoport, az ehhez tartozó, de önnálóan használható Usernode modul és a Bio modul, de ide sorolható a Jobsearch modul is.

Az említett modulok segítségével igen összetett profilok és bonyolult elképzelések is megvalósíthatóak, az alábbiakban azonban csak egy egyszerű feladatot fogunk megoldani. A célunk, hogy egységes és (pl. views által) feldolgozható formában jelenítsük meg egy szervezet munkatársainak adatait, az eszközünk a Bio modul.

Felhasználói profil Bio modullal

A Bio modul egy új tartalomtípust hoz létre „Biography” néven, és minden regisztrált felhasználóhoz hozzárendel egy „Biography” lapot, ami a felhasználói profilnál szerkeszthető. Továbbá a felhasználó által beküldött tartalmaknál (ha engedélyezzük) megjelenít egy linket, ami az említett „Biography” lapra mutat.

Első lépésként töltsük le, telepítsük, és engedélyezzük a Bio modul stabil, 5.x - 1.0 verzióját! A Read me file azt javasolja, hogy a smink beállításoknál (admin/build/themes/settings) kapcsoljuk ki a beküldési információkat és a hozzáférés szabályozásnál (admin/user/access) szüntessük meg a felhasználói profilok elérhetőségét a nem admin felhasznlók számára. Ezekkel a lépésekkel elkerülhetjük, hogy többféle információ és többféle hivatkozás jelenjen meg az oldalainkon egy-egy felhasználóval kapcsolatban.

Ha a fentiekkel megvagyunk, a Bio modul saját admin részében (admin/user/bio) folytassuk a beállításokat. Itt jelöljük ki azokat a tartalomtípusokat, ahol szeretnénk megjeleníteni a szerző adataira mutató linket és pipáljuk ki a "Use bio for user profiles" és a "Takeover profile" opciókat is. Utóbbiak közül az elsővel biztosítjuk, hogy a felhasználói profilban a Bio segítségével megadott információk megjelenjenek, másodikkal pedig, hogy csak ezek az információk jelenjenek meg. (Az űrlap tetjén található legördülő listával bármilyen tartalomtípust kiválaszthatunk a felhasználói adatok megjelenítésére - vannak, akik a Bio modult a Usernode-dal kombinálják így. Mi most azonban maradjunk a „Biography”-nál!)

Ha most megnézzük a saját profilunkat (user/id), máris láthatjuk, hogy ott megjelent egy új fül „Biography” névvel. Ennek cím mezőjében adjuk meg valódi nevünket, a törzsben pedig a közölni kívánt információkat. Ha nem csak egy törzs mezőt szeretnénk, akkor a CCK modul segítségével igény szerint kiegészíthetjük a „Biography” tartalomtípust, a Views modul segítsdégével pedig teszőleges listákat állíthatunk elő. (Hogy hogyan, arra a kézikönyv egy másik fejezetében találjuk a választ.) Mindezek után nincs más teendőnk, mint a felhasználókat létrehozni és a adataikat rögzíteni a „Biography” részben.

További finomítások

Nekem nem igazán tetszett, hogy a bejegyzés szerzőjének (felhasználói) neve, a bejegyzés után jelenik meg a Bio használata esetén. Ugyancsak hiányoltam a bejegyzés beküldésének dátumát. No, de miért is ne kapcsolhatnánk vissza ki a Bio linket és kapcsolahatnánk vissza a beküldési információkat (dátum, szerző)? Hiszen a profil oldalon úgyis a „Biography” tartalma jelenik meg, mivel ezt állítottuk be a „Takeover profile” választásával. Próbáljuk ki!

Ha elvégezzük a módosításokat és egy bejegyzésnél a szerző nevére kattintunk, azt tapasztaljuk, hogy a felhasználói profil oldalon a törzs mező tartalma megjelenik, azonban a felhasználó valódi neve helyett a „Biography” szó szerepel. Nos, ez valószínűleg nem egészen az, amit szeretnénk. Én nem tudtam kideríteni, mi okkozza a problémát, azonban kipróbáltam, hogy a Bio modul fejlesztés alatt álló verziója (5.x-1.x-dev) másként viselkedik-e.

A telepítés gond nélkül zajlott (modul törlése, új fájlok feltöltése, update.php futtatása), azonban ezt követően a címlap helyett fehér képernyő fogadott „Fatal error” stb. felirattal. A problémát a modul mellé került bio_views.inc kódjának egy részlete okkozza, elhárítani úgy lehet, hogy kikommeneteljük a fájl végén található views_handler_filter_null() funkciót:

/**
* Custom filter for IS NULL and IS NOT NULL operations
* Operator must be 'IS' or 'IS NOT'
*
* Keeping in bio_views.inc until http://drupal.org/node/142504 hits
*
*function views_handler_filter_null($op, $filter, $filterinfo, &$query) {
* switch($op) {
* case 'handler':
* $table = $filterinfo['table'];
* $column = $filterinfo['field'];
* $field = "$table.$column";
* $query->ensure_table($table);
* $operator = $filter['operator'];
* $query->add_where("$field $operator NULL");
* break;
* }
*}
*/
?>

Ezt követően már gond nélkül kell működnie a Drupalnak. Egy felhasználói profilt megtekintve látható, hogy immár a felhasználó neve is megjelent, azonban a „Biography” cím továbbra is látszik. Ennek eltüntetése azonban már CSS-sel is megoldható (display:none beállítással), vagy sminkeléssel.

Nem kell mást csinálni, mint megkeresni azt a kódot, ami a felhasználói oldalt állítja elő. Ezt egy rövid nyomozás után megtalálhatjuk a user.module fájl 654. sorában. A függvény neve theme_user_profile() Ezt a függvényt kell bemásolni a sminkünk template.php fájljába úgy, hogy a theme szó helyett a smink nevét írjuk. Ezek után a nem kívánt részeket törölni kell. Átalakítás után valahogy így fog kinézni a függvény:

function sminkneve_user_profile($account, $fields) {
$output = '

';
$output .= theme('user_picture', $account);
foreach ($fields as $category => $items) {
// Ez a rész jeleníti meg a zavaró feliratot
// if (strlen($category) > 0) {
// $output .= '

'. check_plain($category) .'

';
// }
$output .= '

';
foreach ($items as $item) {
if (isset($item['title'])) {
$output .= '
'. $item['title'] .'

';
}
$output .= '

'. $item['value'] .'

';
}
$output .= '

';
}
$output .= '

';

return $output;
}
?>

Hozzászólások

pp képe

az utolsó bekezdés átírtam, remélem nem baj ;))

pp

thamas képe

Dehogy baj! Én nem vagyok coder és a bejegyzés célja, hogy segítséget adjon a felhasználóknak. Mivel te nálam mindenképpen jobban ismered ezt a területet, az csak hasznos, ha javítasz! :o)

Köszi!

(Bárki mástól is szívesen veszem az észrevételeket, javaslatokat. A fenti szöveg nem kőbe vésett szabály, mindössze a tapasztalataim összefoglalója.)

Üdvözlettel:
Hajas Tamás

Üdvözlettel:
Hajas Tamás

thamas képe

A bejegyzés írása óta újabb fejlesztői verzió jelent meg (2007. 09. 26.). Nem próbáltam ki, viszont láttam, hogy a bio_views.inc fájl változott, így elképzelhető, hogy ez már nem produkálja a fent említett telepítési problémát.

Üdvözlettel:
Hajas Tamás

Üdvözlettel:
Hajas Tamás

thamas képe

December 2-án megjelent az A bio 5.x-1.1, ami már lehetővé teszi a hozzáadott CCK mezők megjelenítését a regisztrációs űrlapon is!

(És megszüntették a szükségtelen views függőséget.)

Üdvözlettel:
Hajas Tamás

Üdvözlettel:
Hajas Tamás

Gábor Mayer képe

minek a title mező a bioban?