[z. Teil gelöst] Wie kann man Feld Werte in einem neuen Node aus einem referenziertem Node erhalten?
Eingetragen von Thoor (3678)
am 17.01.2011 - 11:56 Uhr in
am 17.01.2011 - 11:56 Uhr in
Ich habe zwei Inhaltstypen.
Node Typ PARENT mit einem Textfeld "Farbe"
Node Typ CHILD mit einem Referenced Field zum Node Typ PARENT.
Wenn ich einen Node des Typs PARENT erstellt habe und diesem eine Farbe Blau zugefügt habe habe, welche Möglichkeiten gibt es dann in Inhalten des Typs CHILD die Farbe des referenzierten Typs PARENT automatisch anzuzeigen?
- Anmelden oder Registrieren um Kommentare zu schreiben
Das sollte mit dem Bordmittel
am 17.01.2011 - 12:19 Uhr
Das sollte mit dem Bordmittel "Relationship" aus dem Bordmittel-Fundus von Views möglich sein..
Suchmaschinenoptimierung (SEO) & Drupal
Du kannst das auch einfach im
am 19.01.2011 - 21:49 Uhr
Du kannst das auch einfach im Child ein CKK Feld anlegen und dieses über backreference mit dem Parent verbinden. So wird das CCK Feld vom Child mit dem des Parent sychnonisiert.
Alexander Langer schrieb Das
am 01.02.2011 - 14:51 Uhr
Das sollte mit dem Bordmittel "Relationship" aus dem Bordmittel-Fundus von Views möglich sein..
So ist ne Zeit her, aber ich bin wieder vor dem Problem gelandet. Mit VIEWS und Relationship haut das schon mal hin. Nur wenn ich mehrere Nodes der beiden Inhaltstypen habe, dann erhalte ich mit meiner Ansicht leider alle Werte. Ich möchte natürlich ausschliesslich die entsprechenden Feldwerte des refernezierten Nodes integrieren. Hat jemand ne Idee, mit welchem Argument ich das hinbekommen kann?
Drupal 7 Screencasts in deutsch!
docmiller schrieb Du kannst
am 01.02.2011 - 14:53 Uhr
Du kannst das auch einfach im Child ein CKK Feld anlegen und dieses über backreference mit dem Parent verbinden. So wird das CCK Feld vom Child mit dem des Parent sychnonisiert.
Also das Modul habe ich mir eben mal angesehen ... aber ich blicke es irgendwie nicht! Das greift doch nur bei Feldtypen "Beitragsreferenz" - oder? Wie kann ich denn damit beispielsweise ein Logo eines PARENT Inhalstypen im CHILD Inhaltstypen anzeigen? Hast Du vielleicht mal kurz ne Erklärung zu dem Modul für mich? Die readme.txt gibt auch nix her ...
Drupal 7 Screencasts in deutsch!
Ich habe das Problem dann mit
am 01.02.2011 - 18:26 Uhr
Ich habe das Problem dann mit dem Modul http://drupal.org/project/nodereference_views lösen können. Bin damit dann aber zu unflexibel, was die einzelnen Felder anbelangt.
Deshalb interessiert mich noch die PHP Variante in der node.tpl.php. Da müsste ich doch auch auf ein PARENT Feld zugreifen können ... oder?
Wenn ich im PARENT ein Feld field_logo habe und dieses mit
<?php print $node->field_logo[0]['view']; ?>
ausgeben kann, dann gibts doch sicherlich ein PHP Konstrukt, wie ich im CHILD Node mit "nid" darauf zugreifen kann - oder? Kann mir da jemand beim PHP Befehl behilflich sein?Drupal 7 Screencasts in deutsch!
Jetzt mal langsam: Was soll
am 01.02.2011 - 19:06 Uhr
Jetzt mal langsam: Was soll denn das Logo sein? Eine Node, ein CCK Feld, ein Bild, ein User?!?!?!?
Backreference funktioniert so, dass Du zwei CCK Felder in beide Richtungen auf einander zeigen lassen kannst.
Ohne Backreference ist das so:
Parent Node:
CCK Feld XY (Typ "node reference") kann auf ein Child PQ zeigen.
Child Node:
hat kein CCK Feld, das auf sein Elternteil verweißt. Der Child weiß nicht, wer sein Elternteil ist.
Jetzt kommt backreference ins Spiel: dem Child-Node wird eine CCK Feld "Wer ist mein Elternteil" gegeben, das über ein "node reference" CCK-Typ auf sein Elternteil verweist. Du kannst damit 1:1 Verbindungen zwischen Nodes herstellen.
docmiller schrieb Jetzt mal
am 02.02.2011 - 00:17 Uhr
Jetzt mal langsam: Was soll denn das Logo sein? Eine Node, ein CCK Feld, ein Bild, ein User?!?!?!?
Wie oben im eigentlichen Thread geschrieben geht es um CCK Felder. Das können alle möglichen Feldtypen sein, auf die ich referenzieren möchte. Image, Number, Text ...
Jetzt kommt backreference ins Spiel: dem Child-Node wird eine CCK Feld "Wer ist mein Elternteil" gegeben, das über ein "node reference" CCK-Typ auf sein Elternteil verweist. Du kannst damit 1:1 Verbindungen zwischen Nodes herstellen.
Ja dass das theorethisch so sein soll, das ist mir schon aufgefallen :-) Nur das WIE ist für mich nicht klar ... Es gibt weder ne Dokumentation, noch ne readme.txt bei dem Modul!?!? Vielleicht kannst Du mir bitte kurz für DUMMIES erklären, wie ich in meinen CHILD-Node ein CCK-Image-Feld aus dem PARENT Node bekomme? Ich habs beim rumprobieren leider nicht herausfinden können ...
Drupal 7 Screencasts in deutsch!
Die Sache ist die. Ich glaube
am 02.02.2011 - 00:38 Uhr
Die Sache ist die. Ich glaube nicht, dass Du mit dem erwähnten Modul eine Verbindung auf ein CCK Feld herstellen kannst. Du kannst eine Verbindun zwischen zwei Nodes per CCK herstellen.
Du willst bei allen Child der "Farbe Blau" den Parent angezeigt haben, oder?
Wenn dem so ist, warum machst Du das dann nicht mit Taxonomie?? back reference eigenet sich nämlich nur für 1:1, und nicht für n:m Beziehungen.
Du willst per php aufgrund
am 02.02.2011 - 09:45 Uhr
Du willst per php aufgrund des Child-Nodes den Parent-Node finden.
Mein Beispiel sind Personen, die in einer Liegenschaft leben. Ich habe also eine Person in $node_pers, mit
dem CCK-Feld field_ref_lie, welches auf die Liegenschaft verweist. Dann hole ich also den Node für die
Liegenschaft $node_lie wie folgt:
...
$node_lie = node_load($node_pers->field_ref_lie[0]['nid']);
...
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
docmiller schrieb Die Sache
am 02.02.2011 - 11:22 Uhr
Die Sache ist die. Ich glaube nicht, dass Du mit dem erwähnten Modul eine Verbindung auf ein CCK Feld herstellen kannst. Du kannst eine Verbindun zwischen zwei Nodes per CCK herstellen.
Mit welchem Modul meinst Du jetzt? Mit Deinem BACKREFERENCE Modul?
Du willst bei allen Child der "Farbe Blau" den Parent angezeigt haben, oder?
Wenn dem so ist, warum machst Du das dann nicht mit Taxonomie?? back reference eigenet sich nämlich nur für 1:1, und nicht für n:m Beziehungen.
Ich verstehe nicht, weshalbman mich nicht versteht :-)
Also nochmal im Detail.
1.) Ich habe einen Inhaltstypen BASIS, der z.B. ein Logo enthält
2.) Außerdem einen Inhaltstypen SUB, der kein Logo enthält deshalb wird der Node vom Typ SUB mit einem Nodereference Field auf einen vorhandenen Node vom Typ BASIS referenziert.
3.) Da es viele Nodes des Typ SUB gibt, möchte ich bestimmte Felder, wie z.B. das Logo, das sich ja im Node von Typ BASIS in die Nodes des Typ SUB abbilden.
Geht das jetzt mit dem von Dir vorgeschlagenen Modul? Und wenn ja - wie setzt man das dann um?
Drupal 7 Screencasts in deutsch!
leda@drupal.org schrieb Du
am 02.02.2011 - 11:28 Uhr
Du willst per php aufgrund des Child-Nodes den Parent-Node finden.
Mein Beispiel sind Personen, die in einer Liegenschaft leben. Ich habe also eine Person in $node_pers, mit
dem CCK-Feld field_ref_lie, welches auf die Liegenschaft verweist. Dann hole ich also den Node für die
Liegenschaft $node_lie wie folgt:
...
$node_lie = node_load($node_pers->field_ref_lie[0]['nid']);
...
Ich weiss jetzt nicht, ob ich Dich verstanden habe ... Also ich will keinen Node finden. das geht ja mit NODE REFERENCE schon mal ganz gut ... Ich will an einen Feldwert aus einem Node kommen, auf den ich referenziere.
Drupal 7 Screencasts in deutsch!
View
am 02.02.2011 - 12:42 Uhr
Hi.
Mift, jetzt hatte ich so einen schönen langen Kommentar geschrieben und dann geht das Fenster einfach zu :/
Naja, dann als Kurzfassung: Du benötigst einen View, der als Relation das Nodereference-Feld bekommt und als Argument die nid von SUB. Dann noch als Feld das Bild von Basis und fertig ist das Ganze (siehe Anhang).
Diesen View kannst Du dann per [do:views_attach Views attach] oder als Block bei den entsprechenden Nodes einbinden.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
stBorchert schrieb Hi. Naja,
am 02.02.2011 - 13:56 Uhr
Hi.
Naja, dann als Kurzfassung: Du benötigst einen View, der als Relation das Nodereference-Feld bekommt und als Argument die nid von SUB. Dann noch als Feld das Bild von Basis und fertig ist das Ganze (siehe Anhang).
DANKE DANKE DANKE!
Du warst mal wieder mein Held und Retter :-) Ich habe ja unzählige Argumentvariationen ausprobiert gehabt und wollte das Ganze per Block einbinden. Hat allerdings nie geklappt :-( Dachte, dass es am falschen Argument lag, war aber wohl die Block Anzeige.
Deinen VIEWS Vorschlag konnte ich übrigens auch nicht per Block einbinden. Aber mit dem vorgeschlagenen Modul VIEWS ATTACH wird endlich auch das vemaledeite Image Feld angezeigt.
Das war mal wieder eine äußerst schwierige Geburt :-)
PS: Vielen Dank auch an alle anderen, die sich den Kopf mit zerbrochen haben!
Drupal 7 Screencasts in deutsch!
Block
am 02.02.2011 - 14:09 Uhr
Beim Block muss man darauf achten, dass dort die Argument nicht über die URL geholt werden können, sondern mittels PHP-Code bestimmt werden müssen.
In dem Fall also
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
return arg(1);
}
?>
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
stBorchert schrieb Beim Block
am 04.02.2011 - 21:37 Uhr
Beim Block muss man darauf achten, dass dort die Argument nicht über die URL geholt werden können, sondern mittels PHP-Code bestimmt werden müssen.
In dem Fall also
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
return arg(1);
}
?>
Stefan
Jetzt wollte ich mir die Blocklösung noch mal genauer ansehen, aber es will nicht klappen, mit der Anzeige des Blocks.
Ich habe also als Argument Node:Beitrag ID gewählt.
Beziehung - keine Beziehung
Die auszuführende Aktion, wenn das Argument nicht vorhanden ist: Leerer Text ( zum prüfen - wird dann auch angezeigt )
Validator: PHP Code mit
if (arg(0) == 'node' && is_numeric(arg(1))) {
return arg(1);
Die auszuführende Aktion, wenn das Argument nicht valide ist: alle Werte
Sind die gewählten Einstellungen korrekt?
Jedenfalls wird mir in der Blockvorschau mit der entsprechenden Node-ID das richtige angezeigt? Beim "Live-Aufruf" erscheint allerdings der "Leere Text" ...
Jemand ne Idee, wo der Fehler liegt?
Drupal 7 Screencasts in deutsch!
Debug
am 04.02.2011 - 22:35 Uhr
Mach doch einfach mal eine Debug-Ausgabe im Block (also im Argument-Handling-Code):
<?php
drupal_set_message('<pre>' . var_export(arg(0), 1) . '</pre>');
drupal_set_message('<pre>' . var_export(arg(1), 1) . '</pre>');
if (arg(0) == 'node' && is_numeric(arg(1))) {
return arg(1);
}
?>
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Ich pack mal nen Screenshot
am 04.02.2011 - 23:13 Uhr
Ich pack mal nen Screenshot meiner aktuellen Argumente Einstellung anbei ... wahrscheinlich habe ich da eh schon nen Fehler drin, sowie ich mich kenne? Den Code habe ich mal mit eingefügt, aber da erhalte ich nur zwei grün gehaltene "admin" und "build" über der Vorschau?
Drupal 7 Screencasts in deutsch!
Der Fehler liegt
am 04.02.2011 - 23:55 Uhr
Der Fehler liegt hier
Die auszuführende Aktion, wenn das Argument nicht vorhanden ist: Leerer Text ( zum prüfen - wird dann auch angezeigt )
Auszuführende Aktion muß sein: Standard Argument zur Verfügung stellen via PHP-Code. Da kommt dann Dein Code rein und den Validator läßt Du auf Standard.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
wla schrieb Der Fehler liegt
am 05.02.2011 - 00:33 Uhr
Der Fehler liegt hier
Auszuführende Aktion muß sein: Standard Argument zur Verfügung stellen via PHP-Code. Da kommt dann Dein Code rein und den Validator läßt Du auf Standard.
Beste Grüße
Werner
Danke - das hat dann doch noch geklappt. Nur jetzt gibt es das nächste Problem. Den Block mit dem referenzierten Logo rufe ich in der node.tpl.php mittels PHP Code auf. Klappt dann alles, wenn ich den Node aufrufe.
Nur, wenn ich jetzt eine Taxonomieseite aufrufe, dann klappt die Argumentzuweisung nicht und es werden anscheinend die falschen Argumente taxonomy und term genutzt? Es erscheinen bei den einzelnen Nodes alle verfügbaren Logos ...
Drupal 7 Screencasts in deutsch!