it-swarm.com.de

Wie erstelle ich ein Feld, das auf eine Ansichtsblockanzeige in D8 verweist?

In D7 können Sie mit dem Modul Blockreferenz Contrib ein Feld zu einem Knoten hinzufügen (z. B.), mit dem der Benutzer auf einen Block verweisen kann. Beim Anzeigen der Seite wird der gerenderte Inhalt des referenzierten Blocks berücksichtigt.

Dies war großartig, um Widget-Inhalte pro Seite einzuschließen, insbesondere in Kombination mit dem Absatzmodul.

Ich habe eine Ansicht, die eine Anzahl von Blockanzeigen definiert. Ich möchte auf einen bestimmten Knoten verweisen, und ich habe Probleme, dies in D8 zu tun.

Beim Erstellen des Referenzfelds werden mir unter der Optionsgruppe "Referenzen" verschiedene Dinge angeboten, aber keine enthält Block. Ich habe "Referenzen" Andere ... "ausprobiert, was die generische Entitätsreferenz zu sein schien, von der ich dachte, dass sie funktionieren würde.

Als nächstes werde ich gefragt, auf welche Art von Entität verwiesen werden soll, die zwischen Inhalt und config aufgeteilt ist. Ich nehme an, dies ist config, da eine Ansicht config ist, auch wenn ihre Konfiguration Inhalte bereitstellt (autsch mein Gehirn). Unter Config sehe ich Block . Großartig! Ich möchte, dass es auf einen Block verweist.

