Dennis Hoppe

selbständiger Entwickler / Unternehmer / Student aus Berlin; schreibt über PHP, JavaScript, WordPress, jQuery, CodeIgniter, GTK und mehr.
Sie sind hier: Artikel → Der Gravatar

Der Gravatar

Der “Gravatar” Service von Automattic Inc. ermöglicht es Benutzern einen Avatar an die eigene E-Mailadresse zu binden und so einen globalen Avatar überall hin mit zu nehmen. Das spart Zeit, Bandbreite und damit Kosten. Der Gravatar wird von allen gängigen Blog-, Board-, Foren-, Gästebuch und Pinnwandsystemen unterstützt und ist völlig kostenfrei.

Zur Anmeldung benötigt man ausschließlich eine Mailadresse und einen Avatar (Das Bild welches man anhängen möchte).

Um den Gravatar auf der eigenen Seite einzubinden braucht man, im Gegensatz zu vielen anderen Diensten, weder einen Account noch einen Developer Key oder ähnliches.

Wer nur mal schnell einen fremden Gravatar nachschlagen will schaut hier: http://aruljohn.com/gravatar/

Die API

Um einen Gravatar abzurufen, benötigt man nur die E-Mailadresse des Eigentümers, weitere Parameter sind optional. Die Url des Gravatars wird wie folgt gebildet:

http://www.gravatar.com/avatar/[MD5-Hash der Mail]/?[Parameter]

Für die Mailadresse: “iHaveAn@email.com” ergibt sich als URL:

1
2
3
// Ermitteln des Hash-Wertes:
$hash = MD5(StrToLower(Trim('iHaveAn@email.com')));
Echo $hash;

“http://www.gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802″

Analog dazu wäre ebenso gültig:

  • http://gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802/bild.jpg
  • http://gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802/
  • http://gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802.jpeg
  • http://gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802.jpg

Parameter lassen sich als HTTP-GET Parameter anfügen und müssen ggf. enkodiert werden. Zulässige Parameter sind:

  • “size” / “s” > Größe des Gravatars in Pixel, zwischen 1 und 512
  • “rating” / “r” > Maximale Alterszulassung
  • “default” / “d” > Alternativ-URL / ID, falls der Gravatar nicht existiert

Die Bewertung des Gravatars (Rating) kennt folgende Werte:

  1. G: ohne Altersbeschränkung
  2. PG: nicht für Kinder unter 12 Jahren
  3. R: nicht für Kinder und Jugendliche unter 17 Jahren
  4. X: jugendgefährdend

Vordefinierte Gravatare

Über den Parameter “default” kann man nicht nur eine alternative Url übermitteln sondern auch vordefinierte Strings. Zulässig sind:

  1. Zeile: “identicon
  2. Zeile: “monsterid
  3. Zeile: “wavatar

Je nach E-Mailadresse ändert sich der Gravatar. Anbei ein paar Gravatare mit vier verschiedenen E-Mail-Adressen:

Gravatar Gravatar Gravatar Gravatar
Gravatar Gravatar Gravatar Gravatar
Gravatar Gravatar Gravatar Gravatar

Zur Benutzung des Gravatars habe ich folgende Klasse geschrieben:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Class Gravatar {
  var $mail;
  var $size = 80;
  var $rating = 'g';
  var $default = '';
 
  Function setMail ($mail){
    $mail = Trim ($mail);
    If ($mail == '') return False;
    $this->mail = StrToLower ($mail);
    return True;
  }
 
  Function setSize ($size){
    $size = IntVal ($size);
    If ($size < 1 || $size > 512) return False;
    $this->size = $size;
    return True;
  }
 
  Function setRating ($rating){
    $arr_valid = Array ('g', 'pg', 'r', 'x');
    $rating = StrToLower (Trim ($rating));
    If (Array_Search ($rating, $arr_valid) === False) return False;
    $this->rating = $rating;
    return True;
  }
 
  Function setDefault ($default){
    // Valid: identicon, monsterid, wavatar or an url
    $default = Trim ($default);
    $this->default = UrlEncode($default);
  }
 
  Function getUrl (){
    If ($this->mail == '') return False;
    $url = 'http://www.gravatar.com/avatar/'.
           MD5($this->mail).'?'.
           'size='.$this->size.'&amp;'.
           'rating='.$this->rating.'&amp;'.
           'default='.$this->default;
    return $url;
  }
}

Dokumentation und Beispiel

1
2
3
4
5
6
7
8
9
10
Include 'class_gravatar.php';
$gravatar = New Gravatar;
$gravatar->setMail ('user@example.com');
 
// Optional:
$gravatar->setSize (100);
$gravatar->setDefault('monsterid');
 
// Get Url:
Echo $gravatar->getUrl();

Wer sich ein paar vordefnierte Gravatare anschauen möchte, kann dazu diesen Code verwenden: ;)

Der folgende Quellcode ist mit Vorsicht zu genießen. Er enthält PHP Short Open Tags. Diese sind nur in Testumgebungen zugelassen! (Und Teilweise nicht mal da.)

1
2
3
4
5
6
7
8
9
Include 'class_gravatar.php';
$gravatar = New Gravatar;
$gravatar->setSize (100);
< ? ForEach ( Array('identicon','monsterid','wavatar') AS $id) : $gravatar->setDefault($id); ?>
  < ? For ($x = 0; $x < 4; $x++) : $gravatar->setMail(Rand().'@example.com'); ?>
    <img src="<?=$gravatar-/>getUrl() ?>" alt="Gravatar">
  < ? EndFor; ?>
  
< ? EndForEach; ?>

Weitere Meinungen

Sie können der Diskussion zu diesem Beitrag über den RSS 2.0 Feed folgen.

Sie können zu diesem Artikel einen Kommentar schreiben oder einen Trackback von Ihrer eigenen Seite setzen.

Verknüpfungen

  • Gravatar ohne Wordpress Plugin... Gravatare im Wordpress Blog gehören mittlerweile zum guten Ton und Pflichtprogramm für jeden Template-Bauer, wenn es darum geht ein neues oder vorhandenes Design zu “pimpen”. Um diesem Dilemma mit den Plugins in diesem Bereich einen Strich ...

Hinterlassen Sie eine Antwort