Mostrar diferente contenido en los árticulos por tipo de usuario - Drupal

Drupal

1. Introducción

Utilizo el CMS Drupal para manejar mis sitios web, a veces es necesario mostrar un mismo contenido a varios usuario, pero ¿Qué ocurre cuando queremos mostrar diferentes contenidos a usuarios registrados y no registrados? ese fue mi caso, necesitaba que cuando un usuario  no registrado(usuario anónimo) visitara la página de descargas le apareciera un mensaje indicándole que necesitaba registrarse para realizar la descarga y en el caso que un usuario registrado acediera le debia aparecer el link de descargas. Después de tanto investigar logré hacerlo, aquí les muestro los pasos:

1.1. Contenido

  1. Primero debemos activar el módulo de evaluación de código php en Drupal(PHP filter).
  2. Utilizar algunas API's de drupal para evaluar el tipo de usuario que está accediendo a la página.
  3. Activar el tipo de formato PHP Code al momento de editar la página o artículo.

2. Requerimientos

  • Drupal en su versión 7.X

3. Activar el módulo PHP Filter

Primero procedmos a activar el módulo PHP Filter, para eso ingresamos como usuario administrador , y nos dirigimos a Módulos(Modules) y activamos el módulo PHP Filter tal y como se muestra en la imagen:

Finalmente damos clic en el botón Guardar Configuración (Save Configuration) para activar el módulo.

3. Filtrar el contenido por tipo de usuario(Role)

Una vez activado el módulo podemos proceder a crear nuestro contenido, lo primero que haremos es crear un nuevo contenido o, en su defecto, editar aquel que deseamos filtrar, dentro del contenido de nuestra nueva página o artículo colocamos la siguiente plantilla de código:

<h1>Bienvenido a la página de descargas</h1>
<?php
global $user;
$approved_roles = array('authenticated user', 'super user');
if (is_array($user->roles)) {
  if (count(array_intersect($user->roles, $approved_roles)) > 0) {
?>
  <h2>Aquí el código si el usuario ha iniciado sesión</h2>
  <h2>Esta es la sección de descargas</h2>
  <a href="#"> Enlace de descarga</a>  

<?php
  }
  else {
?>
  <h2>Aquí el código si el usuario no ha iniciado sesión</h2>
  <h2>No tienes permiso para acceder a la página de DESCARGAS. Puedes <a href="/user/register">registrarte</a> o <a href="/user/login?destination=downloads">ingresar</a> con tu cuenta. </h2>
  <h2 style="text-align:center"><a href="/user/login?destination=downloads">Ingresa</a> | <a href="/user/register">Regístrate</a></h2>

<?php
  }
}
?>

Debes reemplazar los bloques de código según tu necesidad, finalmente debemos seleccionar el tipo de texto(Text format) a PHP Code para eso nos dirigimos al pie del editor de contenido de drupal y cambiamos Plain text(u otro) por PHP Code:

Hay que tomar en cuenta que el formato de texto PHP Code solo aparecerá cuando el módulo PHP Filter este activado, finalmente guardamos nuestro contenido.

4. Resultados

Cuando un usuario regitrado acceda a la página esto será lo que verá:

En caso de que el usuario sea un usuario visitante (anónimo) verá la página de descargas solicitándole que ingrese o se registre:

5. Bibliografía

user_access | user.module | Drupal API -> http://api.drupal.org/api/drupal/modules!user!user.module/function/user_access/7

$user | globals | Drupal API  -> http://api.drupal.org/api/drupal/developer!globals.php/global/user/7

Sistemas Operativos: 
Tecnologias: 
Lenguaje de programación: 

Comentarios

Tengo intencion en cambiar mi web de Prestashop a Drupal, me gustaria saber si alguien ha utilizado la version commerce de Drupal y que contras tiene.

Imagen de Jean Mazuelos
Enviado por Jean Mazuelos el Dom, 03/24/2013 - 22:05

Que tenga entendido no hay una versión comercial de drupal, pero usualmente algunas empresas venden plugins y soporte para drupal. En todo caso habria que saber que es lo que necesitas para saber si drupal te combiene o no.

Atte