Qu'est-ce qu'une vue dans Drupal? Comment fonctionnent-ils?

Soumis par dinarcon le lun 29/07/2019 - 07:00

Dans Drupal, une vue est une liste d'informations. Il peut contenir une liste de nœuds, d'utilisateurs, de commentaires, de termes de taxonomie, de fichiers, etc. Une vue scanne votre site Web à l'aide de tous les critères que vous spécifiez et présente les résultats dans le format de votre choix. Exemples de formats : un tableau HTML, un flux RSS, un document PDF, un document CSV, une carte interactive, un diaporama d'images ou une représentation JSON à utiliser comme point final REST. Le même contenu peut être présenté dans plusieurs formats en même temps. Par exemple, vous pouvez présenter un tableau d'informations utilisateur et sur la même page un lien pour télécharger les données au format CSV.

Poursuivons notre voyage pour comprendre plus de concepts Drupal. Comme vous l'avez peut-être déjà remarqué, ils s'appuient l'un sur l'autre. Aujourd'hui, vous apprendrez comment les nœuds, les types de contenu et les champs peuvent être utilisés dans le cadre de configurations de vues. Vous trouverez également des exemples de blocs créés à l'aide de vues.

Comprendre la terminologie des vues

Il y a trois termes clés que vous devez connaître : le module Vues, le module Views UI et une instance de vue. Le module Vues est le moteur de l'ensemble du système. Souvent décrit comme un générateur de requêtes SQL, il vous permet de récupérer les données stockées dans la base de données Drupal, d'assembler une liste de résultats et de les présenter dans différents formats de sortie. L'un des grands avantages qu'il offre est que les constructeurs de sites n'ont pas besoin de connaître SQL ou les détails de la structure de base de données sous-jacente. Avoir une compréhension de base des concepts Drupal comme les noeuds, les types de contenu et les champs suffit dans la plupart des cas. En utilisant le module Views UI, il est possible de créer des instances de vue qui encapsulent la configuration sur quelles éléments doivent être affichés et comment.

Le module Views UI est l'interface utilisateur visuelle du système. Il offre un assistant d'installation qui vous guide tout au long du processus de création et de configuration d'une vue. Une fois que toutes les vues d'un site ont été créées, le module Views UI peut être désactivé et les instances de vues individuelles continueront à fonctionner. D'une part, vous gagnez un peu de performance car il y a moins de code à exécuter sur les chargements de page. Mais plus important encore, les éditeurs ne pourront pas modifier la configuration de la vue en utilisant l'interface d'administration dans les environnements de production. Les constructeurs de sites pourront continuer à apporter des modifications aux environnements de développement selon les besoins. En suite, ils peuvent les intégrer à leur stratégie normale de déploiement de configuration.

Une instance de vue est un ensemble de configurations qui décrit comment les données dans Drupal seront collectées et présentées au visiteur du site. Une seule vue peut avoir plusieurs affichages. Les affichages possibles incluent une page située sous un certain chemin d'url, un bloc à placer dans une région thématique, ou un flux à exporter au format RSS ou OPML. Chaque type d'affichage vous permet de spécifier un format de présentation. Les valeurs possibles varient selon le type d'affichage. Dans le cas de l'affichage d'une page, les alternatives valides comprennent les listes non formatées, les tableaux, les listes HTML et les grilles. Les formats d'affichage et de sortie sont fournis par modules. Au fur et à mesure que vous activez plus de modules de base ou que vous installez de nouveaux modules contribués, vous obtiendrez peut-être plus d'options. Visitez cette page pour une liste de modules qui étend la fonctionnalité Vues.

Conseil: Le Views UI contient quelques incohérences qui peuvent vous embrouiller si vous ne la connaissez pas. La première est qu'il utilise le “Contenu"; pour désigner les nœuds, comme dans la première page de l'assistant de création de vues. Une autre est que contrairement au paramètre “Alias d'URL", de la page d'édition de noeud, le chemin d'accès à l'intérieur d'une vue ne produit pas une erreur de validation s'il ne commence pas par un signe / (slash). Ces différences et d'autres différences subtiles existent, mais elles sont négligeables par rapport à tous les avantages que nous retirons de l'utilisation du système.

