[gelöst] Node-id (nid) nid einem Computet Field anzeigen
am 07.07.2010 - 16:28 Uhr in
hallo,
ich erstelle ein Template-Formular und benutze dabei Computed Fields. Es funktioniert prima, solang ich nicht Werte eines aktuellen Nodes aufrufen muss...
Man hat die Möglichkeit im Feld "Berechneter Code" eigenen PHP-Code einzugeben, der z.B mehrere Felder zusammen addiert, oder z.B einige Werte aus der Datenbank zurückholt. Zusammerechnen funktioniert prima, das Holen der Daten aus der Datenbank ebenso, bis ich als Argument Node Felder verwenden will, wie z.B $node->nid
Meine Anfrage:
global $node
$nid =$node->nid;
$result = db_result(db_query("SELECT MAX(field_abc) FROM content_type_abc
WHERE field_node_ref_nid=$nid" ));
$node_field[0]['value'] = $result;
liefert kein Ergebnis zurück, da nid nicht übertragen wird, bzw LEER ist!
wie komme ich auf NID in dieser Situation?
ich habe schon direkt mit $nid, $node->nid, $node->node_load(arg(1))...... probiert und es will einfach nicht gehen!!!!
hilfe
- Anmelden oder Registrieren um Kommentare zu schreiben
Die Doku zu Computed Field
am 07.07.2010 - 17:04 Uhr
Die Doku zu Computed Field sagt das hier:
If your stored field needs to access the node id, then add if (!$node->nid) node_save($node); at the start of your computed code. Otherwise the node might not yet have an nid.
danke !!!
am 08.07.2010 - 13:18 Uhr
danke !!!
Bei mir führt das zu einem
am 14.12.2010 - 16:06 Uhr
Bei mir führt das zu einem Internal Server Error, wenn ich eine neue Node anlege. Beim aktualisieren vorhandener Nodes geht es (mit oder ohne der Zeile).
Die Codezeile scheint in Ordnung zu sein, hab ich auch woanders schon verwendet gesehen. Aber hat vllt. jemand eine Idee, wieso es bei mir nicht geht?
Die Codezeile oben ist auch
am 14.12.2010 - 19:27 Uhr
Die Codezeile oben ist auch nicht korrekt! Es muß lauten:
if (!$node->nid) node_save(&$node);
Man beachte das
&
vor dem $node bei node_save. Ohne kann es einen Speicherfehler geben, auf jeden Fall wird der Node nicht gespeichert.Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Danke. Leider hat das nichts
am 14.12.2010 - 19:30 Uhr
Danke. Leider hat das nichts geändert.
An was für einem Template
am 14.12.2010 - 19:58 Uhr
An was für einem Template arbeitest Du denn? Hast Du vielleicht in dem Umfeld gar keine Node-Variable zur Verfügung. Du müßtest Dir evtl über eine preprocess-Funktion in der Datei template.php in Deinem Theme die erst beschaffen.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Vorweg: Ich hab es jetzt
am 14.12.2010 - 20:12 Uhr
Vorweg: Ich hab es jetzt etwas anders gelöst als ich es wollte, bin aber zufrieden damit. Im Computed Field lasse ich die NID einfach weg und hänge sie stattdessen überall da an, wo ich eigentlich nur den Wert des Feldes benutzen wollte.
Falls wir trotzdem dem Fehler weiter auf den Grund gehen wollen:
Was meinst du mit Template? Ich versuche das in einem Computed Field. Das Theme heißt nitobe, falls du das meinstest. In node.tpl.php hab ich die Variable zur Verfügung. Im Computed Field ja im Prinzip auch, nur nicht bevor die Node erstellt wurde. Die NID wird im Computed Field also nur eingesetzt, wenn ich eine schon vorhandene Node noch mal bearbeite und abspeicher.