[gelöst] hook_node_form_alter: Problem default_value für body zu setzen
am 06.08.2015 - 10:06 Uhr in
Hallo,
ich möchte in hook_node_form_alter für das Body-Feld einen Default-Wert setzen.
Das ganze funktioniert über
$form['body']['de'][0]['value']['#default_value'] = 'test';
allerdings nur dann, wenn ich in den Feldeinstellungen die Option Textverarbeitung auf
"Klartext" setze.
In der Option "Gefilterter Text" wird mein Default-Wert nicht mehr verwendet.
Wo muss ich einhaken, um den Default-Wert auch für den Filter zu setzen?
Beste Grüße,
Zeg
- Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, wenn die Option auf
am 06.08.2015 - 10:25 Uhr
Hallo,
wenn die Option auf gefilterter Text ist musst Du
warscheinlich Deinen Text in p Tags setzen, damit er angezeigt wird.
$form['body']['de'][0]['value']['#default_value'] = '<p>test</p>';LG
Robert
leider nicht
am 06.08.2015 - 10:38 Uhr
Hallo Robert,
nein, leider nicht.
Wenn ich im Edit-Form das Textformat ändere, bleibt immer der Original-Body des Nodes. (Auch bei Klartext).
Nur wenn ich die Feldeinstellung ändere, wird mein default_value übernommen.
Ich gehe davon aus, dass der Filter irgendwo den Orginal-Wert lädt und selbst als default setzt.
Ich finde nicht heraus, wo das geschieht.
Danke fürs Mitdenken!
Zeg
vielleicht ist im
am 06.08.2015 - 10:43 Uhr
content_type etwas hinterlegt?
Schau mal da.
Ich würde es auch eher dort unterbringen, als über einen form_alter ;-)
$form['body']['de'][0]['#defa
am 06.08.2015 - 10:45 Uhr
$form['body']['de'][0]['#default_value'] = 'test';sollte unabhängig vom Filter funktionieren.Hallo Ronald, ich habe zum
am 06.08.2015 - 10:51 Uhr
Hallo Ronald,
ich habe zum testen ein ganz frischen ContenType übers Backend angelegt.
Das Problem ist, dass ich diesen "Default-Wert" nur in einem ganz bestimmten Fall ändern möchte, und dieser Wert dynamisch erzeugt werden soll.
Insofern sehe ich nur die Möglichkeit über form_alter, oder?
glycid
am 06.08.2015 - 10:55 Uhr
$form['body']['de'][0]['#default_value'] = 'test';sollte unabhängig vom Filter funktionieren.Leider nicht! Ich bin so vorgegangen:
Hi, wenn ein Filter
am 06.08.2015 - 11:32 Uhr
Hi,
wenn ein Filter eingeschalten ist, probiers mal
$form['body']['de'][0]['value'] ='test';$form['body']['de'][0]['safe_value'] ='<p>test</p>';
bei gefiltertem Text wird safe_value ausgegeben.
MfG
Robert
wenn du Bedingungen prüfen musst
am 06.08.2015 - 12:16 Uhr
kommst du natürlich nicht an form_alter vorbei.
Schau mal darauf, dass im content_type KEIN Defaultwert steht.
Und überprüfe mal (durch debug-Ausgaben), ob die Bedingungen erfüllt sind, und form_alter erwartungsgemäß arbeitet.
Zeg schrieb Test mit
am 06.08.2015 - 12:34 Uhr
Hm, ich habs mit dem Body Field des Standard- Content Types "Article" so wie beschrieben getestet und es funktioniert einwandfrei mit beiden Einstellungen plain Text und Filter. Ist auch egal, ob ich in den Feldeinstellungen selber schon einen Default Wert setze, der wird dann korrekt überschrieben.
Ist der Wert für
$form['body']['#language']auch wirklich 'de' ? Teste auch mal:$form['body']['und'][0]['#default_value'] = 'Mein Wert';Danke
am 06.08.2015 - 19:53 Uhr
Warum auch immer, jetzt funktioniert es?
Möglicherweise habe ich mich selbst ausgetrickst, indem ich nach Änderungen am Code ein "Reload" gemacht habe, statt die Seite völlig neu zu laden ...
Danke an alle!