Note technique: Il est possible de voir la requête SQL que Drupal exécute pour récupérer la liste des résultats. Allez à la page “Paramètres des Vues” sous “admin/structure/views/settings” et cochez l'option “Montrer la requête SQL” sous “Paramètres de l'aperçu en temps réel”. Ensuite, vous pouvez aller à n'importe quelle vue et en cliquant sur le bouton “Actualiser l'aperçu”, vous verrez la requête SQL créée par Drupal. A titre d'exemple, regardez la vue qui montre la page d'accueil configurée sous “admin/structure/views/view/frontpage”. Notez que les noms des tables sont entourés de accolades ({}), car Drupal vous permet de définir des préfixes de table pour partager la base avec les autres applications. Bien qu'ils soient rarement utiles, il est possible de les configurer. Pour cela, le Vues API utilise des accolades pour indiquer que les noms de tables doivent être traités pour préfixer les préfixes de tables lorsqu'ils sont définis.

Comment fonctionnent les vues Drupal?

Pour cette section, vous devez assurer que le module Views UI est activé. Pour créer une vue, visitez la page “Ajouter une vue” sous /admin/structure/views/add. Pour “Paramètres de la vue > Afficher” vous devez spécifier le type de listing que vous souhaitez créer: contenu (nœuds), utilisateurs, commentaires, fichiers, etc. Vous pouvez également indiquer comment vous souhaitez présenter les résultats : une page avec un flux RSS optionnel ou un bloc. Après ce formulaire initial, vous accédez à l'interface d'installation complète où les options de configuration sont pratiquement illimitées. La sélection initiale de ce qu'il faut afficher (contenu, utilisateurs, etc. ) ne peut pas être modifiée une fois définie car elle sert de table de base pour la collecte des données. A part cela et le nom système de la vue, tous les réglages peuvent être modifiés à tout moment à l'aide de cette interface. Au lieu de créer une vue à partir de zéro, passons en revue quelques exemples fournis avec le profil d'installation standard de Drupal. Cela nous permettra de mieux comprendre l'interface utilisateur de Views.

La vue de la page d'accueil est configurée sous /admin/structure/views/view/frontpage. Il est livré avec deux affichages: Page et Flux (Feed). La page apparaîtra sous le chemin /node avec le format d'une liste non mise en forme. Le réglage afficher est configuré pour montrer contenu (nœuds) en utilisant le mode d'affichage accroche. Parce que nous montrons un nœud de vue, il n'y a pas de champs individuels à présenter. Il est recommandé d'utiliser les modes d'affichage plutôt que de rendre des champs. L'une des raisons est qu'il bénéficie de la mise en cache au niveau de l'entité. La section des critères de filtrage spécifie les conditions qui doivent être remplies par un nœud pour apparaître dans la liste finale des résultats. Dans ce cas, le nœud doit être publié et promu en page d'accueil. Notez qu'il n'y a pas de critères de filtrage pour le type de contenu. Pourtant, dans une installation par défaut de Drupal, tous les articles apparaissent sur la page d'accueil et aucune page de base n'y apparaît. La raison en est que, par défaut, les articles sont placés pour être promus à la page d'accueil alors que les pages de base ne le sont pas. Ce paramètre peut être modifié sur la base d'un nœud et les valeurs par défaut peuvent être définies sur la base d'un type de contenu.

Retournez au Views UI pour la vue de la page d'accueil. Dans la section critères de tri, nous voyons deux valeurs. Le premier placera tout nœud marqué comme epinglé en haut des listes. Le second va ordonner les nœuds en fonction de la date à laquelle ils ont été écrits. Lorsqu'il y a plus d'un critère de tri, l'ordre dans lequel il est défini est important. Tout critère qui apparaît en premier dans la liste aura préséance sur les critères suivants. Cet affichage est utilisé par la page d'accueil par défaut de Drupal. Notez que son chemin d'accès /node est défini comme page d'accueil sous /admin/config/system/site-information dans une installation standard. Le second affichage de la vue est un Flux (Feed) dont la configuration est à peu près la même que celle de l'affichage de la Page. Les différences pertinentes sont le chemin d'accès, le format et les paramètres du mode de visualisation : /rss. xml, le format de flux RSS et le mode d'affichage RSS, respectivement.

