Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 02. Dezember 2010 14:34

validationError
Gast

[GELÖST] Content verändern via UDT

Hallo,

kann man per UDT den content, also genauergesagt, dass was in den TinyMCE eingegeben & gespeichert wird
a) Auslesen?
b) Per UDT in den selben contentbereich zurückschieben und quasi den alten content überschreiben oder aber den alten content erhalt und nur bei Anzeige der Webseite im Frontend verändert darstellen?

Beispiel:
Ich gebe im TinyMCE auf einer Inhaltsseite ein:
-------------------------------
mein Hund hat schwarzes Fell
{meinUDT}
-------------------------------

{meinUDT} greift sich den Inhalt (mein Hund hat schwarzes Fell {meinUDT}), ändert ihn, und am Schluss wird im Frontend nur der geänderte Inhalt ausgegeben.

Danke für jede Antwort! smile

P.S.: Ich weiß, dass es über Parameter einfach wäre, aber ich möchte das gerade nicht.

Beitrag geändert von validationError (02. Dezember 2010 20:13)

#2 02. Dezember 2010 16:37

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] Content verändern via UDT

Um den Inhalt beim Speichern zu ändern, gibt es die Ereignisverwaltung.
Schau mal nach einem Event namens ContentEditPre (oder so).
Dem kannst Du Dein UDT zuordnen.
In Deinem UDT kannst Du dann erstmal mit print_r($params) feststellen, welche Daten an den UDT übergeben werden und ggfs. diese dann ändern.
Das finde ich aber nicht unbedingt die beste Lösung, da damit der eingegebene Inhalt nicht mehr mit dem gespeicherten übereinstimmt. Wenn man die Seite zum Bearbeiten neu lädt, dann steht dort der geänderte Inhalt. Das könnte zu Verwirrung führen.
Wäre aber fürs Frontend die performantere Lösung

Um die Inhalte bei der Ausgabe zu ändern, kannst Du im Template auf das {$content_obj} zugreifen.
Mit {$content_obj->GetPropertyValue('content_en')} kannst Du auf den Inhalt zugreifen.
Mit {$content_obj->SetPropertyValue('content_en','neuer Inhalt')} kannst Du diesen ändern.
Das ganze muss aber vor dem {content} geschehen.

Um das ganze nicht über Parameter sondern rein im PHP Code zu machen, müsste Dein UDT ebenfalls im Template vor dem {content} aufgerufen werden.
Da kanst Du dann so auf das {$content_obj} zugreifen:

[== php ==]
$content_obj  = cms_utils::get_current_content(); // für CMSms 1.9+
$content_obj  = cmsms()->GetSmarty()->get_template_vars('content_obj'); // für CMSms 1.8.2
$orig_content = $content_obj->GetPropertyValue('content_en');
$new_content = ... Dein Code der irgendetwas mit $orig_content macht ...
$content_obj->SetPropertyValue('content_en',$new_content);

Dann wird das ganze jedesmal zur Laufzeit gemacht und steht nicht "statisch" in der DB.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#3 02. Dezember 2010 19:57

validationError
Gast

Re: [GELÖST] Content verändern via UDT

Super, vielen vielen Dank, NaN, für die ausführliche Antwort! smile

Das war genau, was ich gesucht hatte.

BTW: CMSms ist einfach nur abartig gut!