EVA, Entity References, Grundlagen...
![](https://www.drupalcenter.de/files/imagecache/upic_mini/pictures/picture-18455.gif)
am 30.01.2018 - 10:44 Uhr in
Ich versuche seit Tagen eine 1:n Beziehung in Drupal umzusetzen und stehe irgendwie total auf dem Schlauch.
Eine Schule hat mehrere Aufgänge mit Klassenräumen, worin sich die einzelnen Klassen befinden. Dafür habe ich eine nicht normalisierte Tabelle (Inhaltstyp) Häuser_Räume mit
Aufgang (Liste mit 4 Textwerten)
Raum (Liste mit 1..6)
Klassenname
Soweit so gut. Jetzt erstellen die Redakteure Artikel, die einzelnen Klassen betreffend. Dafür habe ich einen eigenen Inhaltstyp Schulartikel mit
Bild (er)
Datei (en)
Taxonomiebegriffs für Views auf Startseite, besonderen Blogs etc.
Klassenname (Entitätsreferenzierung auf Häuser_Räume)
Body usw.
Ich kann jetzt Schulartikel anlegen und die Klassennamen aus der Liste Häuser_Räume auslesen. Das funktioniert gut. Jetzt würde ich aber gerne eine einzige Ansicht erzeugen, die mir für jeden Klassennamen alle Schulartikel auswirft (okay, hätte ich mit Taxonomie-Vokabular lösen können), eine weitere Ansicht, die als Quelle das Textfeld aus dem Aufgang alle über Klassenname verbundene Schulartikel auswirft (okay, schon schwieriger, aber notfalls mit zwei Taxonomiefeldern lösbar) und eine Ansicht, die aus dem Koordinatensatz Aufgang / Raum die passende Klasse sucht und alle Artikel darüber ausgibt.
Hätte ich Zugriff per SQL auf die Tabellen, hätten da ein paar Innerjoins schon gereicht, aber so stehe ich auf dem Schlauch.
Da ich das nicht mit Taxonomiebegriffen machen wollte, sondern prinzipiell mit Drupal 8 und der Datenbank dahinter auf der Oberfläche, also möglichst ohne API arbeiten wollte, habe ich jetzt alles mögliche versucht, mit EVA, Entity References und ewigen Googelns jede Menge Zeit verbraten, ohne weitergekommen zu sein.
Ich muss jetzt einfach mal die Fachleute fragen.
Danke vorab.
LG
highman72
- Anmelden oder Registrieren um Kommentare zu schreiben
Das kannst du alles mit views
am 31.01.2018 - 21:30 Uhr
Das kannst du alles mit views (Ansichten) lösen. EVA ist eine Views-Erweiterung, womit du eine Ansicht im Kontext eines nodes (Inhalt) wie ein Feld in dessen Anzeige-Einstellungen an einer gewünschten Stelle platzieren kannst. An sich ist es das was du brauchst bzw. eine von mehreren Möglichkeiten, das umzusetzen.
In Views kannst du kontextbezogene Filter (Argumente) angeben, um eine Auswahl je nach Kontext zu setzen, wie in deinen genannten Herausforderungen. Wenn ein anderer Inhaltstyp auf den anzuzeigenden Inhaltstyp (Basistabelle) referenziert, kannst du dessen Felder über Relations (Beziehungen) in die View holen und diese dann auch über die Kontextfilter dynamisch abfragen (brauchst du bei der Ansicht, die für jeden Klassennamen alle Schulartikel zeigt).
An sich ist Views eine GUI für SQL-Abfragen innerhalb Drupal. Bei Drupal 8 ist es im Core dabei. Auf Youtube findest du einige Videos zum lernen (Drupal Views Kontextfilter, Relations, …), es funktioniert in Drupal 7 kaum anders.
Das lohnt sich, wenn du dir das generell erschließt. Wenn das noch nicht hilft, schreib noch mal rein …
Views an sich sind ja super...
am 01.02.2018 - 00:30 Uhr
mein Problem ist eher, dass ich selbst nach hunderten von meist englischen Beschreibungen und Videos immer noch nicht wirklich weiter bin. Das Problem ist, dass die Beschreibungen sich meist auf den Standard-Fall beziehen: Autor zu Artikel. Das sind Felder und Tabellen, die vordefiniert sind und sich selbst referenzieren: Wenn ich einen Artikel anlege, bin ich der Autor. Wie Drupal genau das macht wird nicht erklärt. Wenn ich den Beispielen dann folge, kann ich genau das am Ende machen: Eine EVA-Auflistung im View von Autoren zu Artikeln oder Filterung davon mit URL-Filtern.
Ich habe aber per Auswahlfeld aus einer Liste einen Wert (probiert) oder auf die andere Tabelle aus dem Auswahlfeld referenziert (ebenfalls probiert) und anschließend versucht genau das gleiche zu machen und scheitere, weil ich nicht genau weiß, wo und warum welcher Abfragewert an welcher Stelle eingesetzt wird und was es auslöst. Ich weiß z. B. nicht, ob er die ID des Nodes braucht oder den Titel zum filtern, wenn ersteres woher kriegen, beim zweiten wie einstellen usw.
Und deutsche Tutorials sind echt rar. Dann heißt das im deutschen Drupal auch noch anders.
Um weiterzukommen habe ich jetzt mal ein mehrdimensionales Taxonomie-Vokabular angelegt und dabei festgestellt, dass die Taxonomie, die ich sonst immer ausblende, ein super mächtiges Werkzeug ist und man damit alleine schon fast die ganze Seite aufbauen kann. Nun dann schlägt aber wieder die Views-Falle zu, denn wenn ich über die Nodes auf Taxonomie-Begriffe referenziere, bekomme ich Dopplungen. Ein Artikel wurde z.B. für ein ganzes Haus mit vier Klassen geschrieben, somit sind alle vier Klassen und das Haus in der Taxonomie und Views findet ohne Referenzierung nur den einen Artikel, mit Referenz dann logischerweise gleich fünf Einträge...
Lösung bisher: Ich lasse die Views einfach weg und stelle alles ganz billig mit Display Suite dar. Anstelle verschieden aussehender Views, wo es nötig ist, arbeite ich mit verschiedenen Ansichtsmodi und programmiere dann ganz viel mit CSS drumherum. Interessanter Nebeneffekt: Alles ist viel schneller aufgebaut, weil ich nicht wie wild mit Kontextfiltern rumlaborieren muss. Ich befürchte nur, dass ich wenn ich irgendwann mal anders sortieren möchte, ich so nicht mehr weiterkomme. Mal sehen.
Trotzdem würde ich das wirklich irgendwann gerne mal verstehen. Vielleicht hast Du ja einen Tipp, welches Buch man kaufen, welche Schulung man belegen oder welchen Webdienst man abonieren muss, um Drupal endlich näher kennenlernen zu können.
Danke und Grüße aus Hessen
highman72
Hallo Jens. deine Idee ist
am 01.02.2018 - 14:38 Uhr
Hallo Jens.
deine Idee ist angekommen und wenn ich mir das hier so durchlese, dann weiß ich, wieder, warum ich mit Drupal-tv.de angefangen habe .-) Man spürt beim lesen deines Beitrags regelrecht, dass es dich einfah ärgert, dass Drupal einfach keiner erklärt und wenn, dann nur auf englisch, was tierisch Zeit kostet.
Taxonomie und Views sind aber definitiv der richtige Weg um deine Ergebnisse aus der Datenbank auszufiltern.
Dabei erstellst du einfach pro klasse eine View oder eben auch eine Ansicht für das gesamte Haus und filterst dann nach Tag (Schlagwort)
Also beispielsweise nach
Klasse 2
Klasse2
Gesamte Schule
usw.
im Grunde nach „Taxonomiebegriff“ ist einer von.
Dann gibst du jeder dieser Ansichten noch einen Pfad, vorzugsweise den Klassennamen und fertig ist die Laube. Ich hab nur noch nicht ganz verstanden, wie Views Entity Reference da jetzt reinpasst.
Das brauchst du nämlich tatsächlich für deinen Anwendungsfall nicht wirklich.
Würde ich ein Video zu Entity Reference machen, müsste ich mir erst mal ansehen, ob sich dein Szenario auch mit Hilfe von Entity-Reference lösen ließe. Das wäre aber vermutlich anstrengender als diene Inhaltstypen schlicht mit einer Liste von Taxonomiebegriffen auszustatten, die der Autor dann einfach anklickt und diese eben wie beschreiben wieder über die einzelnen Ansichten zu filtern.
Auch Display-Suite braucht man dafür eigentlich eher weiniger, wenn man weiß, was man wie filtern muss, und wie die einzelnen Module zusammenarbeiten. Mit dem Filter Taxonomiebegriff ist eines von, würdest du quasi nur die Artikel der entsprechenden Klasse auf der entsprechenden Ansicht anzeigen. Das geht entweder mit einer Ansicht pro klasse oder sogar mit einer Ansicht und einer Seite pro klasse. Dann musst du nur den entsprechenden Filterwert (Taxonomiebegriff) pro Seite übersteuern und gilt. Ändert sich dann was für alle Klassen, änderst du einfach den Master ab. Im Prinzip ist das Powerpoint für MySQL
Taxonomie-Views mit Archiv?
am 02.04.2018 - 16:30 Uhr
Hallo dinmikkith,
ich habe die Seite jetzt nach einem erneuten Neustart komplett neu aufgesetzt. Der Hackerangriff hat übrigens einen kompletten Park mit 23 Webseiten inklusive aller Backups platt gemacht... Der Neustart hat der Seite aber gut getan.
Die Idee, das über Taxonomie-Begriffe aufzulösen ist schon mal ziemlich gut und klappt soweit. Entity References benutze ich derzeit nicht.
Folgender Aufbau:
Jeder Artikel bekommt mehrere Vokabulare
a) Erscheinungsort (klassisch Tags), also alles, was nicht in die Klassen einsortiert wird
b) Klassenname (mit Datum_bis-Feld, falls es die Klasse mal nicht mehr geben sollte)
c) Raumnummer (hierarchisch in zwei Ebenen mit Aufgang in Ebene 1 und Raumnummern Ebene 2)
und ein Gültigkeistfeld
Dann habe ich den View für Taxonomie-Begriffe überschrieben. Der besitzt wie gehabt eine Page auf /taxonomy/term/%, die Taxonomie-Begriffe haben aber Aliase bekommen z.B. /schule/informationen/klassen_aufgaenge/blau/c13 für den Raum C13 im Aufgang blau. Der Standard-View für Taxonomiebegriffe macht jetzt das, was er soll, nämlich:
die hierarchischen Aufgang-Raum-Kombinationen via Erweitert - Hat eine Taxonomie-Begriff-ID (mit Hierarchie) anzuzeigen, wenn das Datum im Feld gültig_bis noch nicht erreicht oder das Feld leer ist, dann zeigt er ihn an, sonst nicht. Und zwar alle Klassen, die im Aufgang blau sind, oder nur die Klassen.
Allerdings habe ich das nicht verstanden, warum das so ist, aber egal. Es tut.
Jetzt bin ich auf die Idee gekommen, dass alte Einträge automatisch in ein Archiv sortiert werden. D.h. ich habe den Taxonomie-View dupliziert und als Filter nur gesetzt, dass das Datum im Feld gültig_bis kleiner sein soll als das aktuelle Datum. Soweit so gut. Nur wie kriege ich jetzt den View dazu, dass er angzeiget wird? Ich hatte mir vorgestellt, dass ich einfach hinter den Begriff ein /archiv anhänge, sowie es bei den Feeds auch ist, aber ich weiß leider nicht wie.
Und hier rächt sich, dass ich nicht weiß, wie der Taxonomie-View eigentlich funktioniert, auch wenn ich ihn wie ein Wissender abgeändert habe...
Ist mein Ansatz so tauglich oder mache ich was Grundsätzliches falsch?
Wer kann mir hielfen?
Danke vorab und Grüße
highman72
PS: Da es eine Schulseite ist, die dringend benötigt wird, ist sie dooferweise auch schon online... siehe Signatur... Ich müsste also an meiner lokalen Kopie basteln. Das Beschriebene ist aber schon drin... Der Link auf einen funktionierenden Testeintrag wäre: http://www.wiedbachschule.de/schule/informationen/klassen_haeuser/blau/c13
Na ja Du legst in der Ansicht
am 02.04.2018 - 18:28 Uhr
Na ja Du legst in der Ansicht eine Seite an und referenzierst als Pfad den Pfad des entsprechenden Taxonomiebegriffs. Dabei ersetzt du die Nummer der einzelnen Begriffe mit % und hängst hinten Archiv an. Das steht doch sogar unter der Beschreibung unter der Pfadangabe! und einen Kontextfilter brauchst du auch, damit der Wert An stelle von % in den Pfad eingesetzt wird, wenn er sich nicht in der URL befindet. Kontextfilter findest du in der Spalte rechts außen auf dem Bearbeiten-Bildschirm der Ansicht,
Prinzipiell ja, aber...
am 02.04.2018 - 19:50 Uhr
ich verstehe die Views generell und das mit dem Kontextfilter insbesondere überhaupt nicht. Da glaubt man, wenn man mit Access relationale Datenbanken anlegen kann, kann ein CMS doch kein Problem sein. Allerdings irre ich da wohl...
Ich habe schon strukturell Schwierigeiten: Wann genau legt man lieber eine neue Seite zu einem View an und wann lieber gleich ein neues View? Man kann ja in einer neuen Seite alles so übersteuern, dass es gleich ein neues View ist...
Ich habe das jetzt mal probiert, aber irgendwas stimmt nicht... Ist denn mein Ansatz überhaupt richtig, die Pfad im View auf der Standard-Taxonomieseite zu lassen und die Aliase den Taxonomiebegriffen zuzuordnen? Oder hätte ich das anders machen sollen. Also keine Aliase und stattdessen den Taxonomieview über die Pfade aufrufen sollen?
Und genau das ist es, was ich meine, was an Grundsätzlichem fehlt. Da wurschtelt jeder vor sich hin, kommt ein bisschen weiter, googelt wieder stundenlang, kommt weiter, schmeißt wieder alles über den Haufen... Grmpf...
Ich hänge mal ein paar Bilder an.
01 zeigt die Hierarchie eines bestimmten Vokabulars.
02 + 03 zeigen, wie ich die Ansicht der Taxonomiebegriffe dieses Vokubulars automatisch (per Token und Pathauto) auf bestimmte Seiten umleite
04 + 05 zeigen den überschriebenen Taxonomie-View, dessen erste Page (Taxonomie) auch wunderbar funktioniert, die zweite aber nicht. Den Grund erfahre ich hoffentlich gleich von Euch... ;-)
Vielen Dank schon mal vorab.
Vielleicht hilft diese Diskussion ja auch dem einen oder anderen hier. Vielleicht auch nicht, weil ich der einzige Doofe hier bin...
Liebe Grüße
Highman72
Idee Tutorial zu Views
am 03.04.2018 - 08:49 Uhr
Idee Tutorial zu Views machen ist notiert. Bis dahin hpffe ich, du verstehst einigermaßen englisch dann hilft zum Einstieg vielleicht Er hier: https://www.youtube.com/watch?v=KO0fIi-OWT0 Dein Problem werde ich mir natürlich auch zu gemüte führen, dass muss ich jetzt aber erst mal lesen und verstehen.
Taming the beast - Views Video Tutorial
am 03.04.2018 - 11:14 Uhr
Die legendäre 'Taming the beast' Tutorial-Serie in englisch, die leider nicht mehr online ist, hat hier jemand archiviert und zur Verfügung gestellt, das hat mir als Einsteiger super geholfen und ich kann es nur wärmstens empfehlen:
https://mega.nz/#!oMRkQJAS!ahr42P8RNj_pj7DVgMjnDTYCV_ccdncw5-pHoXlg96s