2009-11-22 5 views
0

J'ai deux types de contenu, livre et chapitre. Chaque nœud de chapitre contient une référence de nœud du livre auquel il appartient. J'ai créé une vue qui affiche le titre de chaque chapitre pour un livre donné. Dans la vue, le champ de titre a été configuré pour être lié à son noeud.Lien conditionnel au noeud dans les vues?

Tout fonctionne bien. Je suis maintenant intéressé par la mise à jour de la vue pour ne pas afficher un lien vers le nœud d'un chapitre lorsque le corps du chapitre est vide. Ainsi, cette vue affichera une liste de titres de chapitres pour un livre et un lien uniquement vers les chapitres qui ont un corps. Est-ce que cela peut être accompli en utilisant la fonctionnalité Vues de la boîte? Sinon, comment une telle chose pourrait-elle être accomplie?

Merci.

+0

Bien que cela a été demandé en '09, nous avons un site soeur maintenant qui est spécifiquement pour les questions drupal: [drupal.se] – Will

Répondre

3

J'utiliserais le module Views Custom Field pour implémenter votre logique personnalisée. Il vous permet de récupérer les données récupérées par Views et de les manipuler à volonté avec PHP. Très utile.

+0

Merci. Votre réponse a fourni l'information dont j'avais besoin pour avoir un lien conditionnel pour le titre. Ce que j'ai fait pour accomplir cela, c'était d'abord de télécharger et d'activer views_customfield. Deuxièmement, j'ai placé les champs Titre et Corps dans la vue, tous deux exclus de l'affichage. Troisièmement, dans un champ de code de Customfield: PHP j'ai placé le code suivant: node_revisions_body)) == 0) {return $ data-> node_title; } else {retourne l ($ data-> node_title, drupal_get_path_alias ('noeud /'. $ data-> nid)); }?> – sutch

+0

Content de pouvoir aider. :-) – ceejayoz

0

Je réponds à ma propre question car ma réponse à ceejayoz est mal formatée.

Pour ce faire, j'ai d'abord téléchargé et activé views_customfield. Deuxièmement, j'ai placé les champs Titre et Corps dans la vue, tous deux exclus de l'affichage. En troisième lieu, dans un CustomField: champ de code PHP I placé le code suivant:

<?php 
if (strlen(trim($data->node_revisions_body)) == 0) { 
    return $data->node_title; 
} else { 
return l($data->node_title, drupal_get_path_alias('node/' . $data->nid)); 
} 
?> 
0

Il y a aussi cette solution intelligente qui vous permet de réaliser très facilement:

  1. Ajouter 2 champs titre un avec lien et un avec aucun lien, et faire à la fois les exclure de l'affichage.
  2. Ajouter un champ de corps,
  3. Aucun résultat mettre le titre sans le lien de remplacement de lien à it.
  4. Dans le comportement des résultats de réécriture, placez le titre avec le jeton de remplacement de lien à .
  5. Cochez la case si elle est vide.

Source