Creando un alias personalizado para cada perfil de Profile2

June 18, 2021

Tags: IT Staff ES 2024
Share

Table of contents

Quick Access

drupal

 

Profile2 es un módulo de Drupal 7 que permite crear múltiples tipos de perfiles, a los cuales se les pueden asignar roles y permisos. Una de las funcionalidades clave de Profile2 es el módulo "Profile pages", que permite que cada instancia de Profile2 tenga su propia página. De esta manera, cada usuario puede tener un enlace a su perfil desde un menú y acceder a él para modificarlo.

 

Problema del URL No Amigable

Profile2 asigna automáticamente una URL a cada página de perfil, pero en algunos casos, esta URL no es amigable para el usuario. Para resolver este problema, podemos usar el módulo Pathauto para asignar un alias a cada perfil cada vez que un usuario se registre o edite su perfil. Esto hace que los perfiles sean accesibles mediante un alias más amigable.

 

Caso de Uso: Perfil de Compañía

En este caso, cada usuario de nuestra aplicación tendrá un perfil de Profile2 llamado "compañía", en el que cada usuario será el "dueño" de una compañía. El objetivo es crear un alias personalizado para cada perfil de compañía utilizando el nombre de la compañía, de manera que el perfil sea accesible de forma amigable.

 

Pasos para Desarrollar el Módulo Personalizado

Para lograr este objetivo, debemos seguir los siguientes pasos:

  1. Determinar el formato para el alias personalizado.
  2. Identificar cuándo un perfil de Profile2 está siendo creado o editado.
  3. Limpiar la información.
  4. Verificar si el alias ya existe.
  5. Guardar la información para que el perfil pueda ser visitado a través del alias personalizado.

 

Formato del Alias Personalizado

El formato para el alias será el siguiente:

 
/company/{company_name} 

 

La razón principal para usar el nombre de la compañía en el alias es que es más amigable para el usuario y cada usuario debe asignar un nombre único a su compañía.

 

Implementación del Módulo Personalizado

Para implementar este módulo, utilizaremos el hook hook_profile2_presave, proporcionado por el API de Profile2. Este hook es llamado cada vez que un perfil de Profile2 se inserta o edita en la base de datos.

  1. Obtenemos el nombre de la compañía de la cual se está creando o editando el perfil.
  2. Convertimos el nombre de la compañía a un formato ASCII y lo limpiamos utilizando las funciones pathauto_cleanstring y toAscii.
  3. Verificamos si el alias ya existe. Si el alias ya existe, es porque el usuario está editando su perfil, por lo que debemos eliminar el alias anterior.
  4. Creamos o actualizamos el alias con el nuevo valor del nombre de la compañía.

 

Código del Módulo Personalizado

A continuación se muestra un ejemplo de cómo implementar este proceso en el hook_profile2_presave:

 
field_company_name['und']; $array = array_filter($array); if (!empty($array)) {  $original_url = 'profile-' . $profile->type . '/' . $profile->uid;  $profile_company_name = strtolower($profile->field_company_name['und'][0]['value']);  // Convertir a ASCII  $profile_company_name = toAscii($profile_company_name);  // Cargar el módulo Pathauto  if (module_load_include('inc','pathauto','pathauto') !== FALSE) {    if (function_exists('pathauto_cleanstring')) {            // Verificar si el alias ya existe (el usuario está editando su compañía)      if (isset($profile->original)) {        // Cargar el valor antiguo        $profile_old_value = $profile->original->field_company_name['und'][0]['value'];        $profile_old_value = pathauto_cleanstring($profile_old_value);        $old_url = 'company/' . $profile_old_value;        $old_path = array(          'source' => $original_url,          'alias' => $old_url,          'language' => 'en'        );                // Eliminar el alias anterior        path_delete($old_path);      }      // Limpiar el nombre de la compañía      $profile_company_name = pathauto_cleanstring($profile_company_name);      // Crear el nuevo alias      $new_url = 'company/' . $profile_company_name;      $path = array(        'source' => $original_url,        'alias' => $new_url,        'language' => 'en'      );      // Guardar el nuevo alias      path_save($path);    }  } } 

 

Explicación del Código

  • Obtenemos el nombre de la compañía del perfil que se está creando o editando.
  • Convertimos el nombre a ASCII y lo limpiamos para asegurarnos de que la URL sea válida.
  • Verificamos si el alias ya existe. Si es así, eliminamos el alias anterior antes de crear uno nuevo.
  • Creamos el alias personalizado con el formato /company/{company_name} y lo guardamos.

 

Hemos creado un módulo personalizado que permite acceder a cada perfil de Profile2 de compañía utilizando el nombre de la compañía como alias, haciendo que la URL sea más amigable para el usuario. Este módulo mejora la experiencia de usuario y facilita la navegación en la aplicación.

 

Te recomendamos este video