Diseño a mensajes dependiendo del grupo del autor
Tabla de contenidos
Con este código podrás darle diseño a los mensajes de tu foro dependiendo del grupo de quién los haya publicado. Gracias a esto podrás hacer modificaciones como poner en azul los mensajes de los miembros de la casa «Ravenclaw», etc.
Además, este código también identifica los mensajes de los invitados o de los usuarios sin color, por lo que las posibilidades son aún mayores.
El funcionamiento es el siguiente: se crea una clase que identifica a los grupos y se añade a div.post
para poder hacer cualquier tipo de modificación.
Requisitos
- Soltura con el PA de Foroactivo.
- Un foro phpBB3 de Foroactivo.
- Tener instalado previamente el código Lista de Grupos.
Instalación
La instalación es realmente simple. Tan solo hay que añadir desde la «Gestión de JavaScript» el siguiente código, activándolo solo en los temas:
!function() {
const getClassFromUsername = username => {
const prefix = 'usergroup-',
color = username.querySelector('span');
if(username.childElementCount == 0)
return prefix + 'guest';
else if(color)
return prefix + `group- ${ FLX.forumGroups.getByColor(color.getAttribute('style').substr(-7)).code || 'unknown' }`;
else
return prefix + 'nogroup';
};
document.addEventListener('DOMContentLoaded', function() {
Array.from(document.querySelectorAll('div.post')).forEach(post => {
const username = post.querySelector('.postprofile dt strong[style^="font-size"]');
if (!username) return;
post.classList.add(getClassFromUsername(username));
});
});
}();
Consideraciones
- Este código no añade clases estáticas en el tiempo. Es decir, si en un futuro un usuario cambia de grupo, pierde su grupo o se elimina (se convierte en invitado), la clase de sus mensajes cambiará con ellos.
Clases posibles
div.post.usergroup-group-{identificador_del_grupo}
: Clase creada para los mensajes escritos por un usuario que esté en uno de los grupos del foro (dependiendo de la terminación del selector será un grupo o otro).div.post.usergroup-nogroup
: El autor del mensaje no pertenece a ningún grupodiv.post[class*="usergroup-group-"]
:El autor del mensaje pertenece a un grupo cualquiera del foro identificado por el código.div.post.usergroup-unknown
: El usuario está en un grupo pero no ha sido identificado por el código (seguramente porque en la constante del códigogroups_id
no hayas incluido el grupo o su color no corresponde).div.post.usergroup-guest
: El autor es un invitado.