contact_form

Hilfe zu Modulen und Tags
Post Reply
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

contact_form

Post by TeXnik »

Ich benutze immer noch diesen Tag, da ich hier sehr einfach verschiedene E-Mail Adressen übergeben kann, einmal an die Administration oder an die versch. Nutzer.

Ein bischen hat mich gestört, daß ich die Sprache nicht entsprechend der Seite anpassen konnte.

Da wollte ich mal clever sein (ohne es wirklich zu sein) und probierte sowas aus:

Code: Select all

[if (empty($name)) $errors .= "\t\t<li>" . {if $lang=="en_US"}'Please Enter Your Name'{/if}{if $lang=="de_DE"}'Bitte den Namen eingeben'{/if} . "</li>\n";
Was aber nicht hinhaut. Wie muß ich das nun machen, daß entsprechend der seite auch die dazugehörige Sprache ausgegeben wird?
NaN

Re: contact_form

Post by NaN »

Was ist denn $lang?
Gibt es diese Variable überhaupt?
Benutzt Du die MLE Version?
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Re: contact_form

Post by TeXnik »

Ja MLE, ich hab es nicht extra erwähnt, da ich erst kürzlich stark in die MLE-Diskussion einstieg. Für mich die ideale version, da 2.0 noch weit entfernt ist und dort vielleicht die Mehrsprachigkeit doch nicht implementiert wird.

Wegen MLE möchte ich auch nach Möglichkeit konsequent in den Sprachen auf jeder Seite sein. Ich hab mir auch mal den den Formbuilder angesehen, dort habe ich es aber nicht geschafft, verschiedene e-mail zu benutzen.
NaN

Re: contact_form

Post by NaN »

Wie bei so vielen Dingen muss er für MLE immer noch etwas angepasst werden.
Füge mal in Zeile 26 (nach global $gCms;) folgendes ein:

Code: Select all


    // MLE support:
    $lang = $gCms->config['locale'];
    global $hls, $mleblockfallback;

    if(isset($hls) && $hls != '')
    	$lang = $hls;
    else if(isset($mleblockfallback) && $mleblockfallback != '')
    	$lang = $mleblockfallback;

    if(isset($params['lang']))
    	$lang = $params['lang'];
    // end MLE support

Dann müsste Deine Idee mit dem $lang funktionieren.

Edit: kurze Erklärung...

Standardsprache ist die Einstellung in der config.php.
Sollte die MLE Variable $hls vorhanden sein und einen Wert beinhalten, wird diese genommen.
Anderenfalls die MLE Standardsprache (aber nur, wenn die auch einen Wert hat - sonst bleibt es bei der config.php).
Wenn man zusätzlich noch den Parameter lang beim Aufruf des Tags verwendet hat, dann wird dieser verwendet.

Du kannst also in der MLE Version den Tag dann einfach so aufrufen {contact_form}
Oder mit der Templatevariable, die die aktuelle Sprache beinhaltet (weiß jetzt nicht wie die heißt): {contact_form lang=$lang}
Oder einfach {contact_form lang="de_DE"} um es trotz anderer Sprachen immer auf Deutsch ausgeben zu lassen.
Last edited by NaN on Sun Jul 25, 2010 1:34 pm, edited 1 time in total.
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Re: contact_form

Post by TeXnik »

Danke NaN, aber es klappt noch nicht. Es scheint daß nach

Code: Select all

[if (empty($name)) $errors .= "\t\t<li>" . 
ein String stehen muß. Wenn etwas anderes dort steht gibt es Parse-Error.

Ich werde mal probieren, ob eine Variable nicht moniert wird und die Variablenzuweisung direkt davor setzen.
NaN

Re: contact_form

Post by NaN »

Sorry, ich habe Deine Änderungen nicht genau angeschaut.
Der Syntax ist ja leider völlig falsch.
Du mischst hier PHP mit Smarty.
Das kann so leider nicht funktionieren.
Hatte jetzt einfach paar PHP Kenntnisse vorrausgesetzt.

Ich werde mal eine MLE-taugliche Version des {contact_form} Tags schreiben.
Sollte nicht allzuschwer sein.
Melde mich später nochmal.
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Re: contact_form

Post by TeXnik »

Hallo NaN, meine php-Kenntnisse kann man als äußerst rudimentär bis nicht vorhanden definieren :-[. meine letzten Programmieraktionen liegen sehr, sehr lange zurück, als ich noch in Modula programmierte und dort Grafikfuntionen (teilweise in Assembler) für die Herkules-Karte programmierte.

Ich hatte mir ein paar Beispiele angesehen und glaubte, daß ich das doch irgendwie auf die Reihe bekomme. Dort sah ich auch, daß im php-Code smarty-tags (die fangen doch alle mit { an, oder?). Na ja, war wohl nix.

Die $lang-Variable wird im MLE benutzt, alle Module, die die Sprachen unterstützen, können die nutzen

Code: Select all

lang="$lang" anstelle von z.B. lang="de_DE"
So brauche ich auch nicht darauf zu achten, daß beim Kopieren die korrekte Sprache eingetragen wir, sehr bequem. Oder wenn auf einer Seite nur die Hauptsprache existiert und weitere Übersetzungen nicht nötig sind, dann wird es trotzdem immer in der richtigen Sprache angezeigt.
cyberman

Re: contact_form

Post by cyberman »

Den Smarty-Wert von $lang kannst du dir in PHP auch damit holen

Code: Select all

$lang = $smarty->get_template_vars('lang')
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Re: contact_form

Post by TeXnik »

Code: Select all

if (empty($name)) $errors .= "\t\t<li>" . 'Please Enter Your Name' . "</li>\n";
Wenn ich anstelle von

Code: Select all

 'Please Enter Your Name' 

eine if-Abfrage entsprechend der $lang-Variable setze, kommt es immer zu einem Parse-error.
z.B.:

Code: Select all

{if $lang=="en_US"}>> Your email:</label>{/if} {if $lang=="de_DE"}>> Ihre Email:{/if} code]

Ich will jetzt mal ausprobieren die if-Abfrage vorher zu setzen und den String dann einer Variablen zuweisen. Muß die Variable auch in Hochkommata gesetzt werden?
cyberman

Re: contact_form

Post by cyberman »

Ich glaub du kommst besser, wenn du dir contact_form im Original und übersetzt installierst, und die dann über eine $lang-Abfrage aufrufst

Code: Select all

{if $lang == 'de_DE'}
{contact_form_de ...}
{else}
{contact_form ...}
{/endif}
Da musst du nicht im Code rummurksen ...
Post Reply

Return to “Module und Tags”