Inhalt direkt nach Erstellung verändern
Eingetragen von no2x (98)
am 24.04.2010 - 10:02 Uhr in
am 24.04.2010 - 10:02 Uhr in
Hallo zusammen,
ist es möglich, einen Inhalt direkt nachdem er vom User im Node erstellen Formular eingegeben wurde zu verändern? Also z.B. die Daten aus dem geposteten Formular zu verändern oder sich kurz vor dem Insert "einzuklinken"?
Der Hintergrund ist folgender: Ich habe ein paar CCK Text- und Zahlenfelder, die für den User beim Inhalte erstellen nicht sichtbar sind. Nun sollen basierend auf den Eingaben des Users diese Felder gefüllt werden (hierfür müssen einige PHP-Funktionen ablaufen).
- Anmelden oder Registrieren um Kommentare zu schreiben
Also entweder schreibst du
am 24.04.2010 - 11:58 Uhr
Also entweder schreibst du dir ein kleines Modul, das sowas macht, dürfte nicht sooo umfangreich sein.
Oder du nimmst dir Rules, dort kannst du nach dem Speichern von Nodes CCK-Felder befüllen und auch PHP-Code ausführen, wenn das PHP-Modul aktiviert ist. Die Variante mit Rules geht sicher schneller.
Die Rules-Variante klingt für
am 24.04.2010 - 12:14 Uhr
Die Rules-Variante klingt für mich ganz gut. Werde ich mal ausprobieren.
Ich habe eben noch eine andere Idee gehabt. Ist es möglich, die Node Erstellung aufzusplitten? D.h. anstatt einem Formular zwei Formulare zu machen? Dann könnte der User im ersten Schritt die Felder ausfüllen, dann auf weiter klicken und dann in Schritt 2 weitere Felder ausfüllen oder die eingegebenen Daten nochmals kontrollieren.
Im zweiten Schritt könnten dann doch über das Template der PHP-Code ausgeführt werden und die Daten in die versteckten Felder des zweiten Formulars eingetragen werden. Ist sowas ohne allzugroße Umstände möglich?
Möglich dürfte das sein, aber
am 24.04.2010 - 15:27 Uhr
Möglich dürfte das sein, aber "ohne allzugroße Umstände" wahrscheinlich weniger.
Ich persönlich würde eher die Rules-Variante nehmen, denn dann musst du nicht irgendwo in den Node-Add-Forms rumfummeln.
Ok - vielen Dank für die
am 24.04.2010 - 15:39 Uhr
Ok - vielen Dank für die Hilfe.
Jetzt habe ich allerdings nur noch 1 Frage:
Bei Rules heißt die Action "populate cck field". Heißt das, es können nur leere CCK-Felder gefüllt werden? Oder können die Inhalte der Felder (die bei der Node Creation gespeichert wurden) auch abgeändert werden?
Denn bei mir hat es eben nicht geklappt. Es schien so als würde der PHP-Code nicht ausgeführt werden (ich habe einfach return 'test' verwendet) - denn der ursprüngliche Wert (Default Wert) ist immer noch drin...
Nein, damit wird ein CCK-Feld
am 24.04.2010 - 16:03 Uhr
Nein, damit wird ein CCK-Feld auf einen bestimmten Wert gesetzt, du musst also irgendwas falsch gemacht haben...
Hast du den PHP-Code evtl. falsch verwendet? Wenn du PHP verwendest, dann wird alles innerhalb der PHP-Begrenzer durch seine Ausgabe ersetzt.
Wenn du also dort rein schreibst:
Hallo Besucher Nummer <?php echo 1+2+3; ?>
Dann steht als Ausgabe dort "Hallo Besucher Nummer 6"
Hast du das PHP-Modul aktiviert? Hast du das richtige CCK-Feld genommen? Hast du den richtigen Auslöser genommen ("after saving new content")?
Zitat: Hast du das PHP-Modul
am 24.04.2010 - 17:19 Uhr
Hast du das PHP-Modul aktiviert?
Meinst du das PHP-Filter Modul? Nein das habe ich nicht aktiviert. Rules zeigt mir bei der Bearbeitung der Aktion der Regel als zweitletzte Option "Advanced: Specify the fields value with PHP code" an. Dort ist ein Kasten, unter dem steht:
Advanced usage only: PHP code that returns the value to set. Should not include
<?php
?>
return array(
0 => array('value' => value for value),
// You'll usually want to stop here. Provide more values
// if you want your 'default value' to be multi-valued:
1 => array('value' => value for value),
2 => ...
);
Using devel.module's 'devel load' tab on a content page might help you figure out the expected format.