2010-03-29 3 views
1

J'ai un site Drupal qui utilise un champ personnalisé pour un certain type de nœud (person_id) qui correspond à un utilisateur particulier. Je veux créer une vue afin que, lorsqu'il est connecté, un utilisateur peut voir une liste de nœuds étiquetés avec leur person_id. J'ai la vue fonctionne bien, avec une URL de my-library/username mais en remplaçant username avec un nom d'utilisateur différent montre une liste de tous les nœuds marqués avec cet utilisateur. Ce que je veux faire est d'arrêter les utilisateurs de changer l'URL et de voir les nœuds marqués d'autres utilisateurs. Comment puis-je faire ceci? Y at-il un endroit où je peux dicter que le seul argument valable pour cette page est celui qui correspond au nom d'utilisateur de l'utilisateur actuellement connecté?Drupal utilisant des vues avec des champs personnalisés CCK

Répondre

1

Je ne suis pas sûr comment vous avez configuré votre vue, ce qui donne quelques options différentes pour résoudre ce problème. Un moyen qui devrait fonctionner serait de définir l'argument par défaut soit l'identifiant/nom d'utilisateur des utilisateurs connectés et de supprimer l'argument de l'URL.

Vous pouvez également créer votre propre filtre, ce qui nécessite un travail avec l'API views, mais donne plus de contrôle.

2

person_id = uid? Dans ce cas, ajoutez l'argument avec l'utilisateur: uid, puis dans les options de validation sélectionnez le code PHP, lisez commentaire de ce champ avec soin:

Entrez le code PHP qui retourne TRUE ou FALSE . Aucun retour n'est le même que FAUX, alors soyez sûr de retourner quelque chose si vous ne voulez pas déclarer l'argument invalide. Ne pas utiliser . L'argument à valider sera "$ argument" et la vue sera "$ view". Vous pouvez modifier l'argument en définissant "$ handler-> argument".

Ajoutez ce code:

global $user; 
$account = user_load('name'=>arg(1)); 
$handler->argument = $user->uid; 
return $account->uid == $user->uid; 
Questions connexes