Expertos en Symfony y Drupal

Como redirigir en Drupal 7 a un usuario después de crear un nuevo contenido con la función node_submit

Buenas drupaleros,

en píldora drupaliana de hoy, os voy a contar cómo redirigir a un usuario después de crear un contenido.

Imaginemos que un usuario crea un contenido que debe ser aprobado por el administrador antes de ser publicado. Si no hacemos lo que a continuación explicamos, el usuario permanecerá viendo la página de su contenido, pero al no estar publicado, le aparecerá el típico mensaje de “Acceso denegado”.

Existen varios módulos para hacer esto, pero nosotros lo haremos con un simple código:


function MY_MODULE_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  if ($form_id == "tipo_contenido" && isset($user->roles[2])) {    
    $form['actions']['submit']['#submit'][] = 'custom_node_submit';
  }
}

function custom_node_submit($form, &$form_state) {
  if (arg(2) != "edit") {
    drupal_set_message("Contenido creado con éxito. Espere validación de admin.");
    $form_state['redirect'] = 'http://example.com';    
  }
}

Lo primero que hacemos es un form_alter del contenido que deseemos, sólo para los usuarios con rol 2; así nos aseguramos que a usuarios con otros roles no se le aplique esta regla. A continuación con la función node_submit, lo redirigimos donde queramos pero sólo lo haremos cuando sea una creación y no edición del contenido en cuestión.

Una forma sencilla y rápida de redirigir a nuestros usuarios después de crear un nuevo contenido.

Drupal y rock and roll

[x] Este sitio utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando estás aceptando su uso. Política de cookies.