Rules: Wert an CCK-Feld geben
Eingetragen von Jadea (30)
am 11.01.2011 - 16:50 Uhr in
am 11.01.2011 - 16:50 Uhr in
Hallo zusammen,
ich möchte gerne über Rules, den Nutzer, der ein Thema aktualisiert, in einem Feld "field_aenderung_nutzer" abspeichern, damit ich den Wert über Views anzeigen kann.
Leider bin ich in php noch nicht so firm, was muß ich als php-code angeben?
Bisher habe ich:
ON event Nach dem Aktualisieren bestehenden Inhalts
<?php
global $user;
"field_aenderung_nutzer" => $user;
?>
Aber irgendwie stimmt da was nicht. Fehlermeldung: Parse error: syntax error, unexpected '<' in /opt/rz/www/virtuals/externe/bronze/database/sites/all/modules/rules/rules/modules/php.rules.inc(107) : eval()'d code on line 1
Wäre jemand so lieb, mir weiterzuhelfen? Danke vielmals!
- Anmelden oder Registrieren um Kommentare zu schreiben
Rules
am 12.01.2011 - 20:35 Uhr
Hallo.
Das kann so nicht funktionieren. Woher soll Drupal (bzw. PHP) denn wissen, was Du mit dem Text "field_aenderung_nutzer" meinst?
Du hast in der Rule den Parameter
$node
(das Datenobjekt des veränderten Inhalts). Lass Dir mal in einer Aktion von Rules dessen Werte ausgeben. Dazu installierst Du Dir das Modul [do:devel Devel].<?php
dsm($node);
?>
Damit siehst Du, welche Attribute das Objekt
$node
so alles mitbringt und wo Du ansetzen musst.Ich vermute mal, folgender Code könnte schon die Lösung sein (ungetestet):
<?php
$node->field_aenderung_nutzer = $user->uid;
return array('node' => $node);
?>
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Vielen Dank für die Hilfe
am 14.01.2011 - 10:12 Uhr
Vielen Dank für die Hilfe schonmal, mit dem Devel war ein guter Tipp.
Trotzdem hab ich noch ein Fehler in der Syntax. Beim dem Code kommt die Meldung: "Parse error: syntax error, unexpected $end, expecting '(' in /opt/rz/www/virtuals/externe/bronze/database/sites/all/modules/rules/rules/modules/php.rules.inc(107) : eval()'d code on line 1"
Übernommener Code:
<?php
$node->field_aenderung_nutzer = $user->uid;
return array('node' => $node);
?>
Ich hab jetzt grad noch bei
am 14.01.2011 - 10:34 Uhr
Ich hab jetzt grad noch bei Devel gesehen, dass der Wert den ich dem Feld "field_aenderung_nutzer" zuweisen will, ist in dem Token "user-name" gespeichert. Vielleicht gibts ja auch noch ne Alternative als das mit Rules zu machen. Wäre für Hilfe sehr, sehr dankbar!
Das geht problemlos mit der
am 14.01.2011 - 10:49 Uhr
Das geht problemlos mit der Devel Version von Rules!
C.A.W. Webdesign
caw schrieb Das geht
am 19.01.2011 - 15:43 Uhr
Das geht problemlos mit der Devel Version von Rules!
Könntest Du mir genauer erklären, wie man vorgeht? Ich hab nach der Installation von Devel keine Veränderung von Rules selbst bemerkt.
rules
am 19.01.2011 - 15:50 Uhr
caw meinte vermutlich die "dev-Version" von Rules.
Allerdings funktioniert das auch mit dem stabilen Release. Magst Du mal den von Dir eingefügten Code zeigen? Eventuell auch einen Screenshot der Rule-Konfiguration.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Danke für die Antwort. Anbei
am 19.01.2011 - 16:11 Uhr
Danke für die Antwort. Anbei alle von mir eingegebenen Daten.
<?php
$node->field_aenderung_nutzer = [author:user];
return array('node' => $node);
?>
führt zu:
Parse error: syntax error, unexpected '[' in /opt/rz/www/virtuals/externe/bronze/database/sites/all/modules/rules/rules/modules/php.rules.inc(107) : eval()'d code on line 1
<?php
$node->field_aenderung_nutzer = $user->uid;
return array('node' => $node);
?>
führt zu: Fatal error: Cannot unset string offsets in /opt/rz/www/virtuals/externe/bronze/database/sites/all/modules/cck/content.module on line 1248
Hoffe Du kannst mir helfen!
Jadea
am 19.01.2011 - 17:14 Uhr
$node->field_aenderung_nutzer = [author:user];
Nee, so einfach geht das nicht :)
<?php
$node->field_aenderung_nutzer = $user->uid;
return array('node' => $node);
?>
Ich vermute mal, dass <code>$node->field_aenderung_nutzer
<?php
$node->field_aenderung_nutzer[0]['#value'] = $user->uid;
return array('node' => $node);
?>
Zur Sicherheit gib mal einfach anstelle des obigen Codes das hier ein:
<?php
dsm($node->field_aenderung_nutzer);
?>
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Also in Rules kannst du eine
am 19.01.2011 - 17:34 Uhr
Also in Rules kannst du eine Aktion erstellen, die ein CKK Feld füllt. Als werte kannst du in der development Version auch Token Werte nutzen
C.A.W. Webdesign
<?php$node->field_aenderung_n
am 20.01.2011 - 13:10 Uhr
<?php
$node->field_aenderung_nutzer[0]['#value'] = $user->uid;
return array('node' => $node);
?>
Da kommt keine Fehlermeldung mehr, aber speichern tut er auch keinen Wert in das Feld.
Zur Sicherheit gib mal einfach anstelle des obigen Codes das hier ein:
<?php
dsm($node->field_aenderung_nutzer);
?>
Stefan
Also wenn ich das eingebe kommt folgende Meldung (mit der ich jetzt nich viel anfangen kann):
... (Array, 1 element)
*
0 (Array, 1 element)
Called from /opt/rz/www/virtuals/externe/bronze/database/sites/all/modules/rules/rules/modules/php.rules.inc(107) : eval()'d code, line 1
Könnte ich den Wert vielleicht auch durch einen berechneten Standartwert des Feldes selbst abspeichern? Wenn ja was müßte ich da eingeben?
Die Vorgabe ist ja:
return array(
0 => array('value' => Wert für value),
);
Auch hier komme ich aber nicht weiter, was ich bei value jeweils eingeben muß.
caw schrieb Also in Rules
am 20.01.2011 - 13:12 Uhr
Also in Rules kannst du eine Aktion erstellen, die ein CKK Feld füllt.
Aber wie? Das versuche ich ja die ganze Zeit :)
caw schrieb Das geht
am 05.02.2011 - 12:20 Uhr
Das geht problemlos mit der Devel Version von Rules!
Moin caw,
könntest du das bitte etwas näher beschreiben ? Ich stehe vor dem gleichen Problem...
Gruß
Ich habe die tokens einfach
am 05.02.2011 - 14:57 Uhr
Ich habe die tokens einfach in die Email gestellt wie in der Anleitung. Sonst nichts
C.A.W. Webdesign