[gelöst] In Rules ein CCK-Feld füllen: +1 (Addition) oder -1 (Subtraktion)
Eingetragen von tobi-berlin (857)
am 14.01.2010 - 15:48 Uhr in
am 14.01.2010 - 15:48 Uhr in
Hallo zusammen,
ich möchte mit Rules ein Ganzzahl-CCK-Feld füllen. Es soll dem Feld kein konkreter Wert hinzugefügt werden, sondern es soll ein Wert addiert bzw. subtrahiert werden. Weiß jemand, wie das geht?
Viele Grüße,
Tobias
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich würde es zunächst mal
am 15.01.2010 - 17:40 Uhr
Ich würde es zunächst mal mit http://drupal.org/project/computed_field versuchen.
Dort kannst Du einfache Berechnungen in CCk anstellen.
Das geht auch ganz einfach
am 15.01.2010 - 18:59 Uhr
Das geht auch ganz einfach mit Rules, dafür musst du nicht unbedingt ein neues Feld installieren.
Lege dir eine reaktive Regel an und wähle, wann sie ausgelöst werden soll (z.B. beim aktualisieren des Inhaltes usw.)
Bedingungen kannst du festlegen, wie du willst.
Als Action wählst du "Feld mit einem Wert belegen" (oder so ähnlich) und wählst das Feld aus, das geändert werden soll.
Jetzt kommst du zu einem Menü, in dem du den Wert festlegen kannst, mit dem das Feld belegt werden soll. Etwas weiter unten hast du ein Box namens "Erweitert: Die Feldwerte mit PHP-Code festlegen" Dort kopierst du einfach diesen Code rein:
<?php
$zahl_neu = [node:field_feldname-formatted];
$zahl_neu++;
return array(
0 => array('value' => $zahl_neu),
);
?>
Wichtig: die PHP-Begrenzer darfst du nicht mit kopieren, nur den Code dazwischen.
Auch wichtig: bei dem Teil "[node:field_feldname-formatted];" musst du "feldname" natürlich durch den Maschinennamen deines feldes ersetzen. Du hast dort auch irgendwo weiter oben etwas von "Token-Ersetzungsmuster" stehen (wenn du Token installiert hast. Und das solltest du installiert haben, ist ersten eine praktische Sache und zweitens funktioniert sonst der Code nicht). Dort kannst du die ganzen Feld-Namen einsehen, die du eintragen kannst. Dort kannst du auch einfach dein Feld suchen und das Ersetzungsmuster kopieren und anstelle von "[node:field_feldname-formatted]" verwenden ;)
Damit wird immer, wenn die Regel ausgelöst wird, der Feldwert um 1 erhöht.
Edit:
Das gleiche geht natürlich auch mit Subtraktion, indem du anstelle von "$zahl_neu++;" das hier schreibst: "$zahl_neu--;" ;)
Probleme mit dem Flag-Modul?
am 15.01.2010 - 21:42 Uhr
Erstmal danke für Eure Ideen! Ich habe mal Deinen Vorschlag, Exterior, ausprobiert. Die Aktion soll passieren, wenn ein bestimmer Inhaltstyp per Flag-Modul markiert wurde. Problem: solange die Rule aktiv ist, erscheint die Fehlermeldung "An HTTP error 500 occurred." und die Aktion wird nicht ausgeführt (Rules Debugging zeigt nix an). Hast Du dazu vielleicht noch eine Idee???? Dieses Problem habe ich schon öfters gehabt, wenn ich über Rules eine Aktion nach einer Flagging-Aktion starten wollte...
Präsentiert voller Stolz sein erstes Drupal-Projekt: http://www.diaet-clique.de
Doch keine Probleme...
am 15.01.2010 - 21:53 Uhr
Hey,
da war ich wohl etwas vorschnell - das Problem war, dass ich nicht den richtigen Token ausgewählt hatte: Das Feld, dem +1 hinzugefügt werden soll, gehört nicht zum markierten Inhalt, sondern zu einem anderen Node, das noch geladen werden muss und für das zudem ein anderer Token verwendet werden muss... jetzt klappt alles super, vielen Dank!!!! :-)
Viele Grüße,
Tobias
Präsentiert voller Stolz sein erstes Drupal-Projekt: http://www.diaet-clique.de