Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Javascript in Content einbetten...

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Javascript in Content einbetten...
    am: 14. Februar 2012, 21:41:47
    Hallo Community.
    Ich habe einen Bike-Rahmenhöhenberechner aufgrund von Javascript gebaut.
    Der Rahmenhöhenrechner ist im Contentbereich eingebaut.
    Da ich den Content auch in der Thickbox aufrufen möchte, habe ich den Javascript-Code testweise
    • testweise in den Content direkt eingebaut (Textfeld im Editor im Quelltextmodus)
    • testweise in content.html eingebaut

    In beiden Fällen wird das Sonderzeichen "&" welches ich für den logischen and-Operator benötige in HTML-Entities umgewandelt und der Code wird unbrauchbar.
    In die header.php kann ich's nicht einbauen, denn dann würde der aufruf in der Thickbox den Code nicht mitladen.

    Versuche mich jetzt schon 2, in Worten, zwei verflixte Stunden.  :’-(
    Hat einer eine erhellende Idee ?

    Grüsse,
    noRiddle

    Linkback: https://www.modified-shop.org/forum/index.php?topic=18247.0
    Managed Server

    kyhn

    • Mitglied
    • Beiträge: 113
    Re: Javascript in Content einbetten...
    Antwort #1 am: 14. Februar 2012, 21:50:06
    {literal}....{/literal} in der content.html

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Javascript in Content einbetten...
    Antwort #2 am: 14. Februar 2012, 21:59:35
    Nö, hatte ich bereits probiert, geht seltsamerweise nicht.

    noRiddle

    kyhn

    • Mitglied
    • Beiträge: 113
    Re: Javascript in Content einbetten...
    Antwort #3 am: 14. Februar 2012, 22:07:58
    und das ding in die template/DEIN_TEMPLATE/javascript/general.js.php einbauen?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Javascript in Content einbetten...
    Antwort #4 am: 14. Februar 2012, 22:12:35
    Danke für die Versuche  ;-)
    Auch schon gedacht, dann wird der Script aber nicht in der Thickbox mitgeladen,
    das ist ja mein Problem, sonst hätte ich's längst gelöst.

    Ich hoffe ich muß nicht einen Riesen Aufwand machen und über die shop_content.php und die popup_content.php gehen.

    Keiner sonst 'ne Idee ?

    Grüsse,
    noRiddle

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Javascript in Content einbetten...
    Antwort #5 am: 14. Februar 2012, 22:19:51
    Frag mal h-h-h oder Cybercosmonaut, einer von den beiden hatte hier letztens das richtige preg_match() für den Outputfilter, damit insbesondere diese '&&' erhalten bleiben.

    Gruß
    Ronny

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Javascript in Content einbetten...
    Antwort #6 am: 14. Februar 2012, 22:30:26
    Danke Ronny, du hast mich wahrrscheinlich wenigstens auf den richtigen Weg gebracht.
    An den outputfilter hab' ich noch gar nicht gedacht.

    Allerdings dürfte der "&&" eigentlich nicht ersetzen mit "&&", wenn ich die Regex richtig verstehe:
    Code: PHP  [Auswählen]
    $tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z0-9]+;))/i", "&", $tpl_output);

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Javascript in Content einbetten...
    Antwort #7 am: 14. Februar 2012, 22:51:10
    Quatsch !

    Die Regex macht genau das, ein "&" welchem nicht die in der Klammer aufgeführten Zeichen folgen in ein "&" umwandeln.
    Die schreib' ich mir jetzt leicht um.

    Danke nochmals, Ronny, dein Tip war der richtige Weg.

    Grüsse,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Javascript in Content einbetten...
    Antwort #8 am: 14. Februar 2012, 23:09:01
    Wen's interessiert:
    So geht's:
    Code: PHP  [Auswählen]
    $tpl_output = preg_replace("/&(?!(amp;|&??|#[0-9]+;|[a-z0-9]+;))/i", "&", $tpl_output);

    Dadurch werden zwei "&" hintereinander nicht umgewandelt.
    Das doppelte Fragezeichen sorgt für eine ungreedy Suche.

    Bei Regex weiß man ja nie so genau ob die Korrekt sind, hoffe ist kein Fehler drin, funktioniert jedenfalls.

    Grüsse,
    noRiddle

    Nachtrag:
    Um es perfekt zu dokumentieren:
    In /includes/classes/Smarty_2.6.26/plugins/outputfilter.note.php  das hier
    Code: PHP  [Auswählen]
      //BOF - web28 - making output W3C-Conform: replace ampersands, rest is covered by the modified shopstat_functions.php  
      //$tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z]+;))/i", "&", $tpl_output);
      $tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z0-9]+;))/i", "&", $tpl_output);
      //EOF - web28 - making output W3C-Conform: replace ampersands, rest is covered by the modified shopstat_functions.php
     

    ersetzen mit dem hier:
    Code: PHP  [Auswählen]
      //BOF - web28 - making output W3C-Conform: replace ampersands, rest is covered by the modified shopstat_functions.php  
      //$tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z]+;))/i", "&", $tpl_output);
      //BOC changed regex to make double & possible in embeded javascript, noRiddle
      //$tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z0-9]+;))/i", "&", $tpl_output);
      $tpl_output = preg_replace("/&(?!(amp;|&??|#[0-9]+;|[a-z0-9]+;))/i", "&", $tpl_output);
      //EOC changed regex to make double & possible in embeded javascript, noRiddle
      //EOF - web28 - making output W3C-Conform: replace ampersands, rest is covered by the modified shopstat_functions.php
     

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Javascript in Content einbetten...
    Antwort #9 am: 22. Februar 2012, 12:29:11
    @noRiddle

    mit Deiner Regex werden bei mir einzelne & nicht mehr umgewandelt.

    Mit der Regex von Tekin funktioniert es:

    http://www.modified-shop.org/forum/index.php?topic=17710.msg169031#msg169031

    Mit diesem Beispiel getestet:
    Code: PHP  [Auswählen]
    Das ist ein Text mit && Zeichen & € Zeichen & noch ein &

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Javascript in Content einbetten...
    Antwort #10 am: 22. Februar 2012, 16:29:30
    Korrekt, danke.
    Habe versäumt zu testen was du nun getestet hast und hatte mich damit zufrieden gegeben, daß mein Javascript funktionierte.  :oops:

    Seltsamerweise hat es an dem Tag wo ich es getestet habe mit einem Fragezeichen (greedy modifier) nicht funktioniert, da wurde das erste "&" nicht ersetzt, das zweite jedoch schon.
    Heute teste ich erneut und es reicht auch ein "?".  :nixweiss:

    Stellt sich nur noch die Frage ob cYbercOsmOnauT Recht hat, daß innerhalb von CDATA am Besten gar kein "&" umgewandelt werden sollte.
    In dem Fall würde meine Regex (auch mit einem "?") funktionieren  :-D .

    Grüsse und nochmals Danke,
    noRiddle

    P.S.
    Ich gehe davon aus, daß das in einen neuen SP oder in eine neue Version übernommen werden wird.
    Solange sollte man vielleicht die Threads zusammenführen, damit niemand verwirrt wird.
    Vor allem ist wichtig, daß Javascript welches innerhalb der Textareas in categorgies.php und content_manager.php benutzt wird, in CDATA gebettet wird. Ansonsten werden die "&" natürlich weiterhin in das entsprechende html-entity umgewandelt.
    15 Antworten
    9597 Aufrufe
    15. Juli 2014, 08:34:54 von Justin Case
    6 Antworten
    5681 Aufrufe
    13. März 2018, 15:49:46 von eronweb
    6 Antworten
    2811 Aufrufe
    03. November 2015, 16:16:32 von Bonner
               
    anything