Gravatar Helper

Introduction

The Gravatar helper is useful for rendering image HTML markup returned from the gravatar.com service.

Basic Usage

You can use the Gravatar helper wherever in view scripts per the following example:

1
2
//This could be inside any of your .phtml file
echo $this->gravatar('email@example.com')->getImgTag();

The first (and only, in this example) argument passed to the Gravatar helper is an e-mail for which you want grab an avatar from gravatar.com. For convenience, this e-mail will be automatically hashed via the md5 algorithm.

This will render the HTML below:

<img src="http://www.gravatar.com/avatar/5658ffccee7f0ebfda2b226238b1eb6e?s=80&d=mm&r=g">

As you can see, the helper already provides URL defaults for you.

Custom Settings

You can customize the request for a gravatar.com image by using setter methods on the view helper:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
$gravatar = $this->gravatar();

// Set the email instead of passing it via helper invocation
$gravatar->setEmail('email@example.com');

// Set the image size you want gravatar.com to return, in pixels
$gravatar->setImgSize(40);

// Set the default avatar image to use if gravatar.com does not find a match
$gravatar->setDefaultImg( \Zend\View\Helper\Gravatar::DEFAULT_MM );

// Set the avatar "rating" threshold (often used to omit NSFW avatars)
$gravatar->setRating( \Zend\View\Helper\Gravatar::RATING_G );

// Indicate that a secure URI should be used for the image source
$gravatar->setSecure(true);

// Render the <img> tag with the email you've set previously
echo $gravatar->getImgTag();

Alternately, you can pass an array as the second argument on invocation, with the following keys:

1
2
3
4
5
6
7
8
$settings = array(
    'img_size'    => 40,
    'default_img' => \Zend\View\Helper\Gravatar::DEFAULT_MM,
    'rating'      => \Zend\View\Helper\Gravatar::RATING_G,
    'secure'      => null,
);
$email = 'email@example.com';
echo $this->gravatar($email, $settings);

Note

Passing null for the secure setting will cause the view helper to choose a schema that matches the current request to your application. This is the default behavior.

As you can see in the above examples, there are predefined settings for the default image and rating.

The Gravatar helper defines the following constants for ratings:

  • RATING_G
  • RATING_PG
  • RATING_R
  • RATING_X

The helper defines the following constants for the default image: * DEFAULT_404 * DEFAULT_MM * DEFAULT_IDENTICON * DEFAULT_MONSTERID * DEFAULT_WAVATAR

You may also provide custom attributes for the generated img tag. To do this, pass an attributes array to the setAttributes() method:

1
2
3
4
5
6
7
8
$gravatar = $this->gravatar('email@example.com');

// Suppose that I want to add the class attribute with a value of
// "gravatarcls" to the rendered <img> tag:
$attr = array(
    'class' => 'gravatarcls',
);
echo $gravatar->setAttributes($attr)->getImgTag();

Alternately, you can pass this array as the third argument during helper invocation:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$email = 'email@example.com';
$settings = array(
    'default_img' => \Zend\View\Helper\Gravatar::DEFAULT_MM,
);
$attr = array(
    'class' => 'gravatar-image',
    'id'    => 'gravatar',
);

echo $this->gravatar($email, $settings, $attr);