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

#1 16. Dezember 2013 15:16

Denis
hat von CMS/ms gehört
Registriert: 16. Dezember 2013
Beiträge: 10

NMS und Mehrsprachigkeit

Hallo zusammen,

ich bin ehrlich gesagt noch recht frisch was CMSMS angeht.

Hab mit MleCMS eine mehrsprachige Seite gebaut. Soweit auch alles im grünen Bereich.

Jetzt bin ich grad dabei, mit NMS ein Newslettersystem einzubauen.

Und da stehe ich jetzt vor dem Problem, dass ich die Mitteilungen, welche nach ausfüllen und absenden des Registrierungsformulars angezeigt werden nicht mehrsprachig hinbekomme.

Ich benutze dort die integrierte Anmeldung von NMS.

Irgendwie führt NMS in diesen Feldern eingegebenen Code nicht aus, sondern zeigt ihn auf der Seite einfach nur als Text an.

Bei den Email-Texten nutze ich Snippets von MleCMS, welche auch korrekt in den Emails in der benötigten Sprache umgesetzt werden.

Hat jemand nen heissen Tipp, was ich falsch mache? Steck da voll in ner Sackgasse.

Bin für jeden Tipp dankbar.

Viele Grüße,

Denis

Offline

#2 16. Dezember 2013 17:37

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. Dezember 2010
Beiträge: 1.231
Webseite

Re: NMS und Mehrsprachigkeit

Wenn es funktioniert dann mit

{if cms_get_language="de_DE"}
deutsche Text
{else}
englische Text
{/if}

das funktioniert nicht uberall, gerade mit E-Mails da gebe ich beide Sprachen drinnen, der Nutzer bekomme also eine E-Mail in deutsch und englisch.

Viel Spaß.

mfg
Jan

Beitrag geändert von Janl (16. Dezember 2013 17:37)


Kubuntu 22.04 - Win 11 pro / Kubuntu 20.04  - win10 pro

Offline

#3 17. Dezember 2013 11:08

Denis
hat von CMS/ms gehört
Registriert: 16. Dezember 2013
Beiträge: 10

Re: NMS und Mehrsprachigkeit

Hallo Jan,

leider funktioniert das nicht.

Die Texte in den Bestätigungsmails sind nicht das Problem.

Mir geht es um die Texte, die auf der Seite angezeigt werden, wenn sich ein User an- oder abmeldet.

Also z.B. das Feld "Mitteilung, die nach dem Abonnement einer Liste angezeigt wird:" im Reiter "Anmelden" im Modul Newsletter made simple.

Alles was ich da reinschreibe wird nur als Text auf der Seite ausgegeben. Auch jegliche Art von if-Bedingung.

Gruß,

Denis

PS: Ich denke es hat was damit zu tun, wie das Feld vom Modul ausgewertet und in die Seite eingebunden wird. Da ich mich aber nicht wirklich gut mit PHP-Programmierung auskenne komme ich an der Stelle auch nciht weiter.

Beitrag geändert von Denis (17. Dezember 2013 11:11)

Offline

#4 17. Dezember 2013 12:57

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: NMS und Mehrsprachigkeit

Damit die Felder wie gewünscht ausgewertet werden, musst du diese nochmal von Smarty verarbeiten lassen. Dafür gibt es den Befehl eval.

Du müsstest also die Templates so anpassen, dass du {$variable} durch {eval var=$variable} ersetzt.

Offline

#5 17. Dezember 2013 14:39

Denis
hat von CMS/ms gehört
Registriert: 16. Dezember 2013
Beiträge: 10

Re: NMS und Mehrsprachigkeit

Hi cyberman,

danke für den Tipp.

Dann begeb ich mich mal auf die Suche nach der richtigen Variablen.

Wenn ich die richtige gefunden habe lass ich es euch wissen.

Danke und Gruß,

Denis

Offline

#6 17. Dezember 2013 19:18

Denis
hat von CMS/ms gehört
Registriert: 16. Dezember 2013
Beiträge: 10

Re: NMS und Mehrsprachigkeit

Hi cyberman,

ich bin, glaube ich, einen halben Schritt weitergekommen.

Das Ganze spielt sich wohl hauptsächlich in der Datei functions.admintabs.php ab.

Hier wird das Feld "Mitteilung, die nach dem Abonnement einer Liste angezeigt wird:" mit:

$smarty->assign('postsubscribetext', $module->CreateTextArea(false, $id, $module->GetPreference('subscribe_posttext', ''), 'postsubscribetext', "", "", 10, 10));

definiert bzw. angegeben.

Bei der Abmeldeseite (gleiche Datei) ist für dieses Mitteilungsfeld "Angezeigter Text bei vollständigem Abmeldeformular" jedoch das hier spezifiziert:

$smarty->assign('unsubscribe_text', $module->CreateTextArea(false, $id, $module->GetTemplate('unsubscribe_text'), 'unsubscribe_text'));

Beim Anmelden also mit $module->GetPreferences und beim Abmelden mit $module->GetTemplate.

Bei der Abmeldeseite funktioniert dann auch das Einbinden eines Snippets von MleCMS.

Damit ist mein Latein allerdings auch am Ende. Hab ehrlich gesagt null Plan was ich jetzt damit anfangen soll.

