En D7, en utilisant le module blockreference contrib, vous pouvez ajouter un champ à un nœud (disons) qui permettait à l'utilisateur de référencer un bloc . Lors de la visualisation de la page, le contenu rendu du bloc référencé serait inclus.
C'était génial pour inclure des trucs widgety par page, surtout lorsqu'ils sont combinés avec le module Paragraphs.
J'ai une vue qui définit un certain nombre d'affichages de bloc. Je veux en référencer un particulier à partir d'un nœud et j'ai du mal à le faire dans D8.
Lors de la création du champ de référence, plusieurs options sont proposées dans le groupe opt "Références", mais aucune n'inclut Block. J'ai essayé "Références" Autre ... "qui semblait être la référence générique d'entité qui, selon moi, fonctionnerait.
Ensuite, on me demande quel type d'entité référencer, qui est divisé entre le contenu et config . Je suppose que c'est de la configuration car une vue est une configuration, même si sa configuration fournit du contenu (ouch mon cerveau). Sous Config je vois bloc . Génial! Je veux qu'il fasse référence à un bloc.
Cependant, après avoir sélectionné que je ne peux pas sembler référencer le bloc créé par ma vue - basculer l'affichage du formulaire pour sélectionner la liste pour voir ce que est disponible, je vois toutes sortes de choses (certaines, comme "actions d'administration primaire" apparemment répétées 4 fois?!) mais PAS les blocs de la vue.
L'autre option qui semblait pertinente pour "quelle entité référencer" est View. Mais si je le fais, je reçois juste un lien vers l'écran d'édition de la vue.
J'ai depuis découvert que si je place le bloc dans la section désactivé , alors je suis capable de le référencer.
Alors, y a-t-il une meilleure façon de référencer un bloc ou dois-je faire cette chose étrange de créer un bloc "placer comme" désactivé "" référence . Sinon, y a-t-il une explication pourquoi avoir à faire des choses de cette manière vraiment déroutante apporte un avantage important à la construction de sites que je devrais comprendre?
Merci d'avance.
Block block couvre en fait la même fonctionnalité que Drupal blockreference. Il fonctionne comme "block field" dans la suite d'affichage, il référence le plugin de bloc et crée des instances de bloc qui lui sont liées) Entité hôte, pas de thème.
Les choses sont déroutantes car c'est ainsi que fonctionne la référence d'entité. Toutes ces choses sont des entités, donc elles sont techniquement référençables. Comme vous l'avez trouvé, les blocs sont des emplacements de blocs réels , ce qui n'est pas ce que vous voulez. Et la vue ne permet pas de sélectionner l'affichage, donc pour votre cas, ce n'est pas non plus ce que vous voulez. Drupal 8 core ne peut tout simplement pas faire cela sans code personnalisé ou module (pour l'instant).
Vous avez soit besoin d'un module contrib comme Viewfield , mais qui n'a pas encore de version officielle 8.x. La boîte bleue pointe vers le problème du tracker contrib, qui à son tour pointe vers https://www.drupal.org/node/2220929 , qui a un lien vers un référentiel github où quelqu'un a fait un port initial . Si et comment cela fonctionne déjà, je ne peux pas le dire.
Une approche qui nécessiterait un peu de code personnalisé serait d'avoir un champ de liste avec quelques options (puisque vous ne voulez pas autoriser toutes les vues de toute façon ..), et sur cette base, il doit y avoir un peu de code qui charge et appelle la vue et affiche les résultats.
Dans mon travail, nous testons Drupal 8 (actuellement 8.2.5) et avons eu le même problème, mais nous utilisons le module Paragraphs pour les dispositions de contenu de page. Nous avons trouvé une solution qui fonctionne jusque là.
Tout d'abord, vous devez installer le module Paragraphs . Ensuite, vous devez installer le module Views Reference Field . Une fois que vous avez créé un "paragraphe", vous pouvez ajouter un champ pour une "référence de vue" et il chargera les données de cette vue dans la section spécifiée du "paragraphe". Une fois que nous avons ajouté le champ Paragraphe au type de contenu sur lequel nous souhaitions l'utiliser, nous pouvons désormais charger les données de nos vues dans n'importe quelle partie des champs de pages.
REMARQUE: nous n'avons pas testé le module Views Reference Field seul, mais cela peut valoir la peine d'essayer!
La documentation de chacun de ces modules est assez bonne et nous a amenés là où nous devions être, donc je ne prendrai pas la peine de passer en revue tous les détails de chacun ici, vous devriez les lire et jouer avec eux en conséquence.
Vous pouvez réellement le faire avec le module Block Visibility Groups . Lorsque vous installez le module, un élément apparaît dans la barre d'administration, "Bloquer les groupes de visibilité". Lorsque vous êtes sur la page où vous souhaitez placer le bloc, cliquez simplement dessus, et cela vous donnera un certain nombre d'options sur la façon de limiter la visibilité du bloc que vous souhaitez placer sur la page. Je l'utilise pour afficher un bloc de vues avec un filtre NID contextuel sur un type de nœud que j'ai appelé Galeries de photos, et il extrait les images du champ d'image et les met en forme dans un diaporama de vues. J'ai limité la visibilité au type de contenu de la galerie de photos.
Ensuite, après avoir créé le groupe de visibilité, accédez à la page de disposition de bloc, et une liste déroulante apparaît juste au-dessus des régions, et vous pouvez sélectionner votre groupe de visibilité à partir de là. Lorsque vous placez votre bloc avec ce groupe de visibilité sélectionné, cela limitera l'affichage du bloc dans la région au groupe de visibilité que vous avez désigné.
Fonctionne très bien, nécessite juste une façon légèrement différente de penser à ce sujet par rapport aux formateurs de champ.
J'ai ajouté le bloc de vue en utilisant le type de champ de référence d'entité (choisissez autre).
Il y a un excellent tutoriel ici: https://www.mediacurrent.com/blog/drupal-8-how-reference-views-block-display-field/
Cela fonctionnera très bien sur les nœuds mais c'est super puissant en conjonction avec les paragraphes.
C'est une de mes questions préférées. Bien que cela repose sur Display Suite et que je n'ai pas essayé la solution, je veux la partager:
Vous trouverez l'explication plus détaillée d'Ivan Zugec ici: https://www.webwash.net/using-display-suite-drupal-8-how-to-use-display-suite-fields/