Parfois, nous voulons créer une vue pour présenter une liste d'éléments, mais nous voulons que l'utilisateur final filtre davantage cette liste ou modifie la façon dont elle est triée. Il est possible de le faire en utilisant des critères de filtrage et critères de tri exposés. filtres exposés et en exportant des sortes. Un bon exemple est l'interface d'administration pour tous les nœuds de Drupal qui est placée sous admin/content. La configuration de la vue est disponible dans /admin/structure/views/view/content. Cette vue présente sept champs sous forme de tableau: formulaire des opérations en masse sur les nœuds, titre, type de contenu, auteur, statut de publication, horodatage mis à jour et opérations. La section des critères de filtrage spécifie quatre de ces champs sont exposés, ce qui permet à l'éditeur de contenu de filtrer la liste en fonction du titre du nœud, du type de contenu, du statut de publication et de la langue. Cette vue n'offre aucun critère de tri exposé, mais la fonctionnalité et la présentation sont similaires à celles des filtres exposés. Cependant, parce qu'il utilise un format de tableau, certains en-têtes ont été rendus cliquables permettant de changer l'ordre croissant ou décroissant pour ce champ particulier. C'est une autre façon de permettre à l'utilisateur final de modifier la présentation des résultats par défaut.

Il est important de noter quatre choses dans l'exemple précédent. Premièrement, un champ de vue n'a pas besoin d'être un champ attaché à un type de contenu, comme celui qui fournit la colonne “actions” dans le tableau. La réutilisation du mot “champ" dans ce contexte est un peu regrettable. Deuxièmement, la liste des champs de la section des champs et la section des critères de filtrage ne doivent pas nécessairement être identiques. Troisièmement, le widget (saisie de texte, liste déroulante, etc. ) qui permettra à l'utilisateur de filtrer la liste dépend du type de champ en cours de traitement. Quatrièmement, lorsque l'utilisateur filtre la liste, le format de présentation original est conservé, un tableau à sept colonnes dans ce cas.

Conseil: Le cœur Drupal est livrée avec au moins 14 vues par défaut. Les étudier est un bon moyen d'en apprendre davantage sur le fonctionnement du système Vues. Pour le lecteur curieux, jetez un coup d'œil aux vues “Qui est nouveau?” (Who's new) et “Qui est en ligne?” (Who's online) pour des exemples d'affichage de blocs. Ils sont disponibles dans /admin/structure/views. Si vous voulez jouer avec eux sans avoir à mettre en place un environnement de développement local, je vous recommande d'utiliser https://simplytest.me/. Dans ce site Web, vous pouvez tester le cœur Drupal et les modules, thèmes et distributions contribués en quelques minutes.

Note technique: Étant constructeur de requêtes SQL, certains éléments de l'interface utilisateur Vues peuvent être mappés à des concepts SQL. La section des champs correspond aux colonnes de la table à inclure dans l'instruction SELECT. Les relations ajoutent des clauses JOIN à la requête. Les sections des critères de filtrage et des filtres contextuels correspondent à la clause WHERE. La section des critères de tri correspond à ls clause ORDER BY. La section des pagination correspond aux clauses LIMIT et OFFSET. L'utilisation de l'agrégation ajoute une clause GROUP BY à la requête. Et le paramètre “Distinct” ajoute une clause DISTINCT. Sachez que les éléments d'interface ne mappent pas un à un les éléments de requête SQL. L'interface utilisateur Views s'efforce de dissimuler la complexité de la structure de données sous-jacente aux constructeurs de sites. Bien que cela ne soit pas nécessaire, il est utile de comprendre ce mappage, surtout lorsque la configuration de notre vue ne donne pas le résultat escompté.

Résultats dynamiques

Vues est l'un des nombreux systèmes qui vous permettent de créer des sites dynamiques avec Drupal. Ces sites qui, une fois configurés, mettent à jour leur contenu automatiquement au fil du temps. Par exemple, si vous avez un site Web qui contient de l'information sur des événements, vous voudrez peut-être avoir une page qui liste seulement les événements futurs. Pour ce faire, vous pouvez créer un type de contenu “Événement"; avec un champ “date". Ensuite, vous créez une vue avec un critère de filtrage qui utilise ce champ pour que seuls les événements dont la date est “aujourd'hui” ou plus apparaissent dans la liste finale. Notez qu'il est possible d'utiliser les décalages de date comme valeurs de filtre. Une fois toute la configuration en place, les éditeurs de contenu n'ont plus qu'à ajouter des nœuds et à définir une valeur pour le champ “date” Lorsque Drupal affiche la page pour cette vue, il respecte la configuration originale et n'affiche que les résultats qui correspondent à la condition à partir d'aujourd'hui. Ceci illustre la nécessité de stocker les données de nœud dans des zones séparées. De cette façon, vous pouvez les utiliser comme champs (pour afficher), critères de filtrage, critères de tri, et plus encore. Si vous aviez ces informations dans le champ “corps”, il vous serait pratiquement impossible de les utiliser à ces fins.

