J'ai le nœud A avec une référence de nœud au nœud B.
Dans une vue, je montre tous les nœuds A qui ont un nœud B particulier référencé (nid: 123, titre: node-B-title).
Au lieu d'utiliser le nid dans le filtre contextuel, je voudrais utiliser le titre du nœud. Par exemple, au lieu de:
view-name/123
Je voudrais utiliser
view-name/node-B-title
Comment pourrais-je faire ça?
J'ai eu un problème très similaire et je n'ai pas seulement trouvé la solution, mais j'ai également appris de nouvelles choses sur le fonctionnement de la vue. Permettez-moi de partager ce que j'ai appris et la solution à votre problème aussi.
Lorsque vous créez une vue avec un ou plusieurs filtres contextuels, la vue doit recevoir les valeurs de ces filtres quelque part. Cela peut être fait par -
foo/%/bar
ou foo/bar/%
pour un filtre contextuel unique OR de la forme foo/%/bar/%
ou foo/bar/%/%
pour plusieurs filtresLa solution à votre problème spécifique consiste à utiliser un code très similaire dans les sections pointées par les flèches dans l'image ci-dessus.
Ce lien s'est avéré d'une grande aide pour moi. En voici un extrait:
$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
$handler->argument = $np[1];
return TRUE;
} else {
return FALSE;
}
J'ai modifié la réponse acceptée, mais je voulais ajouter le code réel ici:
Utilisez PHP option validée sous les options de validation dans le filtre contextuel.
$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
$handler->argument = $np[1];
return TRUE;
} else {
return FALSE;
}
Cela ne fonctionnera pas dans toutes les circonstances, mais une approche du problème dans la question consiste à utiliser l'affichage du nœud réel du nœud B (ou type de nœud B) et à définir son chemin comme vous le souhaitez avec le chemin ou le module pathauto. Utilisez ensuite le bloc de vues pour ajouter la relation de contenu et la vue que vous souhaitez.
Utilisez un filtre contextuel sur NID, puis définissez Provide default value > Content ID from URL
. Ajoutez ensuite le bloc de vues à votre page ou ensemble de pages.
Si votre contexte vous permet d'utiliser un bloc de vues sur le nœud lui-même et non une page de vues, cela facilitera considérablement l'obtention du chemin et des vues que vous souhaitez.
L'argument de vue doit être la référence de champ du type de contenu, puis sélectionnez l'option "Fournir un argument par défaut" et cochez l'option Id Node (quelque chose comme ça).
1) Ajouter l'argument "Référence du champ X" 2) Vérifier l'ID du nœud à partir de l'URL (ajouter l'argument par défaut) 3) Dans la section de validation, vérifier le type de contenu du nœud, et lors de la configuration "Type de nœud" sélectionner "ID du nœud
Et c'est fait. :)
Vieille question, mais trouvée via Google et j'ai pensé partager ma solution pour toute autre personne qui la trouverait à l'avenir:
Il y a maintenant un module nommé safeword qui fait exactement ce que Sumeet Pareek a suggéré: (automatiquement) crée un champ convivial pour les URL.
Je recommanderais le module Extended Path Aliases (path_alias_xt) . Il résout ce problème uniquement en étant installé sans configuration, c'est essentiellement magique, apparemment. : D Pas vraiment, mais l'extrait de la page du module vante la façon dont vous venez de l'installer et il résout ce problème et d'autres, mais n'entre pas dans la façon dont le module le fait dans les coulisses ... O, eh bien, nous pourrions toujours lire le code: D Il ne mentionne pas spécifiquement la fixation des chemins des vues, mais je l'ai utilisé pour le faire et cela fonctionne parfaitement.
Liste des problèmes qu'il résout, à partir de la page du module:
- Vous êtes-vous déjà demandé pourquoi, après avoir défini un alias comme about-us pour, disons, node/123, vos pages sont toujours criblées de ces horribles onglets et liens générés par la machine comme/node/123/edit, node/123/revisions, etc. .?
- De même pour les liens/taxonomy/term /% et/user /%: vous attendiez-vous à voir/dries/track mais vous avez/user/5/track?
- Trouvez-vous que la barre d'adresse de votre navigateur affiche également ces chiffres laids au lieu de vos alias?