Aller au contenu | Aller au menu | Aller à la recherche


Modifier sont Doctlear pour consulter tous les billets d'une année

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

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet