Il faut tout d’abord avoir en tête que Dotclear stocke trois dates pour chaque billet :
- la date réelle de création (le premier enregistrement du billet) dans le champ post_creadt,
- la date de publication (commandée par le champ « Publié le » dans l’édition de billets) dans le champ post_dt,
- la date de réenregistrement, quand on opère des modifications, dans le champ post_upddt.
La méthode ci-dessous utilise les champs post_creadt et post_upddt et ne tient donc pas compte de la date de publication.
Pour afficher la date et l'heure de mise à jour d'un billet, coller le code suivant dans le fichier _public.php du thème actif :
<?php $core->tpl->addValue('UpdateTime', array('tplMyThemeAdditions', 'UpdateTime')); class tplMyThemeAdditions { public static function UpdateTime($attr) { $format = $GLOBALS['core']->blog->settings->date_format; if (!empty($attr['format'])) { $format = addslashes($attr['format']); } $f = $GLOBALS['core']->tpl->getFilters($attr); $p = '<?php if ($_ctx->posts->post_upddt > $_ctx->posts->post_creadt) {'. 'echo "<li>Modifié le : "; '. 'echo '.sprintf($f,"dt::dt2str('".$format."',\$_ctx->posts->post_upddt)").'; '; $format = ''; $format = $GLOBALS['core']->blog->settings->time_format; if (!empty($attr['format'])) { $format = addslashes($attr['format']); } $p .= 'echo " à "; '. 'echo '.sprintf($f,"dt::dt2str('".$format."',\$_ctx->posts->post_upddt)").'; '. 'echo "</li>"; } ?>'; return $p; } } ?>
Appeler ensuite cette fonction en collant la ligne suivante à l'endroit voulu :
{{tpl:UpdateTime}}
Commentaires
Il y a un décalage d'une heure dans les heures de modifications, comme sur le post de mon site. Une idée pour corriger ?