Variablenbehandlung in V8 geändert?

Fragen zum Erstellen von Templates für webEdition.
Falken
Senior Member
Beiträge: 254
Registriert: So 10. Jul 2005, 19:06

Variablenbehandlung in V8 geändert?

Beitragvon Falken » Do 29. Mär 2018, 18:01

Ein Hallo an die Gurus....
Kann es sein, dass sich mit V8 wie unten beschrieben etwas geändert hat?

- Ich verwende als Fremdsprachenlösung seit Äonen das Setzen einer Sprachvariable (mit setVar weise ich einer Variable de , en usw. zu)
- Alle sprachenbezogenen Inhalte heissen dann eben zbsp. seitentitel_$lang
- Beim Editieren der Seite im webEdition setze ich mit einem kleinen Script die Variable de oder en usw. und schalte damit zwischen den Sprachen hinundher.
Das funktioniert seit V3 problemlos.

Ich habe jetzt das erste Web auf V8 upgedatet und plötzlich wird scheinbar kein Inhaltsteil das so einen Namen hat wie seitentitel_$lang richtig erkannt, also als seitentitel_de oder seitentitel_en

Die Umschaltung beim Editieren und das eigentliche Setzen der Variable funktionert, da ich die restlichen Inhalte die fix eingebaut sind jeweils deutsch oder englisch sehe.

Nur eben zbsp. die Textareas sind leer, wenn ich was reinschreibe steht es bei beiden Sprachen gleich drin.

Zusätzlich seltsam, jede Änderung hat keine Auswirkung auf die Seite wie sie online ist. Das heisst vermutlich online funktioniert die Variablengeschichte, nur nicht im Editor.

Ist das eventuell ein Problem der Version 8 (direkt vor dem Update hat das noch funktioniert) oder kann etwas auf der Seite sein, das sich mit V8 beisst? (WE Fehlermeldung bekomm ich beim Speichern keine)

Vielen Dank für Tipps!!

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Variablenbehandlung in V8 geändert?

Beitragvon blickfang » Do 29. Mär 2018, 18:49

Hallo Falken,
so ganz ohne Code-Beispiel etwas schwer zu sagen ;-)
Ich könnte mir vorstellen, dass die variablen Global/Dokument nicht zusammenspielen.

Sowas in die Richtung müsste funktionieren:

Code: Alles auswählen

<we:ifPageLanguage doc="top" value="de_DE">
  <we:var to="global" nameto="fieldName" value="text_de" />
<we:else />
  <we:var to="global" nameto="fieldName" value="text_en" />
</we:ifPageLanguage>

<we:textarea name="\$fieldName" />
Wenn "fieldName" eine gloable variabel ist, dann steckst Du Sie mit führendem Backslash rein, wenn es keine gobale Varibale ist, dann ohne Backslash.

Code: Alles auswählen

<we:textarea name="$fieldName" />
Viele Grüße
Timo
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Falken
Senior Member
Beiträge: 254
Registriert: So 10. Jul 2005, 19:06

Re: Variablenbehandlung in V8 geändert?

Beitragvon Falken » Do 29. Mär 2018, 18:54

Hallo Timo
danke für die rasche Antwort, muss schauen was ich davon verstehe.

Ich hab die Gegenprobe gemacht, nachdem ich ein Webspacebackup zurückgespielt habe.
Mit 7.04 geht das noch problemlos, ab 8 scheinbar nicht mehr.

Mir gehts auch ums Grundsätzliche, da dies exakt gleich seit V3 funktioniert und so wie es aktuell aussieht mit V8 nicht mehr geht

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Variablenbehandlung in V8 geändert?

Beitragvon blickfang » Do 29. Mär 2018, 19:06

unter https://www.webedition.org/de/dokumenta ... shistorie/ kannst Du einsehen, was jeweils ind en Versionen geändert wurde. Auch findest Du hier https://www.webedition.org/de/dokumenta ... tionen.php Hinweise auf Änderungen, die Du mit Deinem Code abgleichen kannst.

In den meisten Fällen ist aber dann der Prozess eher so, dass etwas bislang unktionierte (was nicht hätte sein dürfen) und nun halt korrekterweise nicht mehr geht ;-)
VG
Timo
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Falken
Senior Member
Beiträge: 254
Registriert: So 10. Jul 2005, 19:06

Re: Variablenbehandlung in V8 geändert?

Beitragvon Falken » Fr 30. Mär 2018, 07:41

Hallo Timo
nochmals danke für Deine Mühe.
Ich denke das setzen der Variable funktioniert ja, ich sehe dass ich mit der gesetzten Sprachvariable ja andere Sachen abfragen kann.

So wie ichs momentan sehe liegtes am Namen der Textarea

Also ich setze die Variable $lang (was scheinbar noch geht) und dann nehme ich als Name für die Textareas diese Sytax

<we:textarea name="seitentitel_$lang" /> (ich brauch ja einen Grundnamen der gleich bleibt und die angehängte Sprachvariable, dann kann ich schön textboxen für alle beliebigen Sprachen haben.

Du schreibst das so: <we:textarea name="\$fieldName" />

wenn ich das mit einem fixen Namensteil kombinieren will wäre das dann so?
<we:textarea name="seitentitel_/$lang" />

Sorry für Fragen zu Dinge die ich auch probieren könnte aber da ich auf V7 zurückgewechselt bin kann ich es nicht sofort testen und zudem hab ich das Problem, dass mir nun webEdition den Vorlageneditor von diesem Web nicht mehr anzeigt (nächstes Problem)...
Ich glaub ich muss ein Testweb aufsetzen wo ich mir das in Ruhe anschauen kann....

Benutzeravatar
haydi
Senior Member
Beiträge: 645
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Hirschberg
Kontaktdaten:

Re: Variablenbehandlung in V8 geändert?

Beitragvon haydi » Di 3. Apr 2018, 06:58

Hola,

ich würde es so machen ...

Code: Alles auswählen

<?php
$GLOBALS['mylang'] = 'seitentitel_'.$lang;
?>
<we:textarea name="\$mylang" />
Liebe Grüße
haydi
Heidi Wetzel
Internet-Applikationen & Webseiten-Erstellung
https://www.heidi-wetzel.de

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Variablenbehandlung in V8 geändert?

Beitragvon blickfang » Di 3. Apr 2018, 12:25

so würde ich es auch machen ;-)
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Falken
Senior Member
Beiträge: 254
Registriert: So 10. Jul 2005, 19:06

Re: Variablenbehandlung in V8 geändert?

Beitragvon Falken » Di 3. Apr 2018, 14:21

Ok danke -
damit man daraus lernen kann, warum so und nicht <we:setVar to="global" nameto="lang" value="de"/> ?
Das funktioniert ja.
Kennt jemand einen realen Grund warum das mit V8 nicht mehr geht wenn lang korrekt gesetzt ist?:
<we:textarea name="seitentitel_$lang" />

Man darf auch nicht vergessen, wenn jetzt Inhalte mit neuer Syntax gesetzt werden geht in einem Bestandsweb der gesamt Inhalt in allen Sprachen verloren. Bei einem neuen Web ist das ja alles kein Problem aber wenn nach einem V8 Update in allen meinen Webs der Inhalt nicht mehr zu bearbeiten ist, ist das nicht wirklich lustig.

Auf jeden Fall danke für alle Hilfen!

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Variablenbehandlung in V8 geändert?

Beitragvon blickfang » Di 3. Apr 2018, 14:30

die Inhalte in der Datenbank gehen so oder so nicht verloren, Sie werden nur nicht mehr angezeigt, wenn Die Variablennamen sich ändern.
Aber Du musst Deine Templates natürlich überall umbauen, wo Du bislang deine variablen Variablennamen drin stehen hattest, um dann den Inhalt wieder angezeigt zu bekommen...
Ich kann mir vorstelen, dass um an den geparsten variablen Varibalenname zu kommen, ein eval() oder ähnliches nötig war und dies aus Sicherheitsgründen entfernt wurde. Hab mir das aber nicht angesehen und kann daher nur mutmaßen.
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Falken
Senior Member
Beiträge: 254
Registriert: So 10. Jul 2005, 19:06

Re: Variablenbehandlung in V8 geändert?

Beitragvon Falken » Mi 1. Aug 2018, 19:35

Ich muss da leider nochmals darauf zurückkommen - vielleicht schafft es jemand das Problem einzugrenzen.

Ich hab das jetzt mal probiert wie angeführt:
<?php
$GLOBALS['mylang'] = 'seitentitel_'.$lang;
?>
<we:textarea name="\$mylang" />
Dabei tritt das selbe Problem auf - Ich schalte im Backend die Sprache um (was funktioniert, da dann die korrekten Teile der Seite die in der bestimmten Sprache angezeigt werden sollen (Navigation, Grafikheader, etc.) angezeigt werden.

Die Eingabefelder (egal was, Title, description, textarea, input, ...) erscheinen aber ohne den Inhalt der jeweiligen Sprache. Wenn ich was eintrage bleibt dieser Inhalt in allen Sprachen erhalten. Die originalen Inhalte gehen dabei nicht verloren und werden auf der Webseite problemlos angezeigt.
Ich nehme an, dass die Ausgabe im Backend nur der Feldname ohne die Variable ist.

Vielleicht nochmals der Reihe nach wie ich das seit unzähligen Jahren mache:

Mit <we:setVar to="global" nameto="lang" from="request" namefrom="lang" />
wird die Sprachvariabel gesetzt.
Und ein Feld, zbsp. description wird so in der Vorlage verwendet:
<we:input name="Description_$lang" type="text" size="100" html="false" htmlspecialchars="false" />

All das funktioniert bei der Ausgabe immer noch aber im Backend erscheinen die Eingabefeler nicht in den Sprachvarianten.

Soweit ich es beurteilen kann funktioniert das bis zur version 7.x, ab 8. tritt das Problem auf.
(soweit ich es vermeiden kann möchte ich kein funktionsfähiges Web auf 8 updaten um das genau nachzuvollziehen)

Jemand eine Idee die man nachverfolgen kann?
Danke!

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Variablenbehandlung in V8 geändert?

Beitragvon blickfang » Mi 1. Aug 2018, 19:46

Hast Du denn die Request Variable im Editmode zur Verfügung? Steht da was dri nachdem du die Sprache umgeschalten hast oder ist die etwas leer?
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Falken
Senior Member
Beiträge: 254
Registriert: So 10. Jul 2005, 19:06

Re: Variablenbehandlung in V8 geändert?

Beitragvon Falken » Do 2. Aug 2018, 09:31

Ja ich hab mri ein kleines Dropdown mit Scrttp gemacht mit dem ich die Variable im Editor umschalten kann.
Die Seite wird auch wie üblich neu aufgebaut und alle Elemente die von der Sprache abhängen werden dann im Editor korrekt angezeigt.
( Zbsp. ifVar Abfragen mit denen ich Seitenelemente je nach Sprache anderes anzeige)

Das heisst also die Variable ist korrekt auf der Seite, es funktioniert aber dies nicht:
<we:textarea name="testcontent_$lang" />

Ich hab jetzt mal eine Bastelseite gemacht zum Testen.
Indem ich eine zweite Textarea mit diesem Namen angelegt habe <we:textarea name="testcontent_" />
ist jetzt relativ klar was passiert.

Der Editor macht Seit V8 aus
<we:textarea name="testcontent_$lang" />
das da: <we:textarea name="testcontent_" />

Ist das ein Bug oder Feature?
Wäre wirklich super wenn das wieder wie früher gehen würde, dann ich kann keines der aktiven Webs damit auf V8 updaten.

Viele Grüße und danke für die Unterstützung hier!

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Variablenbehandlung in V8 geändert?

Beitragvon blickfang » Do 2. Aug 2018, 09:36

Wenn Du

Code: Alles auswählen

<?php echo $_REQUEST['lang']; ?>  
machst, wird vermutlich nichts ausgegeben. Deine Variable $lang ist leer, darum steht dann als name "testcontent_". Ich vermute Dein Sprachumschalter im Backend sollte anders gemacht werden und nicht über eine Request Variable die durchgeschleift werden muss...
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Falken
Senior Member
Beiträge: 254
Registriert: So 10. Jul 2005, 19:06

Re: Variablenbehandlung in V8 geändert?

Beitragvon Falken » Do 2. Aug 2018, 11:43

Hm, im Backend wird mir nichts angezeigt, auf der Webeite problemlos.
Aber ich kann ja ganz einfach testen ob das Backend die Sprachumschaltung mitbekommt.
<we:ifVar name="lang" match="en" type="global">
<span>Es ist auf englisch geschaltet </span>
</we:ifVar>
Funktioniert problemlos!


Das Problem scheitn mir, dass der Editor im Backend seit Version 8 den kombinierten Namen aus Wort + Variable, also <we:textarea name="testcontent_$lang" />, nicht mehr richtig interpretiert.
Er macht aus testcontent_$lang nunmehr testcontent_

Dies hat seit We3 problemlos funktioniert, ich denke es müsste dich zum rausbekommen sein warum WE8 das nicht mehr kann.

Kann man die Varianle eventuell anders an den fixen Namensteil anhängen, muß man Komma setzen?

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Variablenbehandlung in V8 geändert?

Beitragvon blickfang » Do 2. Aug 2018, 11:50

wenn es daran scheitern sollte, dann setze Dir och ie variabel vorher zu sammen

Code: Alles auswählen

<?php $meinname = 'testcontent_' . $_REQUEST['lang']; ?>
<we:textarea name="$name" />
Du hast nun aber im Test mit

Code: Alles auswählen

<we:ifVar name="lang" match="en" type="global">
eine globale Variable abgefragt und in Deiner Erklrung sprichst Du von einer Request Variable?
Gibt den

Code: Alles auswählen

<we:ifVar name="lang" match="en" type="request">
auch was aus oder hast Du die Request Variable vorher noch in eine Globale gesetzt?
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste