Función utilitaria diseñada para generar y manipular avatares de usuario a partir de imágenes alojadas en los servidores de Google. Permite establecer dimensiones fijas cuadradas, inyectar atributos y definir una imagen de reemplazo para los avatares nativos de Blogger.
Esta función forma parte del proyecto Hamlet. Puedes revisar el código fuente en GitHub.
Definición de la función
<b:includable id='@avatar'>
<b:comment>
Create an avatar image with optional default image
@author zkreations
@param {image} src - Image URL
@param {image} [default] - Default image URL
@param {number} [resize=40] - Change dimensions
@param {string} [id] - Image ID
@param {string} [class] - Additional classes
@param {string} [sizes] - Sizes attribute
@param {string} [loading] - Loading attribute
@param {string} [fetchpriority] - Fetch priority attribute
@param {string} [crossorigin] - Cross-origin attribute
@param {string} [decoding] - Decoding attribute
@param {string} [referrerpolicy] - Referrer policy attribute
@param {string} [alt] - Alt text
</b:comment>
<b:if cond='data:src'>
<b:with value='data:default ?: "https://lh3.googleusercontent.com/a/default-user"' var='default'>
<b:with value='resizeImage((data:src contains "/img/bl" ? data:default : data:src), (data:resize ?: 40), "1:1")' var='image'>
<b:tag name='img'>
<b:attr name='b:whitespace' value='remove'/>
<b:class cond='data:class' expr:name='data:class'/>
<b:loop values='["id","sizes","loading","fetchpriority","crossorigin","decoding","referrerpolicy","alt"]' var='attr'>
<b:with expr:value='+("data:",data:attr)' var='value'>
<b:attr expr:name='data:attr' expr:value='data:value'/>
</b:with>
</b:loop>
<b:attr name='src' expr:value='data:image'/>
<b:attr name='width' expr:value='data:image.width'/>
<b:attr name='height' expr:value='data:image.height'/>
</b:tag>
</b:with>
</b:with>
<b:else/>
<b:comment render='true'>Parameter [src] is required.</b:comment>
</b:if>
</b:includable>
Especificación de Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
src |
image |
URL u objeto de la imagen de perfil. |
default |
string |
Imagen de reemplazo si no existe un avatar. |
resize |
number |
Tamaño del avatar en píxeles. Por defecto 40. |
id |
string |
Valor del atributo id. |
class |
string |
Clases CSS de la imagen. |
sizes |
string |
Valor del atributo sizes. |
loading |
string |
Modo de carga (Ej: "lazy", "eager"). |
fetchpriority |
string |
Prioridad de descarga (Ej: "high", "low"). |
crossorigin |
string |
Modo CORS de la petición. |
decoding |
string |
Método de decodificación (Ej: "async"). |
referrerpolicy |
string |
Política de referencias. |
alt |
string |
Texto alternativo. |
Modo de uso
Para implementar esta función, añade el fragmento en los marcados predeterminados (<b:defaultmarkups type='Common'>) de tu tema.
src
Determina el origen de la imagen de perfil del usuario. Si detecta el clásico marcador de avatar vacío de Blogger (blank.gif), la función procesará automáticamente la alternativa del parámetro default.
<b:include data='{ src: data:post.author.authorPhoto.image }' name='@avatar'/>
<img src='/w40-h40-p-k-no-nu/IMG_000000.png' width='40' height='40'/>
default
Define una imagen de marcador de posición (placeholder) en caso de que el perfil evaluado use el avatar en blanco predeterminado del sistema.
<b:include data='{
src: data:post.author.authorPhoto.image,
default: "https://www.gravatar.com/avatar/?d=identicon"
}' name='@avatar'/>
<img src='https://www.gravatar.com/avatar/?d=identicon' width='40' height='40'/>
resize
Ajusta el tamaño proporcional del contenedor en píxeles. Modifica físicamente tanto el ancho como la altura, asignándolos automáticamente a sus atributos HTML nativos.
<b:include data='{
src: data:post.author.authorPhoto.image,
resize: 80
}' name='@avatar'/>
<img src='/w80-h80-p-k-no-nu/IMG_000000.png' width='80' height='80'/>
id
Asigna un identificador único en el árbol DOM de la etiqueta resultante.
<b:include data='{
src: data:post.author.authorPhoto.image,
id: "author-avatar"
}' name='@avatar'/>
<img src='/w40-h40-p-k-no-nu/IMG_000000.png' id='author-avatar' width='40' height='40'/>
class
Aplica una o múltiples clases CSS a la imagen para manejar estilos externos o bibliotecas.
<b:include data='{
src: data:post.author.authorPhoto.image,
class: "rounded"
}' name='@avatar'/>
<img src='/w40-h40-p-k-no-nu/IMG_000000.png' class='rounded' width='40' height='40'/>
sizes
Define las condiciones de medios (media queries) para acompañar al uso de conjuntos de imágenes responsivas.
<b:include data='{
src: data:post.author.authorPhoto.image,
sizes: "(max-width: 40px) 100vw, 40px"
}' name='@avatar'/>
<img src='/w40-h40-p-k-no-nu/IMG_000000.png' sizes='(max-width: 40px) 100vw, 40px' width='40' height='40'/>
loading
Habilita la carga diferida nativa en navegadores modernos (Lazy loading). Valores soportados: "lazy" | "eager".
<b:include data='{
src: data:post.author.authorPhoto.image,
loading: "lazy"
}' name='@avatar'/>
<img src='/w40-h40-p-k-no-nu/IMG_000000.png' loading='lazy' width='40' height='40'/>
fetchpriority
Asigna prioridad de descarga HTTP frente a otros recursos críticos. Útil para optimizar elementos Above-the-fold.
<b:include data='{
src: data:post.author.authorPhoto.image,
fetchpriority: "high"
}' name='@avatar'/>
<img src='/w40-h40-p-k-no-nu/IMG_000000.png' fetchpriority='high' width='40' height='40'/>
crossorigin
Permite configurar las credenciales CORS necesarias si requieres procesar los píxeles de la imagen desde scripts locales o elementos <canvas>.
<b:include data='{
src: data:post.author.authorPhoto.image,
crossorigin: "anonymous"
}' name='@avatar'/>
<img src='/w40-h40-p-k-no-nu/IMG_000000.png' crossorigin='anonymous' width='40' height='40'/>
decoding
Proporciona una sugerencia al navegador sobre cómo debe decodificar la estructura de la imagen (de forma síncrona o asíncrona).
<b:include data='{
src: data:post.author.authorPhoto.image,
decoding: "async"
}' name='@avatar'/>
<img src='/w40-h40-p-k-no-nu/IMG_000000.png' decoding='async' width='40' height='40'/>
referrerpolicy
Controla qué datos e información de cabecera de referencia (Referrer) se envía al realizar la solicitud del recurso de imagen.
<b:include data='{
src: data:post.author.authorPhoto.image,
referrerpolicy: "no-referrer"
}' name='@avatar'/>
<img src='/w40-h40-p-k-no-nu/IMG_000000.png' referrerpolicy='no-referrer' width='40' height='40'/>
alt
Define el texto alternativo para accesibilidad (SEO). Si no se envía este parámetro, la función renderiza una etiqueta vacía por defecto.
<b:include data='{
src: data:post.author.authorPhoto.image,
alt: "Avatar de zkreations"
}' name='@avatar'/>
<img src='/w40-h40-p-k-no-nu/IMG_000000.png' alt='Avatar de zkreations' width='40' height='40'/>