Categories > TinyButStrong general (FR) >

changer balise publipostage

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Maxime
Date: 2010-10-28
Time: 12:55

changer balise publipostage

Skrol29,

Actuellement les balises de publipostage sont encadrées par des crochets ouvert et fermé
Je souhaite que se soit normalisé comme sous openoffice avec des inférieurs et supérieurs
Sais tu où je peux changer cela ??
Merci d'avance
Maxime
By: Skrol29
Date: 2010-10-28
Time: 14:30

Re: changer balise publipostage

Salut Maxime,

Tu peux tout à fait changer le délimiteur de balise TBS, cela se fait lors de l'instanciation de la classe.
( voir http://www.tinybutstrong.com/fr/manual.php#php_instanciate )

Ceci-dit, il est fortement déconseillé de choisir les même délimiteurs que le formatage de ton document. C'est à dire que pour HTML et XML, il ne faut pas choisir les délimiteurs < et >.
D'une part cela va ralentir la recherche balise par TBS car ces délimiteurs sont présents partout. Et d'autre part tu ne pourras plus lire convenablement tes modèles puisque OpenOffice ou ton navigateur von justement masquer ces balises. Sous OpenOffice tu ne pourra même pas les coder directement car le logiciel va les échapper. Il te faudrait aller les coder dans le XML à la place.
By: Maxime
Date: 2010-10-28
Time: 15:12

Re: changer balise publipostage

Skrol29

Merci pour ses infos
Dans ce cas comment je peux faire pour que se soit le mieux pour le user
car le but était de donner une bdd (ou fichier xls) avec les champs et que le user puisse aménager ses publipostages lui même

Merci d'avance
Maxime
By: Skrol29
Date: 2010-10-28
Time: 15:55

Re: changer balise publipostage

Publipostage ODT, HTML ou Email ?
By: Maxime
Date: 2010-10-28
Time: 15:59

Re: changer balise publipostage

en fait c'est un publipostage odt
By: Skrol29
Date: 2010-10-28
Time: 16:16

Re: changer balise publipostage

Ben les crochets c'est super bien, non ? Certains préfères les accolades : {champ} , ou même {{champ}}.

Si tu veux donner beaucoup de latitudes à tes utilisateurs pour la construction des modèles, tu devras leur donner quelques notions de template TBS.
Par contre, si tu veux juste leur donner quelques champs d'un bloc à placer où ils veulent,  alors tu peux faire une traduction personnelle avant la fusion.
Exemple :
$traduction = array('nom'=>'pers_nom', 'prenom'=>'pers_prenom', 'date'=>'pers_date_naiss');

foreach ($traduction $cle=>$champ) {
  $TBS->Source = str_replace( $TBS->Source , '['.$cle , '[b.'.$champ );
}

$TBS->MergeBlock('b', 'mysql', 'SELECT pers_nom, pers_prenom, pers_date_naiss FROM table1');

Ainsi tes utilisateurs pourrons places les champs [prenom], [nom] et [date] avec ou sans paramètre TBS.
By: Maxime
Date: 2010-10-28
Time: 19:49

Re: changer balise publipostage

Ce que je souhaite faire en fait,
c'est que l'utilisateur puisse créér un modèle de publiostage
Donc j'ai l'intention de créér un fichier type excel avec les entêtes de colonnes
pour que ce dernier puisse insérer lui même les champs

donc c'est pour cela que je souhaites que le parser puisse remplacer les <monchamp>

Tout cela pour que se soit le plus simple possible pour les utilisateurs

Maxime
By: Skrol29
Date: 2010-10-29
Time: 00:03

Re: changer balise publipostage

Si tu veux donner la possibilité à l'utilisateur de créer un template à sa guise, avec des blocs, des sections conditionnelles, des champs comme il veut, alors ton utilisateur devra connaitre les rudiments des blocs et des paramètres sous TBS. À partir de là, ce n'est pas très compliqué non plus de lui demander de comprendre les champs liés aux blocs.
Si par exemple, on suppose que ton code récupère les données du fichier Excel dans un tableau PHP associatif que l'on nomme $data, et que tu lances une fusion systématique sur un bloc nommé 'd' :
$TBS->MergeBlock('b', $data);
À patrir de là tu n'as plus qu'à expliquer à tes utilisateurs qu'ils doivent utiliser les champs [d.colone1], [d.colonne2], ... où colonne1 et colonnes2 sont les noms des entêtes de colonnes dans le fichier Excel.
Si tu n'aimes pas [d.colone1], tu peux choisir {d.colone1} ou {{d.colone1}} ou autre. Mais <d.colone1> ça ne marchera pas, car comme expliqué dans un message précédent, <d.colone1> sera codé &lt;d.colone1&gt; dans le source XML du template. Ce sera alors un peu dure à fusionner pour TBS.
Ceci-dit tu peux essayer en définissant ces délimiteurs :
$TBS = new clsTinyButStrong('&lt;,&gt;');
Mais perso je trouve que ça craint, il faut s'attendre à des effets de bord problématiques.
Il vaut mieux choisir des délimiteurs qui ne se percutent pas avec les délimiteurs XML, comme font tous les moteurs de template.