Verzweifelte Grüße,

Denis

Offline

#7 18. Dezember 2013 21:34

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: NMS und Mehrsprachigkeit

Denis schrieb:

ich bin, glaube ich, einen halben Schritt weitergekommen.

Na dann fehlt ja nur noch ein halber, damit es ein ganzer wird wink

Evtl. denkst du auch noch zu kompliziert. Wenn du dir das anschaust

Denis schrieb:
$smarty->assign('postsubscribetext', $module->CreateTextArea(false, $id, $module->GetPreference('subscribe_posttext', ''), 'postsubscribetext', "", "", 10, 10));
$smarty->assign('unsubscribe_text', $module->CreateTextArea(false, $id, $module->GetTemplate('unsubscribe_text'), 'unsubscribe_text'));

und hier nachschlägst

http://www.smarty.net/docs/en/api.assign.tpl

siehst du, dass die anzupassenden Variablen {$postsubscribetext} und {$unsubscribe_text} lauten.

Durchforste mal alle Templates des Modulverzeichnisses nach diesen Variablen.

Offline

#8 19. Dezember 2013 15:15

Denis
hat von CMS/ms gehört
Registriert: 16. Dezember 2013
Beiträge: 10

Re: NMS und Mehrsprachigkeit

Hi cyberman,

habs jetzt grad hinbekommen.  big_smile

Das waren einige Änderungen in erschiedenen Dateien. Ich sammel jetzt nochmal alles zusammen, was ich gemacht habe und poste es dann hier nochmal.

Auf jeden Fall hast du mich in die richtige Richtung geschubst. Danke dafür.

Bis später,

Denis

Offline

#9 19. Dezember 2013 18:07

Denis
hat von CMS/ms gehört
Registriert: 16. Dezember 2013
Beiträge: 10

Re: NMS und Mehrsprachigkeit

Also jetzt aber...

Einer der Bausteine war wie schon vermutet ja die Datei "functions.admintabs.php".

Hier habe ich in Zeile 80 den Code von:

$smarty->assign('postsubscribetext', $module->CreateTextArea(false, $id, $module->GetPreference('subscribe_posttext', ''), 'postsubscribetext', "", "", 10, 10));

auf das hier:

$smarty->assign('subscribe_posttext', $module->CreateTextArea(false, $id, $module->GetTemplate('subscribe_posttext'), 'subscribe_posttext'));

geändert.

Bei der Gelegenheit habe ich mich (wie man ja schon im Code sehen kann) dazu entschieden, nur noch einen Namen (also 'subscribe_posttext') für die Variable zu verwenden. Damit wollte ich mir weitere Verwirrung ersparen und außerdem hab ich bei den anderen Variablen auch nicht so ein Namens-Wirrwarr gefunden.

Damit das Feld dann im Backend weiterhin angezeigt wird mußte ich natürlich noch das entsprechende Template "subscribeform.tpl" in Zeile 22 von:

<p class="pageinput">{$postsubscribetext}</p>

auf:

<p class="pageinput">{$subscribe_posttext}</p>

ändern.
Das einzige was ich damit zu dem Zeitpunkt erreicht hatte war, dass wenn ich im Backend in dem Feld was eingetragen habe und dann gespeichert habe war der Text in dem Feld verschwunden.

Also weitergraben... cry

In der Datei "action.save_subscribe_prefs.php" bin ich dann in Zeile 56 auf folgendes gestoßen:

$this->SetPreference('subscribe_posttext', $params['postsubscribetext']);

was ich dann gemäß den anderen in der Datei enthaltenen Beschreibungen auf das hier geändert habe:

$this->SetTemplate('subscribe_posttext', isset($params['subscribe_posttext'])?$params['subscribe_posttext']:'');

Das war dann glaub ich der Punkt, wo ich NMS soweit hatte, dass es für das Feld "Mitteilung, die nach dem Abonnement einer Liste angezeigt wird:" einen Eintrag in der Datenbanktabelle "cms_module_templates" macht.
Denn unterwegs hatte ich schon festgestellt, dass nur die Felder welche hier auch aufgeführt sind auch wirklich verarbeitet und nicht nur als Text ausgegeben werden.

Zu guter letzt musste ich NMS jetzt nur noch dazu bringen, den Datenbankeintrag auch zu verarbeiten.

Das hab ich dann geschafft, indem ich in der Datei "action.do_create_new_user.php" die Zeile 257 von:

echo $this->GetPreference('subscribe_posttext');

auf:

echo $this->ProcessTemplateFromDatabase('subscribe_posttext');

geändert habe.

Jetzt funktioniert es endlich. tongue

Wie schon gesagt hab ich nur sehr sehr wenig Ahnung von PHP. Wenn ich also zuviel geändert habe oder es Verbesserungsvorschläge (sprich Vereinfachungen) für meine Änderungen gibt bitte gerne posten.

Ansonsten hab ich jetzt Blut geleckt und versuch mich jetzt an den Betreff-Zeilen der Emails, die auch nur als Text eingebunden werden und im Moment keinen Code verarbeiten.

Sobald es da Ergebnisse gibt schreib ich nochmal nen schönen (hoffentlich nicht ganz so langen) Beitrag.

Bis dann,

Denis

Offline