Modifier sont Doctlear pour consulter tous les billets d'une année
Par PlaceOweb le vendredi, septembre 22 2006, 00:17 - PHP - Lien permanent
Dotclear permet de lister par défaut, les dernières annonces d'une période annuelle, mensuelle. Je voulais afficher les billets d'une année, année par année. Pour cela, j'ai modifié le code de 3 fichiers et voila pour vous les modifications à effectuer.
- inc/classes/class.blog.php
Initial :
<? function getPostByDate($y,$m,$d='',$cat='',$order='post_dt DESC',$selected=false,$lang='') { $reqPlus = 'AND DATE_FORMAT(post_dt,\'%Y\') = \''.(integer) $y.'\' '; $reqPlus .= 'AND DATE_FORMAT(post_dt,\'%c\') = \''.(integer) $m.'\' '; ?>
Modifié :
<? function getPostByDate($y,$m='',$d='',$cat='',$order='post_dt DESC',$selected=false,$lang='') { $reqPlus = 'AND DATE_FORMAT(post_dt,\'%Y\') = \''.(integer) $y.'\' '; if ($m != '') { $reqPlus .= 'AND DATE_FORMAT(post_dt,\'%c\') = \''.(integer) $m.'\' '; } ?>
- layout/lib.mod.php
Initial :
<? if($args != '') { if(preg_match('!^([0-9]{4}/[0-9]{2})(/|\z)!',$args,$match)) { $_GET['d'] = $match[1]; if(preg_match('!^([0-9]{4}/[0-9]{2}/[0-9]{2})(/|\z)!',$args,$match)) { $_GET['d'] = $match[1]; if(preg_match('!^[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)!',$args,$match)) { $_GET['p'] = $match[1]; } } } elseif(preg_match('!^([A-Z][A-Za-z0-9_-]*)([^/]*)?(/|\z)!',$args,$match)) { $_GET['cat'] = $match[1]; if(preg_match('!^[A-Z][A-Za-z0-9_-]*([^/]*?)/([0-9]{4}/[0-9]{2})!',$args,$match)) { $_GET['d'] = $match[2]; if(preg_match('!^[A-Z][A-Za-z0-9_-]*([^/]*)?/([0-9]{4}/[0-9]{2}/[0-9]{2})!',$args,$match)) { $_GET['d'] = $match[2]; } } } } // ... un peu plus loin dans le code source du fichier ... if (!empty($_GET['p'])) { return 'post'; } elseif (!empty($_GET['d']) && strlen($_GET['d']) == 10) { return 'day'; } elseif (!empty($_GET['d']) && strlen($_GET['d']) == 7) { return 'month'; } elseif (!empty($_GET['cat'])) { return 'cat'; } else { return 'home'; } ?>
Modifié :
<? if($args != '') { if(preg_match('!^([0-9]{4}/[0-9]{2})(/|\z)!',$args,$match)) { $_GET['d'] = $match[1]; if(preg_match('!^([0-9]{4}/[0-9]{2}/[0-9]{2})(/|\z)!',$args,$match)) { $_GET['d'] = $match[1]; if(preg_match('!^[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)!',$args,$match)) { $_GET['p'] = $match[1]; } } } elseif(preg_match('!^([A-Z][A-Za-z0-9_-]*)([^/]*)?(/|\z)!',$args,$match)) { $_GET['cat'] = $match[1]; if(preg_match('!^[A-Z][A-Za-z0-9_-]*([^/]*?)/([0-9]{4}/[0-9]{2})!',$args,$match)) { $_GET['d'] = $match[2]; if(preg_match('!^[A-Z][A-Za-z0-9_-]*([^/]*)?/([0-9]{4}/[0-9]{2}/[0-9]{2})!',$args,$match)) { $_GET['d'] = $match[2]; } } } elseif(preg_match('!^([0-9]{4})(/|\z)!',$args,$match)) { $_GET['d'] = $match[1]; } } // ... un peu plus loin dans le code source du fichier ... if (!empty($_GET['p'])) { return 'post'; } elseif (!empty($_GET['d']) && strlen($_GET['d']) == 4) { return 'year'; } elseif (!empty($_GET['d']) && strlen($_GET['d']) == 10) { return 'day'; } elseif (!empty($_GET['d']) && strlen($_GET['d']) == 7) { return 'month'; } elseif (!empty($_GET['cat'])) { return 'cat'; } else { return 'home'; } ?>
- layout/prepend.php
Initial :
<? elseif($mode == 'home' || ($mode == 'cat' && $cat_id) || $mode == 'year') ?>
Modifié :
<? elseif($mode == 'year') { $news = $blog->getPostByDate($year,'','',$cat_id,'post_dt DESC'); if ($news->isEmpty()) { $err_msg = '<p>'.__('No entry.').'</p>'; } } elseif($mode == 'home' || ($mode == 'cat' && $cat_id)) ?>
Voilà, après modification de ses 3 fichiers, vous êtes en mesure de consulter tous les billets d'une année en appelant une URL du style http://www.placeoweb.com/dotclear/index.php/2006