Text Snippets an Javascript übergeben

Hey ho,

gibt es adäquate Mittel ein Text-Snippet an Javascript/jQuery zu übergeben?

Damit meine ich: Speichere ein Text-Snippet ({s namespace =„foo“ name=„bar“}barfoo{/s}) in einer JS-Variable. Ähnlich der Speicherung von Smarty-Variablen in einer JS-Variable (funktioniert in tpl-Dateien).

Wenn dies nicht funktioniert, bliebe nur das Auslesen des Snippets aus der Datenbank unter berücksichtigung der aktuellen Sprache? Dann in PHP/Smarty als Variable speichern und dann in einer TPL-Datei die Smarty-Variable einer JS-Variable zuordnen…

 

Gibt es hier einen schönen Weg?

 

VG DST

 

Willst du das direkt in dein Javascript schreiben? Dann müsstest du das JS durch smarty erzeugen lassen.

Ansonsten verstehe ich die Frage nicht. Du kannst doch die Snippets in den Templates ausgeben und dann darauf per JS/jQuery zugreifen, warum sollte das mit Snippets anders gehen als mit Smarty-Variablen?

siehe z.B. shopware/index.tpl at 5.1 · shopware/shopware · GitHub

1 „Gefällt mir“

Mal angenommen ich möchte das in einer ausgelagerten JS-Datei verwenden.
 

if(x > y) {
  $('Element').html({s namespace="foo" name="bar1"}barfoo{/s});
} else {
  $('Element').html({s namespace="foo" name="bar1"}barfoo{/s});
}

geht das dann? das JS-Krams wird doch ausgeführt, nachdem der ganze PHP und Smartykram durch ist?

Nein das geht nicht, da die ausgelagerten JS-Dateien nicht durch smarty verarbeitet werden.

Ich würde in dem Fall die benötigten Snippets in einer *.tpl ausgeben und z.B. an diesen Block appenden: frontend_index_header_javascript_inline (siehe github link im vorherigen Post)

z.B. so:

var mySnippets = {ldelim}
    'bar1': '{s name="bar1"}foobar1{/s}',
    'bar2': '{s name="bar2"}foobar2{/s}'
{rdelim};

Dann kannst du mit $(‘deinElement’).html(mySnippets.bar1) den Inhalt setzen.