Vues avec un seul résultat

Nous avons dit que les vues sont utilisées pour créer une liste d'éléments. Lorsqu'on parle de listes, il est usuel de penser à des résultats avec plus d'un élément, habituellement plusieurs. Mais il y a des cas où la création de vues d'un élément a un sens: lorsque vous voulez montrer “le meilleur de”. Par exemple, l'article le plus visité du dernier mois, l'événement le plus fréquenté l'an dernier, le produit le plus récent ajouté au magasin, etc. Un autre cas d'utilisation pour une vue d'un élément est lorsque vous voulez montrer quelque chose au hasard. Pour ce faire, vous ajoutez un seul critère de tri bien nommé “Au hasard”. Dans tous ces cas, le téléavertisseur serait configuré pour afficher un seul élément.

Autres cas d'utilisation

Les cas d'utilisation des Vues sont sans fin. Certains nécessiteront l'utilisation de modules contribués, mais il est possible de construire beaucoup de choses avec la fonctionnalité de base Vues. Voici une très courte liste de choses que vous pouvez construire avec Vues :

  • Une carte interactive comme celle de Drupical.com
  • Une représentation JSON ou CSV de certains contenus que vous voulez migrer de Drupal 7 vers Drupal 8 en utilisant l'API Migrate (Migrate API).
  • Une page de recherche avec des filtres exposés et des facettes utilisant l'API de recherche (Search API).
  • Un lecteur audio ou vidéo avec une fonction de liste.
  • Un carrousel (d'images), bien que ce soit très probablement une mauvaise idée.

Le pouvoir est à vous

Vues est un système extrêmement puissant et un différenciateur clé de Drupal par rapport aux autres systèmes de gestion de contenu (CMSs) et frameworks. Nous n'avons fait qu'effleurer la surface de ce qui est possible dans ce billet de blog. Vues a beaucoup d'autres concepts comme les filtres contextuels et les relations qui n'ont pas été expliqués. En utilisant des modules contribués ou du code personnalisé, vous pouvez adapter les Vues aux besoins spécifiques. Par exemple, vous pouvez étendre les Vues en utilisant des plugins pour créer vos propres champs, critères de filtrage, critères de tri, etc. Vous pouvez également utiliser des hooks pour modifier la requête SQL elle-même. De plus, vous pouvez réécrire les résultats et les mettre thématiser. Avec autant de pièces en mouvement, il peut être intimidant d'apprendre des Vues. Ma recommandation est d'apprendre un concept à la fois et de bricoler avec les vues existants, comme ceux qui viennent avec le cœur Drupal, pour apprendre comment ils fonctionnent.

Il y a environ 8 ans, Johan Falk a créé l'une des meilleures ressources pour apprendre Vues que j'ai trouvés jusqu'ici. Tout comme les concepts Drupal que nous avons appris jusqu'à présent, les concepts de vues n'ont pas beaucoup changé depuis la sortie de cette série vidéo. Bravo à Johan pour avoir créé de nombreux tutoriels Drupal à l'époque. Peut-être qu'à l'avenir, je serai en mesure de produire un Vues tutoriel similaire/mis à jour ici à UnderstandDrupal.com Envoyez-moi un mot si vous êtes intéressé à parrainer une telle production.

Dans quelle mesure connaissiez-vous Vues Drupal? Saviez-vous comment les différents éléments de l'interface utilisateur de Vues correspondent aux clauses de requête SQL? Quels sont certains concepts que vous trouvez difficiles à comprendre? Quels modules contribués connaissez-vous qui étendent la fonctionnalité Vues?

Ajouter un commentaire

Texte brut

  • Aucune balise HTML autorisée.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.