Frolipon / mosaico

Badsender builder - Responsive Email Template Editor based on mosaico http://builder.badsender.com/
http://agence.badsender.com/production/email-builder/
GNU General Public License v3.0
2 stars 2 forks source link

variables inside the template file #92

Closed Frolipon closed 7 years ago

Frolipon commented 7 years ago

La variable globale est bien interprété dans tes tags mais PAS dans des attributs

Hello,

J'ai un souci avec une fonctionnalité proposée par Mosaico suite à une question de ma part ( https://github.com/voidlabs/mosaico/issues/273 )

L'objectif est le suivant: Définir une dropdown appelée "myBrand" . Sur base de la valeur choisie dans cette Dropdown, pouvoir définir un ensemble de style graphique dans les blocs qu'on insère dans l'interface WYSIWYG. Exemple: Le client possède plusieurs sous-marques, et ne souhaite pas que les commerciaux puissent faire n'importe quoi avec la charte graphique. Donc sur base de la sélection de la sous-marque, l'ensemble des codes couleurs sera déjà défini.

Mosaico propose 2 solutions:

Leur solution consiste à mettre en place un if / else dans l'attribut color comme suit: Définir dans le template la propriété myBrand: template { label: Page; properties: myBrand=brand1; }

Et définir dans l'attribut color dans les blocs: color: @[myBrand eq "brand1" ? '#110000': myBrand eq "brand2" ? '#001100' : '#000011']

En testant cette solution, elle ne fonctionne pas. Le fichier de test test_color_hard ci en pièce jointe permet de tester ceci. Il y a un bloc conditionnel qui s'affiche en fonction de la variable myBrand (afin de tester que celle-ci soit bien prise en compte) et un texte qui devrait avoir une couleur définie en fonction de la variable choisie. Or en téléchargeant l'HTML depuis le builder, le code: color: @[myBrand eq "brand1" ? '#110000': myBrand eq "brand2" ? '#001100' : '#000011'] reste en dur dans le code HTML, sans prendre en compte les instructions qui sont dedans.

J'ai testé une solution alternative en fixant la variable color en dur, et en appelant le code spécifique Mosaico pour overrider cette variable. Cette technique est utilisée pour la plupart des templates, la seule différence avec l'utilisation standard de la technique est l'appel if / else aux couleurs. Technique standard: On définit une variable de couleur: chosenColor { widget: color; }

Et dans les blocs on a : color: #ffffff; -ko-color: @chosenColor;

Pour les tests de couleurs variables en fonction du paramètre myBrand, j'ai testé: color: #ffffff; -ko-color: @[myBrand eq "brand1" ? '#110000': myBrand eq "brand2" ? '#001100' : '#000011'];

En testant cela, j'ai une erreur lorsque je tente de créer un email avec ce template: image

L'objectif de ce ticket est de voir où ça coince par rapport à la solution proposée par Mosaico, et, si nécessaire, revenir vers eux en leur demandant de l'aide.

test_color.zip

Hiswe commented 7 years ago

@Frolipon À tester

On peut donc surcharger une variable globale par une variable locale.

Mailing : https://badsender-test.herokuapp.com/editor/5893660d3e65af000cac8df2

Template : https://badsender-test.herokuapp.com/wireframes/58935a873e65af000cac8de2

Hiswe commented 7 years ago

@Frolipon Je te laisse fermer le ticket.

Pour information le code du template “témoin”

https://github.com/goodenough/mosaico/tree/february-2017/templates/sub-themes

En zip le code tel que fourni à Voidlab

sub-themes.zip

Frolipon commented 7 years ago

Bon, j'ai tenté sur un template plus complexe, mais je me suis cassé les dents dessus. Quand tu auras un peu de temps, on pourra checker ce qui ne va si c'est OK pour toi

Hiswe commented 7 years ago

@Frolipon Pas de problèmes.

J'ai vraiment essayé de détailler la logique dans sub-theme. Si ce n'est pas clair là dedans ça pourrait être intéressant de voir pourquoi et d'améliorer ce template.

Ça pourrait servir de fichier de documentation à terme

Frolipon commented 7 years ago

Vu, fermé, thanks :-)