Syntaxes twig pour templates bazar
Attention les syntaxes twig changent bientôt
Des exemples de twig custom avec de nouvelles syntaxes sont en cours de préparation. Exemples disponibles icihttps://github.com/YesWiki/yeswiki/tree/doryphore/docs/examples
{{ fiche.nom_champ }}
Affichage d'un champ liste :
{{ _self.showStr(html.listenom_champ,'label facultatif','class css facultatif ') }}
Formater un champ date
<hr><p class="small">Cette fiche a été mise à jour le {{ html.bf_date_mise_a_jour }}</p> {# {{ _self.showStr(html.bf_date_mise_a_jour,'','') }} - retourne le bon format de date mais dans un <p> #} {# {{ format(fiche.bf_date_mise_a_jour)|raw }} retourne la date au format brut #}
Les textes long
si tu affiches du contenu qui est du html et pas que du texte
ex : <p>{{ _self.showStr(html.listeListeListeprojets,'Cadre','') }}</p>
il va chercher à inclure une balise html de type bloc (genre <div> ou <section>) dans une balise html de type inline (genre <p> ou <span>).
Ceci n'est pas autorisé par html et le navigateur ferme automatique la balise inline avant d'afficher le bloc, ce qui crée un décalage ensuite dans les fermetures des balises div.
L'idéal pour le bloc admin, c'est de taper plutôt ceci:
{{ _self.showStr(html.listeListeListeprojets,'Cadre','','div') }}
- en retirant les balises <p> qui créent le souci et qui sont en fait superflues
- en ajoutant l'option 'div' pour forcer l'usage d'un bloc englobant en <div> plus stable que la balise par défaut en <p> (qui est en inline contrairement à <div>)
Valeur des checkbox
Pour afficher la liste des valeurs cochées sous forme de liste à puce classique, utiliser la syntaxe :{{ _self.showStr(html.listeListeListeprojets,'Cadre','') }}
Pour formater de manière personnalisée les valeurs des checkbox, comme dans l'exemple ci-dessous dans des étiquettes
{% set fieldOptions = (form.prepared|filter(f => f.propertyname == 'checkboxListeViolence')|first).options %} {% for element in fiche.checkboxListeViolence|split(',')|filter(o => o is not empty) %} <span class=" label label-primary"> {{fieldOptions[element]|raw}} </span> {% endfor %}
Utiliser une syntaxe Yeswiki dans le template twig
{{ format('{{include page="' ~ fiche.id_fiche ~ '"}}') }}
{{ format('{{section visibility="@admins"}}')|raw }} ... {{ format('{{end elem="section"}}') }}
!! Suite bug sur twig tableau de bord kimiyo (04/04/2022)
il vaut mieux remplacer le end elem
{{format('{{end elem="col"}}')}} par </div> {{format('{{end elem="grid"}}')}} par </div> {{format('{{end elem="accordion"}}')}} par </div> {{format('{{end elem="label"}}')}} par </span> {{format('{{end elem="panel"}}')}} par </div></div></div>
Pour trouver la bonne syntaxe, regarde le fichier tools/templates/actions/end.php
Afficher des fiches liées
{{ format('{{bazarliste id="5" template="blog-custom" champ="bf_date" header="false" nb="10" ordre="desc" show_author="1" show_date="1" query="listefiche8=' ~ fiche.id_fiche ~ '"}}')|raw }}
Redimensionner les images
dans un tpl.html<img src="<?php echo redimensionner_image('nom-du-fichier-image-dans-le-dossier-files.ext','',300,200,'fit');?>">
ici : 300 = largeur 300px, 200 = hauteur 200px, 'fit' = l'image est contenu dans 300 x 200, si tu mets 'crop', l'image sera coupée
en twig ce serait
<img src="{{ urlImage({fileName:'nom-du-fichier-image-dans-le-dossier-files.ext',width:300,height:200,mode:'fit'}) }}">
Refaire le point sur l'affichage des images avec twig
Sinon pour une image rangée dans custom/images/mon-image.jpg qu'il n'y a pas besoin de redimensionner, tu peux mettre
<img src="<?php echo $this->wiki->getBaseUrl() ; ?>/custom/images/mon-image.jpg">
Exemples
Fichiers à placer dans le dossier /custom/templates/bazarexemple_template.zip