0
votes

variables non ou pas toutes remplacées

Dans le modèle suivant, j'utilise trois variables: ga_tracking_id code>, cc_popup_bgcol code> et cc_popup_txtcol code>

p>

<script src="fileadmin/templates/js/cookieconsent.min.js" data-cfasync="false"></script>
<script>
  function loadGAonConsent(){
    var gs = document.createElement("script");
    gs.async = true;
    gs.src = "https://www.googletagmanager.com/gtag/js?id={GA_TRACKING_ID}";
    var h = document.getElementsByTagName("head")[0];
    h.appendChild(gs, h);
    gs.onload = function (){
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments)};
      gtag('js', new Date());
      gtag('config', '{GA_TRACKING_ID}', { 'anonymize_ip': true });
      testfunc('{CC_POPUP_BGCOL}', '{CC_POPUP_TXTCOL}');
    }
  }

  if(document.cookie.split(';').filter(function(item){return item.indexOf('cookieconsent_status=allow') >= 0}).length)
    loadGAonConsent();

  window.cookieconsent.initialise({
    "palette": {
      "popup": {
      "background": "{CC_POPUP_BGCOL}",
      "text": "{CC_POPUP_TXTCOL}"
      },
      "button": {
      "background": "#4b81e8"
      }
    },
    "theme": "classic",
    "type": "opt-in",
    "content": {
      "policy": "policy",
      "message": "message",
      "deny": "deny",
      "allow": "allow",
      "link": "link",
      "href": "#"
    },
    onStatusChange:function(status,chosenBefore){
      if(this.hasConsented())
        loadGAonConsent();
    }
  });
</script>


0 commentaires

3 Réponses :


1
votes

Le fluide ne peut pas savoir si vos supports bouclés appartiennent au fluide ou à JavaScript. Donc, il s'arrête s'il ne peut pas résoudre un.

Essayez d'ajouter {whest-> f: format.raw ()} , dans votre cas '{cc_popup_bgcol-> f: format.raw ()}' et ainsi de suite.


4 commentaires

Ça ne fonctionne pas: code arrière-plan ":" {cc_popup_bgcol-> f: format.raw ()} ", / code


L'avez-vous utilisé sur toutes les variables?


Oui mais maintenant, il fonctionne avec {cc_popup_bgcol}


Hmm, pas si agréable de lire dans le code mais bon à savoir. Quoi qu'il en soit, @jonas a raison, les supports bouclés non fluides sont terribles et doivent être évités. J'ai fait de moi une fenêtre personnalisée pour rendre des variables fluides à un objet JS.



1
votes

Si c'est un modèle de fluide, je vous recommande vivement de ne pas compter sur le remplacement de vos variables. Dans un modèle qui comprend JavaScript (surtout avec {), l'analyseur de fluide est très peu fiable. Même si vous avez travaillé, cela ne signifie pas que cela fonctionnera après une mise à jour de fluide / typo3 ou même sur un serveur différent.

Évitez-le si possible.

Je suggère de supprimer les marqueurs de variable de Votre JavaScript et les mettez-les plutôt en HTML et chargez-les via JavaScript à partir de là.

comme exemple: xxx

voir https://developer.mozilla.org/en-us/docs/learn/html/howto / Use_data_attributes


1 commentaires

Je suis d'accord avec Jonas Eberle que la plupart des JS devraient être sur un fichier .js et inclus dans le modèle (avec typoscript ou avec une étiquette de script dans le modèle de fluide). Les variables JS doivent également être définies dans le modèle Typoscript (à l'aide des propriétés dédiées de la page). Vous pouvez également lire cette partie de la documentation: docs.typo3.org/m/typo3/guide-extbasefluid/master/en-us/fluid / ... où la question spécifique de JS en fluide est adressée, avec toutes les solutions de contournement possibles.



0
votes

Vous pouvez tromper le fluide en mode analyse en plaçant une étiquette de fluide à l'intérieur de la balise de script. Ce faisant, j'essaie toujours de séparer les définitions variables du code JavaScript réel autant que possible.

Essayez quelque chose lier ceci. xxx


0 commentaires