Bloque: Bienvenido [Usuario] | Salir en Drupal

Posteado el por: moncada.nicolas
FacebookTwitter
bloque bienvenido ejemplo

Existe un requerimiento habitual que no siempre esta presente en Drupal, normalmente esta resuelto en algún theme, pero no todos lo tienen. Hablo del bloque Bienvenido "usuario" y con la opción de Salir (logout). Existen varias formas de hacerlo y la idea del post es ver dos de ellos.

Opción 1: Creando un bloque y usando el filtro PHP

Este método es bien simple. Para construirlo se necesita tener habilitado el módulo PHP Filter (viene en el core de Drupal). Lo primero que haremos es ir a la sección de bloques y creamos uno nuevo (admin/structure/block/add), en el cuerpo colocamos el código que adjunto más abajo y configuramos que solo se deba mostrar a los usuarios autentificados. A continuación el código:

<?php
 
global $user;
  print
"Bienvenido " . l($user->name, 'user')  . " | " . l('Salir', 'user/logout');
?>

Opción 2: Creando un bloque con Views

Este método es un poco más complicado pero, personalmente, lo encuentro mejor. Para hacerlo más rápido, más abajo les comparto el código de una vista para que lo importen en sus sitios. Esto generará la vista con un display bloque, listo para dejarlo en alguna región y les imprima el "Bienvenido". Pueden mejorarlo como agregando la foto de perfil.

<?php
$view
= new view();
$view->name = 'welcome';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'users';
$view->human_name = 'welcome';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */

$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'role';
$handler->display->display_options['access']['role'] = array(
 
2 => '2',
);
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'some';
$handler->display->display_options['pager']['options']['items_per_page'] = '1';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['inline'] = array(
 
'name' => 'name',
 
'nothing' => 'nothing',
);
$handler->display->display_options['row_options']['separator'] = ' | ';
/* Field: User: Name */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'users';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['label'] = '';
$handler->display->display_options['fields']['name']['alter']['alter_text'] = TRUE;
$handler->display->display_options['fields']['name']['alter']['text'] = 'Bienvenido [name]';
$handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE;
$handler->display->display_options['fields']['name']['element_label_colon'] = FALSE;
/* Field: Global: Custom text */
$handler->display->display_options['fields']['nothing']['id'] = 'nothing';
$handler->display->display_options['fields']['nothing']['table'] = 'views';
$handler->display->display_options['fields']['nothing']['field'] = 'nothing';
$handler->display->display_options['fields']['nothing']['label'] = '';
$handler->display->display_options['fields']['nothing']['alter']['text'] = 'Salir';
$handler->display->display_options['fields']['nothing']['alter']['make_link'] = TRUE;
$handler->display->display_options['fields']['nothing']['alter']['path'] = 'user/logout';
$handler->display->display_options['fields']['nothing']['alter']['alt'] = 'Salir';
$handler->display->display_options['fields']['nothing']['alter']['link_class'] = 'logout';
$handler->display->display_options['fields']['nothing']['element_label_colon'] = FALSE;
/* Sort criterion: User: Created date */
$handler->display->display_options['sorts']['created']['id'] = 'created';
$handler->display->display_options['sorts']['created']['table'] = 'users';
$handler->display->display_options['sorts']['created']['field'] = 'created';
$handler->display->display_options['sorts']['created']['order'] = 'DESC';
/* Filter criterion: User: Active */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'users';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = '1';
$handler->display->display_options['filters']['status']['group'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: User: Current */
$handler->display->display_options['filters']['uid_current']['id'] = 'uid_current';
$handler->display->display_options['filters']['uid_current']['table'] = 'users';
$handler->display->display_options['filters']['uid_current']['field'] = 'uid_current';
$handler->display->display_options['filters']['uid_current']['value'] = '1';

/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block');
$handler->display->display_options['block_description'] = 'Bienvenido Usuario';
?>

Espero que les pueda ser de utilidad.

moncada.nicolas

Últimos Comentarios

Blog

En esta sección compartimos algunas experiencias concretas para la comunidad de desarrolladores de código abierto

Hace un tiempo atrás, Transbank (la empresa detrás de Webpay) había habilitado una nueva modalidad para integrar su sistema de pago con nuestros sitios. Se trata de un servicio web que utiliza el protocolo SOAP, haciendonos más fácil la integración con respecto a su antecesor. Y para soportar esto en Drupal, se ha publicado una nueva versión del módulo Webpay y aquí veremos como funciona.

Posteado el por: moncada.nicolas

Para la junta de Drupal (realizado el 20 de Diciembre del 2016) he presentado el desarrollo de un módulo pensado para la comunidad de Drupal Chile, llamado Badge. El objetivo del módulo es crear logros o insignias y asignarlo a usuarios u otras entidades de nuestro sitio.