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
5.x?
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
még nem néztem meg
hol akadtál el?
Megy 5.0-án, tudom, most
Megy 5.0-án, tudom, most állítottam be :)
Csak akkor jeleníti meg a
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.
??