Teil 2: Drupal 7 Views Tutorial für Views 3

So, im zweiten Teil lernen wir Relationships (Beziehungen) und Contextual Filters (Argumente) kennen.

Als Beispiel nehme ich einen View aus unserem Projekt: http://www.knoepfbar.de. Wir wollen einen View erstellen, der uns alle Produkte einer bestimmten Kategorie, abhängig vom gerade angezeigten Produkt ausgibt!

Folgender Ausgangspunkt:

Wir haben einen Inhaltstypen oder eine Enity, in unserem Fall nutzen wir den Inhaltstypen "Product Display" der Commerce Produkte ausgibt. Des weiteren haben wir ein Taxonomy Vokabular für die Kategorisierung angelegt, bei knöpfbar gibt es die Kategorien "Klassisch", "Spezial", "Exquisit",... etc

Jedem Inhalt ist ein Produkt referenziert und eine Kategorie zugewiesen.

views-tutorial-teil2-bild1.png

Daraus ergibt sich logischerweise das es jedes Produkt einmal gibt aber jeder Kategorie mehrere Produkte zugeordnet sein können. Wenn wir jetzt auf ein Produkt klicken möchten wir unter dem Produkt einen View ausgeben, der alle anderen Produkte dieser Kategorie angezeigt haben:

views-tutorial-teil2-bild2-1.png

Wir erstellen also einen View aus Feldern des Inhaltstyps "Product Display" und brauchen dazu Informationen aus dem aktuell angezeigtem "Inhalt" (die Kategorie als Argument) und aus dem refenzierten Produkt (Preis etc. als Relationship). Wie man einen View erstellt habe ich bereits im ersten Teil gezeigt.

views-tutorial-teil2-bild5.png

views-tutorial-teil2-bild3-2.png

Arguments und Relationships

1. Das Argument
Als nächstes fügen wir unserem View ein Argument hinzu. "Contextual Filters" > "hinzufügen".
Wir wollen NUR Inhalte die der gleichen Kategorie angehören wie der aktuelle Inhalt. Ich suche mit also unter Inhalt das Feld Kategorie und füge es hinzu.

views-tutorial-teil2-bild4.png

2. Die Beziehung
Nun ist unser View fast fertig, was wir jetzt noch benötigen sind Informationen aus dem referenziertem Produkt, den Preis zum Beispiel. Wenn wir das Feld "Product" anzeigen lassen wird nur ein "Add to Cart" Form angezeigt, aber der Preis ist im Produkt definiert. Wir brauchen also eine Beziehung zwischen dem vom View selektiertem Inhalt und dem darin referenziertem Produkt. Das Product wird also unsere Relationship:

views-tutorial-teil2-bild6.png

Nachdem wir die Beziehung angelegt haben können wir weitere Felder der Anzeige hunzufügen, den Preis beispielsweise:

views-tutorial-teil2-bild7.png

Es wird also für jeden Datensatz den unsere View aus der Datenbank holt ein Join zur Produkttabelle gemacht und das Preisfeld, abhängig vom referenziertem Produkt angezeigt. Ralationships sind also MySQL Joins.

Jetzt ist unsere View fertig und zeigt alle relevanten Informationen unserer Produkte an. Den Titel, den Bodytext, das referenzierte Produkt als "In den Warenkorb" Button und der Preis des Produktes.

Falls Ihr noch Fragen haben, einfach kommentieren!

Viel Erfolg!

Kommentare

Der view müsste doch dann als

Der view müsste doch dann als Block auf dem Product Display platzier sein, oder? Ansonsten könnte ja keine Beziehung hergestellt werden. D.h. der Contextual Filter filtert die Anzeige im Views Block je nach dem, welcher Taxonomie-Tag auf dem Product Display (=Kategorie) ausgegeben wird. Habe ich das richtig verstanden?

Genau!

Genau!

Hallo, ich habe eine Frage,

Hallo,

ich habe eine Frage, ich schreibe gerade meine Abschlussarbeit, in der ich als Projekt einen Webshop (für Feuerwerk) ausgewählt habe.
Ich möchte meine Produkte über Views gruppieren und wenn ich auf die einzelnen Kategorien klicke, die Unterprodukte erhalten.
Also quasi: also großes Bild Raketen, dann darauf klicken und dann die einzelnen Raketen mit Bild angezeigt bekommen.
Wie stellt man das an?
Danke schon einmal :)

Hallo, ich würde auch gern

Hallo, ich würde auch gern mit dem Contextual Filter arbeiten.. allerdings kann ich darin nicht nach "Felder" Filtern.. benötige ich dazu noch ein Extra Modul?

Kommentar verfassen

Der Inhalt dieses Feldes wird nicht öffentlich gezeigt.