Relier plusieurs pages à la celle du profil d'un membre ?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je souhaiterais savoir si il est possible de relier la page user profil à d'autre pages ?

Par exemple avoir une page principale (celle de user-profil.tpl) pour afficher les infos sur le membre (nom, prénom etc), et ajouter d'autres pages où je rajouterais d'autres données du membre.

Je crois savoir qu'il faut utiliser la fonction "preprocess" [theme_hook_suggestions] ? Mais comment faire pour que les nouvelles pages soient bien attachées au membre ? pour que je puisse notamment me servir des variables de la page user-profil.tpl sur une autre page tpl ?

Je sais pas si j'ai étais assez clair sur ce que je souhaite faire :s

Forum : 
Version de Drupal : 

Les utilisateurs sont des entités sous Drupal 7, donc vous pouvez ajouter un champs a l’entité "user" (par ex, "pages associées") qui pourrait être un "textfield", ou une liste de "node/entity reference". A la création de chaque utilisateur, il faudrait alors "remplir" le champs avec les pages associées.
Autre solution, faire une référence vers un utilisateur sur chaque type de contenu "page" avec un champs "entity reference" et lister ces "pages" avec une vue sur votre page d'un profile utilisateur.

Dans tous les cas il faut un mécanisme pour associer ces pages a chaque utilisateur.

Bonjour,

N'est-ce pas possible juste de créer des callbacks par hook_menu, et d'associer en paramètre de ces callbacks la variable $user ? Comme ça, on crée plusieurs pages, avec le $user actif, et on affiche les champs qu'on veut sur chacune des pages.
C'est ce qui me paraît le plus simple, à première vue.

Vous avez raison... J'ai mal lu la question, je pensais qu'on parlait de pages associées a l'utilisateur mais complètement différentes et indépendantes des données de l'utilisateur. M'apprendra a répondre aussi tard :)

Bonjour,

Désolé de répondre aussi tardivement, mais peux-tu m'en dire plus concernant ton idée ?

Ne dois-je pas plutôt me service de la fonction "preprocess_user_profile" ?

par exemple :

function MYTHEME_preprocess_user_profile(&$vars) {
case "page1":
$vars['theme_hook_suggestions'][] = 'premiere_page_user';
break;
case "page2":
$vars['theme_hook_suggestions'][] = 'seconde_page_user';
break;
....

Bon j'ai créer un module pour l'ajout d'une nouvelle page perso pour l'user, la nouvelle tab "Test page" s'ajoute bien dans la page profil user, mais lorsque je clique dessus, ça me renvoi une page blanche. J'ai pourtant ajouté dans mon dossier "template", la page "page-user-test.tpl.php".

<?php
 
function user_test_menu() {
global
$user;

$items = array();
  
$items['user/%user/testpage'] = array(
   
'title' => 'Test page',
   
'page callback'    => 'page_user_test',
   
'page arguments'   => array('user_profile_form', 1),
   
'access callback'  => TRUE,
   
'type' => MENU_LOCAL_TASK,
   
'file' => 'user.pages.inc',
   
'file path' => drupal_get_path('module', 'user'),
  );

    return
$items;
}
?>

Bon j'ai réussi à relier la page callback à un thème tpl

mais le problème est que je n'arrive pas à retrouver l'uid de l'utilisateur de la page, j'ai l'impression la variable $user n'est pas relié à "test.tpl"...comment faire ? :(

<?php
function user_film_menu() {
global
$user;

$items = array();
  
$items['user/%user/films-favoris'] = array(
   
'title' => 'Test',
   
'page callback'    => 'test',
   
'page arguments'   => array('user_profile_form', 1),  
   
'access callback'  => TRUE,
   
'type' => MENU_LOCAL_TASK,
   
'file' => 'user.pages.inc',
   
'file path' => drupal_get_path('module', 'user'),
  );

    return
$items;
}

function
test()
{
    return
theme('test');
}
function
user_film_theme(){
    return array(
       
'test' => array(
           
'template' => 'test'// ce qui donne test.tpl.php
       
)
    );
}
?>