Compare commits

...

36 Commits

Author SHA1 Message Date
98a2f45e54 Commit pending changes 2024-11-05 22:27:26 +01:00
chankalan
bceefead70 Merge branch 'master' of ssh://forge.april.org:222/Chapril/www.chapril.org-spip 2022-11-07 16:34:01 +01:00
chankalan
4f6d1a1768 lien vers l'article registre de modération dans le pied de page 2022-11-07 16:32:57 +01:00
e42b49053c
Page services: correction de l'ancre par service
Merci à Vincent Calame et Jean pour leurs explications :)
2022-11-02 08:27:21 +01:00
308fb4b54c
Page services: ajout d'une ancre par service 2022-11-01 17:53:16 +01:00
8bb7a1942f Mise à jour de 'inclure/head.html'
Ajout du champ og:image:alt pour des questions d'accessibilité
2022-08-17 16:09:19 +02:00
5805c6a22c Rajout du tri par numéro de titre 2022-04-13 11:10:53 +02:00
chankalan
4f753c8b70 liste services sur 2 colonnes si possible 2022-03-07 14:31:34 +01:00
chankalan
be9134d2e5 header prêt deès 512px 2022-03-07 14:14:49 +01:00
chankalan
bb0ed4a030 spip_logo sans s pour spip4 2022-03-07 14:08:38 +01:00
chankalan
fe156425ae fix formulaire inscription éclaté en petit écran 2022-03-07 13:56:20 +01:00
chankalan
8190de6f30 corrections styles .presentation (Antoine) 2022-02-14 12:51:26 +01:00
chankalan
96afbc099a revoir .presentation en petit écran 2022-02-11 23:25:33 +01:00
chankalan
cee1182cd8 nettoyage : pas de balise html sans contenu 2022-02-11 23:07:23 +01:00
chankalan
e502cc85f8 un id pour cibler #nous_suivre sur sommaire 2022-02-11 22:55:21 +01:00
chankalan
21bced2c24 formatage standard (fix impossible de compresser les css) 2022-02-11 22:53:02 +01:00
chankalan
0602a88ca8 récupérer les gros boutons (pitchum) 2022-02-11 22:51:53 +01:00
chankalan
3dec2040ff Revert "commenter quelques styles pour liste services"
This reverts commit c317305933.
2022-02-07 08:56:47 +01:00
chankalan
e2a0ec5dd0 liste services mep 2022-02-04 00:06:30 +01:00
chankalan
71de3445f5 liste services : colonnes dans .listes 2022-02-03 23:55:25 +01:00
chankalan
337b74dc81 oups liste service 2022-02-03 18:14:59 +01:00
chankalan
60bc944674 liste service : position icones 2022-02-03 18:12:58 +01:00
chankalan
4ba1aaaad3 liste services : taille icone 2022-02-03 17:56:50 +01:00
chankalan
8f6ed45046 formulaire abonnement max-width 2022-02-02 14:04:12 +01:00
chankalan
5e1cf3319a liste services : commenter aussi les styles hover 2022-02-02 11:55:17 +01:00
chankalan
c317305933 commenter quelques styles pour liste services 2022-02-02 11:52:48 +01:00
chankalan
28587e5512 utiliser les crayons page sommaire + mise en forme liste services
(Antoine)
2022-02-01 10:30:56 +01:00
chankalan
3a25b5ad40 formulaire abomailman avec placeholder + permettre html5 en config de
SPIP 3
2022-01-05 10:27:36 +01:00
chankalan
4e73e66d8a bonnes balises insert head et css dans inclure head 2022-01-04 17:34:52 +01:00
chankalan
2e436b8604 déplacer une div dans le form abomailman 2022-01-04 17:26:43 +01:00
chankalan
41e9c7d75c le champ PS sous les 3 engagements
pouvoir inclure <formulaire|abomailman_mini_une_liste|id=1> :
surcharge du formeulaire + styles adaptés
2022-01-02 22:36:37 +01:00
chankalan
0cec8d5267 BOUCLE sans S 2022-01-02 19:07:10 +01:00
352a299300 Ajout du lien vers status.chapril.org dans la bannière du haut
https://agir.april.org/issues/5232
2021-12-05 10:34:38 +01:00
root
b041aac70d CSS pour l'adaptation de la taille des images générées par le modèle <media>, intervention sur <strong> quand il est inclus dans une liste à puces 2021-04-28 19:12:31 +02:00
dd2c7c2cec Added robot allow for microbloging meta tag (#5108). 2021-04-21 21:48:31 +02:00
5f4a18e28e Added card tags meta for microbloging (#5108). 2021-04-10 18:40:28 +02:00
13 changed files with 1622 additions and 1136 deletions

View File

@ -108,3 +108,158 @@
text-align: center;
clear: both;
}
/*************************
* Surcharges particulières
**************************/
.contenu-texte .suitedarticles ul.spip strong {
margin: 0;
display: inline;
}
/*************************
* Classes introduites par le plugin media
**************************/
.media_image img {
max-width: 100%;
height: auto;
}
/*************************
* formulaires
* ***********************/
.formulaire_spip.formulaire_abomailman_mini_une_liste legend {
display: none;
}
.formulaire_spip.formulaire_abomailman_mini_une_liste fieldset {
border: 0;
line-height: 1.5;
}
.formulaire_spip.formulaire_abomailman_mini_une_liste ul {
list-style: none;
}
.formulaire_spip.formulaire_abomailman_mini_une_liste .abonnement {
display: flex;
max-width: 400px;
}
.formulaire_spip.formulaire_abomailman_mini_une_liste .abonnement > div {
flex-grow: 1;
}
.formulaire_spip.formulaire_abomailman_mini_une_liste input[type="text"],
.formulaire_spip.formulaire_abomailman_mini_une_liste .boutons input{
display: block;
width: 100%;
line-height: 1.8;
padding: 0.3rem 0.6rem;
border-radius: 10px 0 0 10px;
border: 0;
box-sizing: border-box;
box-shadow: 0 0 1px 0px rgba(0,81,132,0.5);
}
.formulaire_spip.formulaire_abomailman_mini_une_liste .boutons {
text-align: right;
}
.formulaire_spip.formulaire_abomailman_mini_une_liste input[type="submit"] {
width: auto;
background-color: #2e5281;
box-shadow: 0 0 5px 0px rgba(0,81,132,0.5);
color: white;
border-radius:0 10px 10px 0;
cursor: pointer;
}
.formulaire_spip.formulaire_abomailman_mini_une_liste input[type="submit"]:hover {
background-color: #ff5e00;
}
.reponse_formulaire_erreur {
color: #ee5d5d;
}
.reponse_formulaire_ok {
color: #005184;
}
/**************************
* liste preésentation des services (accueil)
* ************************/
.presentation article .services {
}
.presentation article ul {
list-style: none;
padding: 0;
margin: 0 2em 2em 0;
}
.presentation article ul li {
margin-bottom: 0.7em;
}
.presentation article ul li a {
display: flex;
align-items: center;
line-height: 1.4;
}
.presentation article ul a .fa {
color: #7DBDFD;
width: 30px;
padding: 0 0.5em 0 0;
text-align: center;
font-size: 1.3em;
}
.presentation article ul a:hover .fa {
color: #ff5e00;
}
.presentation article ul.spip:first-child li:first-child a::before {
content: 'NOUVEAU !';
background-color: yellow;
position: absolute;
color: black;
margin-top: -5em;
padding: 0.2em 1em;
font-size: 0.8em;
border-radius: 5px;
margin-left: -3em;
transform: rotate(-8deg);
}
@media screen and (min-width: 1440px) {
.presentation article .services {
display: flex;
}
}
@media screen and (min-width: 768px) {
.presentation article .services {
display: block;
}
.presentation article .services ul:first-child {
margin-bottom: 0;
}
.presentation article ul {
column-count: 2;
}
}
@media screen and (min-width: 540px) {
.presentation article .services {
display: flex;
}
}
/**************************
* Campagne
* ************************/
.campagne img {
height: auto;
width: 100%;
}
@media screen and (min-width: 768px) {
.presentation.campagne article ul {
column-count: 1;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
#CACHE{0}
<div class="formulaire_spip formulaire_#FORM" id="formulaire_#FORM[_(#ENV{id_abomailman})]">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV*{editable}|oui)
<form method='post' action='#ENV{action}'>
#ACTION_FORMULAIRE{#ENV{action}}
#SET{erreurs,#ENV**{erreurs}|table_valeur{la_demo}}
<div class="abonnement">
<div class="editer_email obligatoire[ (#GET{erreurs}|oui)erreur]">
[<span class='erreur_message'>(#GET{erreurs})</span>]
<input name="email" id="email" type="text" placeholder="Votre adresse courriel" />
</div>
[(#REM) Piege a robots spammeurs, du moins on essaie]
<p style="display:none;">
<label for="nobot_abomailman"><:antispam_champ_vide:></label>
<input type="text" class="text" name="nobot" id="nobot_abomailman" value="#ENV{nobot}" size="10" />
</p>
<p class="boutons"><input type="submit" class="submit" value="<:bouton_valider:>" /></p>
</div>
</form>
]
</div>

View File

@ -0,0 +1,94 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('base/abstract_sql');
// chargement des valeurs par defaut des champs du formulaire
function formulaires_abomailman_mini_une_liste_charger_dist($id_abomailman = ""){
//initialise les variables d'environnement pas defaut
$valeurs = array('email');
// On verifie que la liste est bien accessible
if (! sql_getfetsel('id_abomailman','spip_abomailmans','id_abomailman ='.intval($id_abomailman).' AND desactive = 0')) {
spip_log("Le numero de liste n'est pas valable : $id_abomailman","abomailmans");
$valeurs['message_erreur'] = _T("abomailmans:liste_non_existante");
}
return $valeurs;
}
function formulaires_abomailman_mini_une_liste_verifier_dist($id_abomailman = ""){
//initialise le tableau des erreurs
$erreurs = array();
// Faire une fonction de verif sur le mail pour validite
$email = _request('email');
if($email == ''){
$erreurs['erreur_email'] = _T("abomailmans:email_oublie");
spip_log("Aucun email n'est insere","abomailmans");
}
else{
include_spip('inc/filtres'); # pour email_valide()
if (!email_valide($email)){
$erreurs['erreur_email'] = _T("abomailmans:email_valide");
spip_log("Email non valide $email","abomailmans");
}
else{
spip_log("Email = $email;","abomailmans");
}
}
//message d'erreur
if (count($erreurs)) {
$erreurs['message_erreur'] .= _T('abomailmans:verifier_formulaire');
}
return $erreurs; // si c'est vide, traiter sera appele, sinon le formulaire sera resoumis
}
function formulaires_abomailman_mini_une_liste_traiter_dist($id_abomailman = ""){
include_spip('inc/abomailmans');
$nom = _request('nom');
$email = _request('email');
// Antispam basique :
// si l'input invisible a ete renseigne, ca ne peut etre qu'un bot
if (strlen(_request('nobot'))){
return array('message_erreur'=>_T('abomailmans:erreur_nobot'));
}
$message = null;
// on initialise l'envoi
// on traite chaque liste via une fonction reutilisable ailleurs
// on passe abonnement a true d'office
$traiter=abomailman_traiter_abonnement($id_abomailman,true);
$titre = $traiter[0];
$proprio_email=$traiter[1];
$liste_email=$traiter[2];
$sujet=$traiter[3];
$body="$nom - $email " . $traiter[4];
$headers=$traiter[5];
if (abomailman_mail($nom, $email, $proprio_email, $liste_email, $sujet, $body, $headers)){
$message_listes .= "<p><strong>$titre</strong><p>";
}else{
$message_listes .= "<p><strong>". _T('pass_erreur_probleme_technique')."</strong></p>";
$probleme=true;
}
$message .= "". _T("abomailmans:message_confirmation_unique_a");
$message .= $message_listes;
$message .= "<p class='reponse_formulaire reponse_formulaire_ok'>" . _T("abomailmans:message_confirm_suite") . "</p>";
if ($probleme==false)
return ['message_ok' => $message];
else
return ['message_erreur' => $message_listes];
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
img/social-accueil.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -3,12 +3,13 @@
[(#REM) navigation]
<nav id="navigation">
<a href="#URL_SITE_SPIP">Accueil</a>
<BOUCLES_services (RUBRIQUES) {id_rubrique=3}>
<BOUCLE_services (RUBRIQUES) {id_rubrique=3}>
<a href="#URL_RUBRIQUES">#TITRE</a>
</BOUCLES_services>
</BOUCLE_services>
<BOUCLE_pages(ARTICLES){id_rubrique=5}{par num titre}>
<a href="#URL_ARTICLE">#SURTITRE</a>
</BOUCLE_pages>
<a href="https://status.chapril.org">État des services</a>
</nav>
[(#REM) bouton mobile - fermer + ouvrir]
<a href="#navigation" class="menu-mobile-ouvre" aria-label="open navigation">Fermer</a>

View File

@ -3,7 +3,30 @@
<meta name="viewport" content="width=device-width, initial-scale=1" />
[(#REM) 2. appel du nom de site avec filtre ]
<meta name="description" content="[(#DESCRIPTIF_SITE_SPIP|couper{150}|textebrut)]"/>
[(#REM) Feuilles de style perso]
<link href="#CHEMIN{css/perso-modif.css}" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="#CHEMIN{css/favicon.ico}" type="image/x-icon">
<link href="#CHEMIN{css/ajout.css}" rel="stylesheet" type="text/css" />
#INSERT_HEAD_CSS
[(#REM)
Balise permettant aux plugins d'inserer des appels javascript ;
4. C'est ici que SPIP va inserer l'appel de la librairie jQuery
5. Et appeler a la fin compacte_head pour agreger et compacter tout le head dans des fichiers statiques si l'option est cochee dans Configuration
]
#INSERT_HEAD
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:site" content="@aprilorg"/>
<meta name="twitter:creator" content="@aprilorg"/>
<meta name="twitter:image:alt" content="Bannière du Chapril"/>
<meta name="twitter:title" content="Chapril : utilisez des services libres et éthiques"/>
<meta name="twitter:image" content="https://www.chapril.org/sites/v2.chapril.org/squelettes/img/social-accueil.jpg"/>
<meta property="og:title" content="Chapril : utilisez des services libres et éthiques"/>
<meta property="og:type" content="article"/>
<meta property="og:url" content="https://www.chapril.org"/>
<meta property="og:image:alt" content="Bannière du Chapril"/>
<meta property="og:image" content="https://www.chapril.org/sites/v2.chapril.org/squelettes/img/social-accueil.jpg"/>

View File

@ -2,17 +2,20 @@
<footer>
[(#REM) navigation pied de page]
<ul>
<BOUCLES_menu_footer (ARTICLES) {id_article=9}>
<BOUCLE_menu_footer (ARTICLES) {id_article=9}>
<li style="float: left; margin-right: 30px;"><a href="#URL_ARTICLE">#SURTITRE</a></li>
</BOUCLE_menu_footer>
<BOUCLE_menu_footer2 (ARTICLES) {id_article=46}>
<li style="float: left; margin-right: 30px;"><a href="#URL_ARTICLE">#SURTITRE</a></li>
</BOUCLE_menu_footer2>
<BOUCLE_menu_footer3 (ARTICLES) {id_article=47}>
<li style="float: left;"><a href="#URL_ARTICLE">#SURTITRE</a></li>
</BOUCLES_menu_footer>
<BOUCLES_menu_footer2 (ARTICLES) {id_article=46}>
<li style="float: left; margin-left: 50px;"><a href="#URL_ARTICLE">#SURTITRE</a></li>
</BOUCLES_menu_footer2>
</BOUCLE_menu_footer3>
</ul>
[(#REM) logo April]
<div class="signature-april">
<BOUCLES_logo_footer (ARTICLES) {id_article=16}>
<BOUCLE_logo_footer (ARTICLES) {id_article=16}>
#TEXTE [(#LOGO_ARTICLE|#URL_SITE||inserer_attribut{alt,Logo April})]
</BOUCLES_logo_footer>
</BOUCLE_logo_footer>
</div>
</footer>

View File

@ -1,6 +1,6 @@
<div class="modele-sousrubrique-liste">
<BOUCLE_sousrubriques(RUBRIQUES) {id_rubrique=#ENV{id}}>
<BOUCLE_sousarticles(ARTICLES){id_rubrique}>
<BOUCLE_sousarticles(ARTICLES){id_rubrique}{par num titre}>
<article>
<a class="modele-sousrubrique-bouton bouton-utilise" href="#URL_ARTICLE">
[(#LOGO_ARTICLE|image_reduire{48,48})]

View File

@ -3,6 +3,7 @@
User-agent: *
Allow: /local/cache-css/
Allow: /local/cache-js/
Allow: /sites/v2.chapril.org/squelettes/img/social-accueil.jpg
Disallow: /local/
Disallow: /ecrire/
Disallow: /plugins-dist/

View File

@ -1,4 +1,4 @@
<BOUCLES_principale(RUBRIQUES){id_rubrique}>
<BOUCLE_principale(RUBRIQUES){id_rubrique}>
<!DOCTYPE html>
<html lang="#LANG">
[(#REM) inclure head ]
@ -15,23 +15,24 @@
<h1 class="sous-titre">#TITRE</h1>
<div class="tous-les-services">
<BOUCLES_articles (ARTICLES) {id_rubrique}{par num titre}>
<article>
<BOUCLE_articles (ARTICLES) {id_rubrique}{par num titre}>
<article id="#ID_ARTICLE">
<h2>#TITRE</h2> #LOGO_ARTICLE #TEXTE <a class="bouton-utilise" href="#URL_SITE">#NOM_SITE</a> <blockquote class="postscriptum">#PS</blockquote>
</article>
</BOUCLES_articles>
</BOUCLE_articles>
</div>
</div>
<div class="engagements">
[(#REM) inclure les 3 engagements ]
<BOUCLES_trois-engagements (ARTICLES) {id_rubrique=10}{0,3}{par num titre}>
<BOUCLE_trois-engagements (ARTICLES) {id_rubrique=10}{0,3}{par num titre}>
<article>#LOGO_ARTICLE <h2>#TITRE</h2> #CHAPO <a class="bouton-simple" href="#URL_SITE">#NOM_SITE</a>
[<div class="#EDIT{ps}">(#PS)</div>]
</article>
</BOUCLES_trois-engagements>
</BOUCLE_trois-engagements>
</div>
[(#REM) inclure le footer ]
<INCLURE{fond=inclure/pieddepage}>
</body>
</html>
</BOUCLES_principale>
</BOUCLE_principale>

View File

@ -11,53 +11,68 @@
<INCLURE{fond=inclure/entete}>
[(#REM) inclure la banniere ]
<div class="banniere">
<BOUCLES_banniere (RUBRIQUES) {id_rubrique=8}>
<BOUCLES_accroche (ARTICLES) {id_rubrique}>
<article><h1>#TITRE</h1> #TEXTE
<BOUCLE_banniere(RUBRIQUES) {id_rubrique=8}>
<BOUCLE_accroche(ARTICLES) {id_rubrique}>
<article class="#EDIT{texte}"><h1 class="#EDIT{titre}">#TITRE</h1>
#TEXTE
</article>
</BOUCLES_accroche>
</BOUCLES_banniere>
</BOUCLE_accroche>
</BOUCLE_banniere>
</div>
[(#REM) inclure la campagne ]
<B_campagne>
<div class="presentation campagne">
<BOUCLE_campagne(RUBRIQUES) {id_rubrique=19}>
<BOUCLE_campagne_article(ARTICLES) {id_rubrique} {par num titre}>
<article><h2 class="#EDIT{titre}">#TITRE</h2>
#TEXTE
</article>
</BOUCLE_campagne_article>
</BOUCLE_campagne>
</div>
</B_campagne>
[(#REM) inclure l'introduction ]
<div class="presentation">
<BOUCLES_introduction (RUBRIQUES) {id_rubrique=1}>
<BOUCLES_intro-texte (ARTICLES) {id_rubrique} {par date}{0,4}>
<article><h2>#TITRE</h2>
#TEXTE <a class="bouton-simple" href="#URL_SITE">#NOM_SITE</a> <blockquote class="postscriptum">#PS</blockquote>
<BOUCLE_introduction(RUBRIQUES) {id_rubrique=1}>
<BOUCLE_intro-texte(ARTICLES) {id_rubrique} {par date}{0,4}>
<article>
<h2 class="#EDIT{titre}">#TITRE</h2>
#TEXTE[ <a class="bouton-simple" href="#URL_SITE">(#NOM_SITE)</a>] <blockquote class="postscriptum">#PS</blockquote>
</article>
</BOUCLES_intro-texte>
</BOUCLES_introduction>
</BOUCLE_intro-texte>
</BOUCLE_introduction>
</div>
<div class="derniers-services">
[(#REM) inclure Services en une ]
<h2 class="sous-titre">Services en une #TITRE</h2>
<BOUCLES_services_en_une1 (ARTICLES) {id_article=20}>
<article><h3>#TITRE</h3> #TEXTE #LOGO_ARTICLE <a class="bouton-utilise" href="#URL_SITE">#NOM_SITE</a> <blockquote class="postscriptum">#PS</blockquote>
<BOUCLE_services_en_une1(ARTICLES) {id_article=20}>
<article class="#EDIT{texte}"><h3 class="#EDIT{titre}">#TITRE</h3> #TEXTE #LOGO_ARTICLE[ <a class="bouton-utilise" href="#URL_SITE">(#NOM_SITE)</a>] <blockquote class="postscriptum #EDIT{ps}">#PS</blockquote>
</article>
</BOUCLES_services_en_une1>
<BOUCLES_services_en_une2 (ARTICLES) {id_article=7}>
<article><h3>#TITRE</h3> #TEXTE #LOGO_ARTICLE <a class="bouton-utilise" href="#URL_SITE">#NOM_SITE</a> <blockquote class="postscriptum">#PS</blockquote>
</BOUCLE_services_en_une1>
<BOUCLE_services_en_une2(ARTICLES) {id_article=7}>
<article class="#EDIT{texte}"><h3 class="#EDIT{titre}">#TITRE</h3> #TEXTE #LOGO_ARTICLE[ <a class="bouton-utilise" href="#URL_SITE">(#NOM_SITE)</a>] <blockquote class="postscriptum #EDIT{ps}">#PS</blockquote>
</article>
</BOUCLES_services_en_une2>
</BOUCLE_services_en_une2>
</div>
<div class="derniers-services">
[(#REM) inclure les derniers services ]
<BOUCLES_rubrique (RUBRIQUES) {id_rubrique=3} >
<BOUCLE_rubrique(RUBRIQUES) {id_rubrique=3} >
<h2 class="sous-titre">Les derniers #TITRE</h2>
<BOUCLES_derniers_services (ARTICLES) {id_rubrique} {!par date}{0,4}>
<article><h3>#TITRE</h3> #TEXTE #LOGO_ARTICLE <a class="bouton-utilise" href="#URL_SITE">#NOM_SITE</a> <blockquote class="postscriptum">#PS</blockquote>
<BOUCLE_derniers_services(ARTICLES) {id_rubrique} {!par date}{0,4}>
<article class="#EDIT{texte}"><h3 class="#EDIT{titre}">#TITRE</h3> #TEXTE #LOGO_ARTICLE[ <a class="bouton-utilise" href="#URL_SITE">(#NOM_SITE)</a>] <blockquote class="postscriptum #EDIT{ps}">#PS</blockquote>
</article>
</BOUCLES_derniers_services>
</BOUCLES_rubrique>
</BOUCLE_derniers_services>
</BOUCLE_rubrique>
[(#REM) inclure le bouton d'appel vers service ]
<a class="bouton-appel" href="#URL_RUBRIQUE{3}">Voir tous les services</a>
</div>
<div class="engagements">
<div class="engagements" id="nous_suivre">
[(#REM) inclure les 3 engagements ]
<BOUCLES_trois-engagements (ARTICLES) {id_rubrique=10}{0,3}{par num titre}>
<article>#LOGO_ARTICLE <h2>#TITRE</h2> #CHAPO <a class="bouton-simple" href="#URL_SITE">#NOM_SITE</a>
<BOUCLE_trois-engagements (ARTICLES) {id_rubrique=10}{0,3}{par num titre}>
<article class="#EDIT{texte}">#LOGO_ARTICLE <h2 class="#EDIT{titre}">#TITRE</h2> #CHAPO[ <a class="bouton-simple" href="#URL_SITE">(#NOM_SITE)</a>]
[<div class="#EDIT{ps}">(#PS)</div>]
</article>
</BOUCLES_trois-engagements>
</BOUCLE_trois-engagements>
</div>
[(#REM) inlcure le footer]
<INCLURE{fond=inclure/pieddepage}>