Nachdem ich ausgewählt habe, dass ich nicht auf den von meiner Ansicht erstellten Block verweisen kann - indem ich die Formularanzeige auf Auswahlliste umschalte, um zu sehen, was ist verfügbar ist, sehe ich alle möglichen Dinge (einige wie "primär" Admin-Aktionen "anscheinend 4 mal wiederholt?!), aber NICHT die Blöcke der Ansicht.

Die andere Option, die für "auf welche Entität verwiesen werden soll" relevant war, ist Ansicht. Wenn ich das mache, bekomme ich nur einen Link zum Bearbeitungsbildschirm der Ansicht.

Ich habe seitdem festgestellt, dass ich, wenn ich platzieren den Block im Abschnitt deaktiviert, darauf verweisen kann.

Gibt es also eine bessere Möglichkeit, auf einen Block zu verweisen, oder muss ich diese seltsame Sache von einen Block erstellen "Ort als" deaktiviert "" Referenz erstellen. Gibt es alternativ eine Erklärung dafür, warum die Notwendigkeit, Dinge auf diese wirklich verwirrende Weise zu tun, einen wichtigen Vorteil für die Erstellung von Websites mit sich bringt, den ich verstehen sollte?

Danke im Voraus.

5
artfulrobot

Blockfeld deckt tatsächlich dieselbe Funktionalität ab wie Drupal Blockreferenz. Es funktioniert wie "Blockfeld" in der Anzeige-Suite, verweist auf das Block-Plugin und erstellt damit verbundene Blockinstanzen Host-Entität, kein Thema.

4
Dominique Fabre

Die Dinge sind verwirrend, weil so die Entitätsreferenz funktioniert. All diese Dinge sind Entitäten, daher sind sie technisch referenzierbar. Wie Sie festgestellt haben, handelt es sich bei Blöcken um tatsächliche Blockplatzierungen , die nicht Ihren Wünschen entsprechen. In der Ansicht kann die Anzeige nicht ausgewählt werden. Für Ihren Fall ist dies auch nicht das, was Sie möchten. Drupal 8 Core kann das (noch) nicht ohne benutzerdefinierten Code oder ein Modul.

Sie benötigen entweder ein Contrib-Modul wie Viewfield , aber das hat noch keine offizielle 8.x-Version. Das blaue Feld zeigt auf das Contrib-Tracker-Problem, das wiederum auf https://www.drupal.org/node/2220929 verweist, das einen Link zu einem Github-Repository enthält, in dem jemand einen ersten Port erstellt hat . Ob und wie gut das schon funktioniert, kann ich nicht sagen.

Ein Ansatz, der ein bisschen benutzerdefinierten Code erfordern würde, wäre ein Listenfeld mit einigen Optionen (da Sie sowieso nicht alle Ansichten zulassen möchten ..), und basierend darauf muss ein bisschen Code vorhanden sein Das lädt und ruft die Ansicht auf und zeigt die Ergebnisse an.

4
Berdir

Bei meiner Arbeit testen wir Drupal 8 (derzeit 8.2.5) und hatten das gleiche Problem, aber wir verwenden das Absatzmodul für Seiteninhaltslayouts. Wir haben eine Lösung gefunden, die funktioniert hat bisher.

Zuerst müssten Sie das Modul Paragraphs installieren. Dann würden Sie das Modul Views Reference Field installieren. Sobald Sie einen "Absatz" erstellt haben, können Sie ein Feld für eine "Ansichtsreferenz" hinzufügen, und die Daten für diese Ansicht werden in den angegebenen Abschnitt des "Absatzes" geladen. Nachdem wir das Feld Absatz dem Inhaltstyp hinzugefügt haben, für den wir es verwenden möchten, können wir jetzt die Daten für jede unserer Ansichten in einen beliebigen Teil der Seitenfelder laden.

HINWEIS: Wir haben das Views Reference Field-Modul nicht alleine getestet, aber es kann einen Versuch wert sein!

Die Dokumentation für jedes dieser Module ist ziemlich gut und hat uns dahin gebracht, wo wir sein mussten, damit ich hier nicht alle Details durchgehen muss. Sie sollten sie entsprechend lesen und damit spielen.

3
Ron

Sie können dies tatsächlich mit dem Modul Block Visibility Groups tun. Wenn Sie das Modul installieren, wird in der Admin-Leiste das Element "Sichtbarkeitsgruppen blockieren" angezeigt. Wenn Sie sich auf der Seite befinden, auf der Sie den Block platzieren möchten, klicken Sie einfach darauf. Daraufhin erhalten Sie eine Reihe von Optionen, wie Sie die Sichtbarkeit des Blocks, den Sie auf der Seite platzieren möchten, einschränken können. Ich verwende es, um einen Ansichtsblock mit einem kontextbezogenen NID-Filter auf einem Knotentyp anzuzeigen, den ich Fotogalerien genannt habe, und es zieht die Bilder aus dem Bildfeld und formatiert sie in eine Ansichts-Diashow. Ich habe die Sichtbarkeit auf den Inhaltstyp der Fotogalerie beschränkt.

Wechseln Sie nach dem Erstellen der Sichtbarkeitsgruppe zur Blocklayout-Seite. Direkt über den Regionen wird ein Dropdown-Menü angezeigt, in dem Sie Ihre Sichtbarkeitsgruppe auswählen können. Wenn Sie Ihren Block mit dieser ausgewählten Sichtbarkeitsgruppe platzieren, wird die Anzeige des Blocks in der Region auf die von Ihnen festgelegte Sichtbarkeitsgruppe beschränkt.

Funktioniert sehr gut, erfordert nur eine etwas andere Denkweise als die Feldformatierer.

1
Robert Kopacz

Ich habe den Ansichtsblock mithilfe des Feldtyps "Entitätsreferenz" hinzugefügt (wählen Sie einen anderen aus).

Hier gibt es ein großartiges Tutorial: https://www.mediacurrent.com/blog/drupal-8-how-reference-views-block-display-field/

Dies funktioniert hervorragend auf Knoten, ist aber in Verbindung mit Absätzen sehr leistungsfähig.

1
Robb Davis

Dies ist eine meiner Lieblingsfragen. Obwohl dies auf der Display Suite beruht und ich die Lösung noch nicht ausprobiert habe, möchte ich sie freigeben:

  1. Installieren Sie die Display Suite
  2. Verwenden Sie DS für eines Ihrer Inhaltselemente (/ admin/struct/ds)).
  3. "Blockfeld hinzufügen" (/ admin/struct/ds/fields/manage_block)
  4. Wählen Sie den Ansichtsblock aus der Dropdown-Liste

(Display Suite "Add block field"

Die ausführlichere Erklärung von Ivan Zugec finden Sie hier: https://www.webwash.net/using-display-suite-drupal-8-how-to-use-display-suite-fields/

0
andir