Wie am Besten Wert aus refferenziertem Content darstellen
am 28.12.2008 - 14:38 Uhr in
Hi,
ich habe mal wieder eine Neuling-Frage an die Experten. Mich würde interessieren wie ihr das ganze angehen würdet, damit ich nicht gleich zu Anfang den falschen Weg einschlage.
Meine Herausforderung besteht darin, dass ich zwei Content-Typs mit CCK generiert habe. Bei dem zweiten Content-Typ referenziere ich auf Nodes des ersten Content-Typs. Bei der Darstellung des zweiten Types würde ich jetzt gerne auch Felder des refferenzierten Types darstellen. Wie würdet ihr Vorgehen?
Noch ein kleines Beispiel um es etwas besser verständlich darzustellen:
Content-Type 1 "Musiker" besteht aus Name, Geburtsdatum, etc.
Content-Type 2 "Lieder" besteht aus Text und einer Referenz zu Content-Type 1 "Musiker"
Bei der Darstellung eines konkreten Content-Types 2 "Lieder" sollte jetzt gleich auch der Name des Musikers ausgegeben werden. Wie macht man so etwas am Besten?
Vielen Dank für eure Unterstützung
Semper-Fi
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo semperfi, schau dir da
am 28.12.2008 - 15:04 Uhr
Hallo semperfi,
schau dir da mal das Views Modul an. Kann genau das, was du brauchst :)
mfg mofa
mfg Cyberschorsch
_________
Hi mofa, vielen Dank für
am 28.12.2008 - 22:54 Uhr
Hi mofa,
vielen Dank für deine Antwort. Views kennne und nutze ich. Die Erstellung eines entsprechenden Views ist kein Problem.
Dieser Lösungsweg führt für mich zu einer anderen Herausforderung, deswegen habe ich ihn aber noch nicht eingeschlagen. Ich habe eine View-Liste mit Einträgen des zweiten Content-Types (Lieder) und von dieser hatte ich auf die dazugehörigen Nodes verwiesen. Jetzt müsste ich ja auf den neuen View verweisen und gleichzeitig die entsprechende Node-ID als Argument übergeben.
Wie modifiziere ich die alte View-Liste so, dass sie auf den neuen View verlinkt?!?
Mit "Link this field to its node" funktioniert es ja leider nicht :(
Viele Grüße
semper-fi
Es gibt ne View die sich
am 28.12.2008 - 23:39 Uhr
Es gibt ne View die sich Backlinks nennt und ich kann mir gut vorstellen, dass das Nodereference-Modul auch Felder anbieten, welches die Backlinks anzeigt von dem jeweiligen Node.
----------------------------------------
Alle Angaben ohne Gewähr!!:D
http://www.tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Ich bin mir nicht sicher ob
am 29.12.2008 - 10:23 Uhr
Ich bin mir nicht sicher ob Backlinks das ist was ich suche. Ich versuche nochmal meine Situation zu beschreiben.
Szenario siehe oben (Ein Typ Musiker und ein anderer Lieder).
Musiker sind: Peter 1982, Hans 1641 und Sonja 1478
Lieder sind: Blabla ref zu Peter, Sumdidum ref zu Hans und Tralali ref zu Sonja
Mit dem View(neu) den ich jetzt erstelle kann ich ausgegeben:
- Blabla - Peter 1982
- Sumdidum - Hans 1641
- Tralali - Sonja 1478
Was mir schon mal weiterhilft bei der Ausgangssituation. Jetzt starte ich aber den Aufruf des Views aus einer anderen Seite heraus, die selbst schon eine View-Liste enthält und ursprünglich auf die Nodes des Lieder verwies.
View-Liste(alt):
- Blabla => Node 1 Blabla
- Sumdidum => Node 2 Sumdidum
- Tralali => Node 3 Tralali
Um jetzt den View(neu) richtig aufrufen zu können müsste die View-Liste(alt) auf den View(neu) verweisen und nicht auf den Node. Also ungefähr so:
Überarbeitet View-Liste(alt):
- Blabla => View(neu) 1 Blabla...
- Sumdidum => View(neu) 2 Sumdidum...
- Tralali => View(neu) 3 Tralali...
Ich sehe noch nicht wie mir Backlinks da weiterhelfen. Aber vielleicht gibt es ja einen Ansatz?
Ich versteh nicht, warum du
am 29.12.2008 - 10:44 Uhr
Ich versteh nicht, warum du mit einem View auf einen View verweisen willst. Also ich erkenn den praktischen Sinn nicht.
Ich hatte so ein ähnliches Problem, ich hatte Schauspieler, die von einer TV Serie referenziert wurden. Ich wollte, dass, wenn man das Node der Schauspieler aufruft, alle Serien aufgelistet werden, die auf diesen Schauspieler referenzieren, sprich, wo der Schauspieler mitspielt.
Gelöst habe ich das, in dem ich dem Backlinks View die NodeID des Schauspielers als Argument übergebe.
So ähnlich ist es doch auch bei dir oder? Du hast Lieder, die auf einen Musiker referenzieren. Jetzt rufst du das Lied irgendwo auf, und willst dann den Musiker dazu haben.
mfg Cyberschorsch
_________
Bei deinem ersten Post
am 29.12.2008 - 11:02 Uhr
Bei deinem ersten Post bildete ich mir ein, deinen Usecase gut verstanden zu haben. Das hat sich mit deinem letzten Post aber wieder erledigt.
Für mich klingts irgendwie, als würdest du 1:n Beziehungen herstellen, indem du jedem Lied seinen Interpreten zuordnest. Daraus ergibt sich, dass ein Lied nur genau einen Interpreten (1) hat und ein Interpret eine beliebige Anzahl (n) an Liedern haben kann.
Das Gewurschtel mit irgendwelchen Modulen ist mir persönlich da viel zu doof. Da code ich mir schneller eine SQL-Abfrage zusammen, oder passe einen View an, der mir die passenden Daten liefert, welche dann via Theming ausgeworfen werden.
Aber aus der Ferne kann ich schlecht sagen, wie du PHP- und Drupal-mäßig aufgestellt bist.
Grob skizziert:
- View erstellen
- in der tpl-Datei des Interpreten-Nodes den View ranholen: $der_view = views_get_view('dein_view');
- fleißig in den Filtern des View herumpfuschen: $der_view->filter[] = array( **pfriemel** );
- vorsichtshalber: $der_view->is_cacheable = 0;
- den View raushauen: print views_build_view('embed', $der_view, array(), false, false);
- den View kannste natürlich noch z.B. in deiner template.php themen
Das Einlesen wie das mit dem filtern im View via PHP so funktionuckelt, kann sich als pfriemelig erweisen. Dazu einfach mal mit print_r() den View raushauen und fleißig im Quellcode vom View-Modul lesen und viel Try&Error machen...
Suchmaschinenoptimierung (SEO) & Drupal
Ich habe es jetzt wie folgt
am 29.12.2008 - 12:05 Uhr
Ich habe es jetzt wie folgt gelöst:
In einem View nur die Felder aus dem referenzierter Musiker-Node geholt und nicht alle benötigten Felder. Diesen View dann in das Template für den Lieder-Node eingefügt. Falls ihr das gemeint habt, sorry ich Stand auf dem Schlauch. Der Hinweis von Alexander gab den Ausschlag ;)
Kurze Frage noch:
Ich arbeite immer mit
<?php
print views_embed_view($view_name, $display_id, $arguments[0]);
?>
Ist das eine schlechtere oder veraltete Methode?
Alexander Langer
am 29.12.2008 - 12:09 Uhr
Bei deinem ersten Post bildete ich mir ein, deinen Usecase gut verstanden zu haben. Das hat sich mit deinem letzten Post aber wieder erledigt.
Für mich klingts irgendwie, als würdest du 1:n Beziehungen herstellen, indem du jedem Lied seinen Interpreten zuordnest. Daraus ergibt sich, dass ein Lied nur genau einen Interpreten (1) hat und ein Interpret eine beliebige Anzahl (n) an Liedern haben kann.
Das Gewurschtel mit irgendwelchen Modulen ist mir persönlich da viel zu doof. Da code ich mir schneller eine SQL-Abfrage zusammen, oder passe einen View an, der mir die passenden Daten liefert, welche dann via Theming ausgeworfen werden.
Aber aus der Ferne kann ich schlecht sagen, wie du PHP- und Drupal-mäßig aufgestellt bist.
Grob skizziert:
- View erstellen
- in der tpl-Datei des Interpreten-Nodes den View ranholen: $der_view = views_get_view('dein_view');
- fleißig in den Filtern des View herumpfuschen: $der_view->filter[] = array( **pfriemel** );
- vorsichtshalber: $der_view->is_cacheable = 0;
- den View raushauen: print views_build_view('embed', $der_view, array(), false, false);
- den View kannste natürlich noch z.B. in deiner template.php themen
Das Einlesen wie das mit dem filtern im View via PHP so funktionuckelt, kann sich als pfriemelig erweisen. Dazu einfach mal mit print_r() den View raushauen und fleißig im Quellcode vom View-Modul lesen und viel Try&Error machen...
Ich glaub das ist viiiel zu kompliziert dein Gewurschtel da :D
Views ist ja dafür gedacht, den Leuten zu helfen, die kein SQL beherrschen. Logisch, im Prinzip wäre das eine einfache SQL Anfrage, aber wenn das Schema nicht bekannt ist, und man nicht weiß, wer wie in welcher Beziehung mit wem steht (z.b. wie du schon gesagt hast, eine 1:n Beziehung ist unpraktikabel, denn es können ja auch mehrere Künstler ein Lied haben, daher würde sich eine n:m Beziehung anbieten).
Also am besten du modellierst das Ganze mal auf nem Blatt Papier oder stellst uns hier die Geschichte als ERM hinein.
mfg Cyberschorsch
_________
Zu kompliziert? Ich? Ach, wo
am 29.12.2008 - 12:47 Uhr
Zu kompliziert? Ich? Ach, wo denkst du hin! :D
Klar, mit meiner Sichtweise komme ich eher von der Programmierung her, da lassen sich meine Wurzeln wohl nicht verleugnen. Ich versuche ohne Code auszukommen, wo ich kann. Aber wenn die erste Lösung, die mir in den Kopf kommt, Code ist und mir schneller von der Hand geht, dann halte ich mich streng an die Reihenfolge:
1. make it work
2. make it fancy
Zu 2. kommt es aber oft gar nicht, weil es noch genügend andere offene Punkte im Projekt gibt, die erstmal ein 1. gebrauchen können. :)
Suchmaschinenoptimierung (SEO) & Drupal
Jetzt habe ich doch noch mal
am 02.01.2009 - 10:40 Uhr
Jetzt habe ich doch noch mal eine Frage. Vielleicht lande ich jetzt nämlich doch beim Backlinks-View ;-)
Ich überlege gerade die Struktur etwas zu optimieren. Die neu Struktur wäre wie folgt:
Zwei Nodes (A und B) verweisen auf einen anderen Node (4711). Ich steige über den Node A ein und würde gerne jetzt auch Felder aus Node B darstellen.
Der View müsste jetzt eine Ausgabe nach dem Schema "stelle alle Nodes dar, die wie Node A eine Referenz auf 4711 haben". Ich bräuchte also einen Join von Referenz-Feld zu Referenz-Feld. Leider erhalte ich immer nur Joins von Referenz-Feld zu Node-ID.
Eine Lösung wäre das ganze mit zwei Views zu lösen:
1. Auf was zeigt der aktuelle Node (A) ==> 4711
2. Zeige mir die Nodes die auch auf 4711 verweisen ==> A,B
Gibt es eine Lösung mit der ich das ganze in einem View darstellen könnte?