Une nouvelle balise : exemple avec #TRIMESTRE - commentaires Une nouvelle balise : exemple avec #TRIMESTRE 2007-12-26T15:48:32Z https://contrib.spip.net/Une-balise-TRIMESTRE#comment401577 2007-12-26T15:48:32Z <p>Salut à tous,</p> <p>Voici qq idées qui ont été évoquées en août et que je trouve utile de replacer ici, le débat n'est peut-être pas encore clos...</p> <p>La surcharge de la boucle ARTICLES est incompatible avec le plugin acces_restreint.</p> <p>Est-ce qu'on peut pas arriver au même résultat sans cette surcharge<small class="fine d-inline"> </small>?</p> <p>un simple filtre trimestre<small class="fine d-inline"> </small>?</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function trimestre($la_date) { $la_date = normaliser_date($la_date); $le_mois = mois($la_date); return ceil($le_mois/3); }</code></pre></div> <p>à utiliser comme ceci : <code class="spip_code spip_code_inline" dir="ltr">[(#DATE|trimestre)]</code></p> <p>ou même : <code class="spip_code spip_code_inline" dir="ltr">[(#DATE|annee)]-[(#DATE|trimestre)]</code></p> <p>Ok pour le code de ta balise #TRIMESTRE :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function balise_TRIMESTRE($p) { $date = champ_sql('date', $p); $p->code = "trimestre($date)"; $p->interdire_scripts = false; return $p; }</code></pre></div> <p>Pour le critère d'une boucle, voici une solution :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function critere_trimestre($idb, &$boucles, $crit) { $params = $crit->param; if (count($params) < 1) erreur_squelette(_T('zbug_info_erreur_squelette'), BOUCLE$idb : trimestre ?"); $trimestre= array_shift($params); $trimestre = $trimestre[0]->texte; if (strpos($trimestre, '|')!=false) $op = "REGEXP \'$trimestre\'"; $op = "REGEXP \'$trimestre\'"; else $op = "= $trimestre"; $boucle = &$boucles[$idb]; $table = $boucle->id_table; $where = "quarter($table.date) $op"; if ($crit->not) $where = "NOT($where)"; $boucle->where[] = "'$where'"; }</code></pre></div> <p>Exemples :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code> <BOUCLE_articles(ARTICLES) {trimestre 3}> ou : {trimestre 3|4} ou : {!trimestre 3} ou : {!trimestre 3|4}</code></pre></div> <p>Mais tout ce binz peut-être aussi obtenu comme ceci :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code> <BOUCLE_articles(ARTICLES) {quarter(date)=3}> ou : {quarter(date)==3|4} ou : {quarter(date)!=3} ou : {quarter(date)!==3|4}</code></pre></div>