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
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.
??