Oui je sais encore un petit calendrier.
Je reste un ancien et modeste utilisateur de spip mais néanmoins fidèle , et au train ou vont les choses je suis comme certains, dépassé. Je propose donc un calendrier propre fonctionnel et surtout trés facile à utiliser pour ceux qui ont peu de temps pour réaliser des sites mais qui souhaitent avoir des fonctionnalités faciles à mettre en oeuvre sans trop rentrer dans le code php mais qui maîtrisent un peu les boucles spip. En effet il suffit d’une simple boucle permettant de sélectionner les données à afficher en ajustant la syntaxe propre au calendrier et c’est terminé. Une liste est créée et celle ci est gérée directement par le calendrier.
Inspiré du calendrier de Yannick Volglaire
Merci à Jacques J. pour le problème de l’affichage des dates.
Un exemple :
http://www.geea.org/inc-mini-calendrier2.php3
Description
2les CSS2
<style type="text/css" media="screen">
a.entete {
color: #fff;
}
table.calendrier {
font-size:11px;
color:white;
}
calendrierMoisAnnee {
text-align : center;
}
th.calendrier {
text-align: center;
width: 28px;
height: 12px;
background-color: #ffffff;
}
td.calendrierVide {
text-align: center;
width: 18px;
height: 21px;
background-color: #ffffff;
}
td.calendrierNormal {
text-align: center;
width: 18px;
height: 21px;
background-color: #eeeeee;
}
td.calendrierLien {
text-align: center;
width: 18px;
height: 21px;
background-color: #e0e7ee;
font-weight: bold;
}
td.calendrierPendant {
text-align: center;
width: 18px;
height: 21px;
background-color: #e0e7ee;
}
#aujourdhui {
border: 1px solid black;
}
</style>
2l’affichage du calendrier2
<?php
function afficher_calendrier_mois($mois, $annee, $jours) {
$nom_mois = array(1 => "Janvier", "Février", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
// Correspondance entre la semaine commencant par Dimanche et celle commencant par Lundi
$num_jour_belge = array(7, 1, 2, 3, 4, 5, 6);
$premier_jour_du_mois = $num_jour_belge[date("w", mktime(0, 0, 0, $mois, 1, $annee))];
$nombre_de_jours_du_mois = date("t", mktime(0, 0, 0, $mois, 1 ,$annee));
$aujourdhui = date("dm");
echo "<div class=\"calendrierMoisAnnee\">".$nom_mois[(int) $mois]." - ".$mois." - ".$annee."</div>\n";
echo "<table class=\"calendrier\" align=\"center\" cellspacing=\"1\" border=\"0\">\n";
echo "<tr><th class=\"calendrier\">L</th><th class=\"calendrier\">M</th>";
echo "<th class=\"calendrier\">M</th><th class=\"calendrier\">J</th><th class=\"calendrier\">V</th>";
echo "<th class=\"calendrier\">S</th><th class=\"calendrier\">D</th></tr>\n";
/* pour avoir un toujours un mois en 2 chiffres
* pour la comparaison plus loin : if ($jour_du_mois.$mois == $aujourdhui)
* car $aujourdhui est de la forme jjmm */
$mois = ($mois < 10 ? "0".((int) $mois) : $mois);
$jour_du_mois = 1;
for ($semaine = 0; $semaine <= 5 && $jour_du_mois <= $nombre_de_jours_du_mois; $semaine++) {
echo "<tr>\n";
for ($jour = 1; $jour <= 7; $jour++) {
if ($jour + 7 * $semaine < $premier_jour_du_mois || $jour_du_mois > $nombre_de_jours_du_mois) {
echo " <td class=\"calendrierVide\"> </td>\n";
} elseif(ereg("article",$jours[$jour_du_mois])) {
echo " <td class=\"calendrierLien\"";
if ($jour_du_mois.$mois == $aujourdhui) echo " id=\"aujourdhui\"";
echo "><a href=\"".$jours[$jour_du_mois]."\">$jour_du_mois</a></td>\n";
$jour_du_mois++;
} elseif($jours[$jour_du_mois] == "pendant") {
echo " <td class=\"calendrierPendant\"";
if ($jour_du_mois.$mois == $aujourdhui) echo " id=\"aujourdhui\"";
echo ">$jour_du_mois</td>\n";
$jour_du_mois++;
} else {
echo " <td class=\"calendrierNormal\"";
if ($jour_du_mois.$mois == $aujourdhui) echo " id=\"aujourdhui\"";
echo ">$jour_du_mois</td>\n";
$jour_du_mois++;
}
}
echo "</tr>\n";
}
echo "</table>\n";
echo "<hr />\n";
}
?>
2la boucle créant la liste2
<?php
<BOUCLE_articles(ARTICLES){par date}>
$moisE = (int) '[(#DATE|mois)]'; // transforme date en entier
$jours[[(#DATE|affdate{'annee'})]][$moisE][[(#DATE|affdate{'d'})]] = "[(#URL_ARTICLE)]";
</BOUCLE_articles>
while (list($annee, $tous_les_mois) = each($jours)) {
while (list($mois, $jours_du_mois) = each($tous_les_mois)) {
afficher_calendrier_mois($mois, $annee, $jours_du_mois);
}
}
?>
C’est cette boucle qu’il faut paramétrer suivant vos besoins, tout le reste n’est que du copier/coller au bon endroit :
<BOUCLE_articles(ARTICLES){par date}>
$moisE = (int) '[(#DATE|mois)]'; // transforme date en entier
$jours[[(#DATE|affdate{'annee'})]][$moisE][[(#DATE|affdate{'d'})]] = "[(#URL_ARTICLE)]";
</BOUCLE_articles>
peut être remplacée par celle que vous souhaitez forum, brèves...
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |