Melyik nevedet mutassam?

Őry Máté képe

A készülő Drupal alapú magyar Ubuntu közösségi webhely készítése során valósítottam meg azt, ami már a Weblabor kapcsán is többször felmerült bennem. Mostanában ?divattá? vált az interneten a teljes név használata semmitmondó nicknevek mögé zárkózás helyett. Ez a jelenség a Weblabornál, mint szakmai médiumnál megfigyelhető, a warezoldalakon ? érthető okokból ? kevésbé. Ez viszont felvet egy technikai problémát: magyarok vagyunk, és ?gonosz? módon nem csak ASCII neveink vannak. Erre a problémára adhat megoldást a felhasználónév, a nick és a teljes név különválasztása.

A konkrét megoldásom az volt, hogy a felhasználó személyes beállításainál megadhatja teljes- és becenevét illetve azt, hogy melyik jelenjen meg beküldött tartalmai, hozzászólásai beküldőjeként. A megvalósításhoz három változtatást kell eszközölni.

Az első a ?profile? modul engedélyezése.

A második a megfelelő profiladatok felvétele, amit az adminisztrációs rendszerből (admin/settings/profile) a legegyszerűbb elvégezni:

Típus Mezőnév Láthatóság Megjegyzés
egysoros szövegmező profile_nickname publikus Becenév; opcionális
egysoros szövegmező profile_fullname publikus Teljes név; opcionális
választólista profile_whichname személyes Alapértelmezett név; Lehetőségek: Felhasználói név, Teljes név, Becenév

Végül a harmadik lépés PHPTemplate sablonrendszer használata esetén a smink gyökerében egy template.php fájlt létrehozása (ha nem létezik még). Ebbe a következőt írjuk:

/**
* Format a username.
*
* @param $object
* The user object to format, usually returned from user_load().
* @return
* A string containing an HTML link to the user's page if the passed object
* suggests that this is a site user. Otherwise, only the username is returned.
*/
function phptemplate_username($object) {

if ($object->uid && $object->name) {

// Shorten the name when it is too long or it will break many tables.
if (drupal_strlen($object->name) > 20) {
$name = drupal_substr($object->name, 0, 18) .'?';
}
else {
$name = $object->name;
}

if (user_access('access user profiles')) {
//sajnos be kell töltenünk a felhasználói profilt
profile_load_profile($object);
$output = "";
//a lényeg
if ($object->profile_whichname=="Teljes név") {
$_title = t('View user profile.') . ' Felhasználói név: ' . $name;
$output .= l($object->profile_fullname, 'user/'. $object->uid, array('title' => $_title));
}
elseif ($object->profile_whichname=="Becenév") {
$_title = t('View user profile.') . ' Felhasználói név: ' . $name;
$output .= l($object->profile_nickname, 'user/'. $object->uid, array('title' => $_title));
}
else {
//az eredeti
$output .= l($name, 'user/'. $object->uid, array('title' => t("View user profile.")));
}
}
else {
$output = check_plain($name);
}
}
else if ($object->name) {
// Sometimes modules display content composed by people who are
// not registered members of the site (e.g. mailing list or news
// aggregator modules). This clause enables modules to display
// the true author of the content.
if ($object->homepage) {
$output = l($object->name, $object->homepage); $output .= " homepage}\" rel=\"nofollow\" title=\"Személyes weblapja\">" .
theme_image('themes/ubuntuhu/gfx/url.png', 'Honlapja') . '
';
}
else {
$output = check_plain($object->name);
}

$output .= ' ('. t('not verified') .')';
}
else {
$output = variable_get('anonymous', 'Anonymous');
}
return $output;
}
?>

Ez a Drupal 4.7.2 theme_username függvényének megfelelő kiegészítése. A megjegyzésekben látszik, hogy mi nem az eredeti függvény része.

Hozzászólások

Paal képe

Valakinek sikerült már átírnia 5.x-re?

Köszi, Pali

--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan

Őry Máté képe

hol akadtál el?

emitter képe

Megy 5.0-án, tudom, most állítottam be :)

emitter képe

Csak akkor jeleníti meg a sima usernév helyett mondjuk a Teljes nevet, ha be vagyok lépve.. pedig nyilvánosra van beállítva.
??