avatares
Como modificar Drupal para tener avatares en los comentarios
Carlos — Jue, 17/04/2008 - 09:21
Por defecto en Drupal no se ven las fotos de los usuarios registrados en los comentarios. Pero es una modificación muy fácil que se puede realizar en dos minutos.
Primero vamos a Administrar -> Opciones de Usuario (admin/user/settings) y abajo de esa página activamos las imágenes de usuarios. Ahora los usuarios registrados ya pueden subir su avatar pero todavía no se verán en los comentarios. Para eso hemos de ir a Administrar -> Temas -> Configurar (admin/build/themes/settings) y en cambiar la visualización hemos de activar "Imágenes de los usuarios en los comentarios". Si también queremos que salga nuestra foto en los post activamos también "Imágenes de los usuarios en los envíos".
Lo que no hace por defecto Drupal es que el enlace de los usuarios registrados sea su web sino que pone el enlace a la ficha del usuario en nuestra web en Drupal. Y como queremos que la gente se registre y esto podría ser un motivo para no hacerlo lo tenemos que solucionar.
Primero hemos de conseguir que un usuario pueda añadir su web en su perfil. Activamos el módulo profile y luego vamos a Administrar -> Profiles (admin/user/profile) y añadimos un campo url. Ahora sólo falta que se muestre esa url en el enlace del comentario.
Para conseguir eso hemos de modificar la función que genera ese html pero hay que saber cómo se llama. Un método sería buscar en la API de Drupal algo relacionado con user o comment pero salen muchos resultados y hay un método mejor: el módulo devel. Lo subimos a nuestro Drupal y activamos devel y Theme developer. Una vez hecho esto nos saldrá abajo a la izquierda un checkbox que hemos de activar cuando estemos en la página que contiene el elemento que queremos modificar. Activamos el "Themer info" y hacemos click sobre el elemento a modificar (en este caso el nombre de usuario con el enlace en los comentarios). Nos saldrá una bonita ventana con el nombre de la función a reescribir y sus padres. Si hacemos click en la función nos llevará a la api de Drupal, allí copiamos la función y la pegamos en nuestro template.php del tema que estemos usando. Como yo ya lo he hecho vosotros con copiar la función al final del template.php será suficiente.
En este caso la función se llama theme_username pero para poderla reescribir la hemos de llamar phptemplate_username. La función modificada quedaría así:
<?php
function phptemplate_username($object) {
global $user;
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, 15) .'...';
}
else {
$name = $object->name;
}
profile_load_profile($object);
if($object->profile_web != '') {
$output = l($name, $object->profile_web , array('attributes' => array('title' => t('Go to user web page.'), 'absolute' => TRUE)));
}
else {
if (user_access('access user profiles')) {
$output = l($name, 'user/'. $object->uid, array('attributes' => 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 (!empty($object->homepage)) {
$output = l($object->name, $object->homepage);
}
else {
$output = check_plain($object->name);
}
$output .= ' ('. t('not verified') .')';
}
else {
$output = variable_get('anonymous', t('Anonymous'));
}
return $output;
}
?>
Además de ponerle su web a los usuarios registrados he quitado el nofollow que tan poco sentido tenía de los usuarios no registrados. Yo llamé a la variable de la web de usuario "web" por lo que se guardó como "profile_web" pero cada uno la puede llamar como quiera mientras también la cambie en esta función.
Comentarios recientes
hace 3 años 6 semanas
hace 3 años 39 semanas
hace 3 años 47 semanas
hace 4 años 3 días
hace 4 años 8 semanas
hace 4 años 8 semanas
hace 4 años 9 semanas
hace 4 años 10 semanas
hace 4 años 10 semanas
hace 4 años 11 semanas