dedecms织梦文章按年月日进行归档


dedecms织梦文章按年月日进行归档效果图:

思路

从文档表中取得年,月,日的归档文档,按年或月或日输出。

 

前端代码

 

<div class="newbody">
    <!-- 代码 开始 -->
    <div class="head-warp">
        <div class="head">
            <div class="nav-box">
                <ul>
                    <li class="cur" style="text-align:center; font-size:22px; font-family:'微软雅黑', '宋体';">文章归档</li>
                </ul>
            </div>
        </div>
    </div>
    <div class="main">
        <div class="history">
            {dede:arclist2 row=12 format=m time=pubdate}
            <div class="history-date">
                <ul>
                    <h2 class="first"><a href="#nogo">[field:date function=MyDate('Y年m月',strtotime(@me))/]</a></h2>
[field:date runphp="yes"]
global $dsql;
$startTime = strtotime(@me.'-01');
$endTime = strtotime('+1 month',$startTime);
$qtypeQuery = " WHERE arc.arcrank>=0 and arc.pubdate between $startTime AND $endTime ORDER BY arc.id desc limit 10";
$sql = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,
tp.moresite,tp.siteurl,tp.sitepath FROM `blog_archives` arc left join `blog_arctype` tp on arc.typeid=tp.id $qtypeQuery";
$dsql->SetQuery($sql);
$dsql->Execute('t');
$result = '';
while($row = $dsql->GetArray('t'))
{
    $arcurl = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],$row['arcrank'],
    $row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);
    if(date("m-d",$row['pubdate'])==date("m-d")){
        $pubdate = '<font color="#FF0000">'.MyDate('m-d',$row['pubdate']).'</font>';
    }
    else
    {
        $pubdate = MyDate('m-d',$row['pubdate']);
    }
 
    $description = cn_substr($row['description'],100);
$result .= <<< TPL
                    <li>
                    <h3>{$pubdate}</h3>
                    <dl>
                        <dt><a href="{$arcurl}" target="_blank">{$row['title']}</a>
                        <span>{$description}</span>
                        </dt>
                    </dl>
                    </li>
TPL;
}
@me = $result;
[/field:date]
                </ul>
            </div>
            {/dede:arclist2}
            
        </div>
    </div>
</div>

1、\include\taglib\arclist2.lib.php

<?php if(!defined('DEDEINC')) exit('Request Error!');
/**
 * 文章归档标签
 *
 * @package        DedeCMS.Dedediy
 * @copyright      Copyright (c) 2013 - 2016
 * @link           http://www.dedediy.com
 */
 
function lib_arclist2(&$ctag,&$refObj)
{
    global $dsql;
    //属性处理
    $attlist="format|y,start|,end|,time|pubdate,row|10";
    FillAttsDefault($ctag->CAttribute->Items,$attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    
    $line = empty($row) ? 10 : $row;
 
    $innertext = $ctag->GetInnerText();
    if(trim($innertext)=='') $innertext = GetSysTemplets("arclist2.htm");
    
    switch ($format) {
        case 'y':
            $format2 = '%Y';
             break;
        case 'm':
            $format2 = '%Y-%m';
             break;;
        case 'd':
            $format2 = '%Y-%m-%d';
            break;
        default:
            $format2 = '%Y-%m-%d';
    }
 
    $ctp = new DedeTagParse();
    $ctp->SetNameSpace('field', '[', ']');
    
    if(!empty($start)) {
        $qtypeQuery = ' WHERE '.$time.'>'.strtotime($start);
    }
    if(!empty($end)){
        $qtypeQuery .= $qtypeQuery ? ' AND '.$time.'<'.strtotime($end) : ' WHERE '.$time.'<'.strtotime($end); 
    }
 
    $solvingask = '';
    $query = "select FROM_UNIXTIME($time, '$format2') AS date,count(*) AS count FROM `blog_archives` $qtypeQuery group by date order by date desc limit $line";
 
    $dsql->Execute('me',$query);
    while($rs = $dsql->GetArray('me'))
    {
        $ctp->LoadSource($innertext);
        if($rs['date']) {
            $rs['dateurl'] = '/plus/arcDate.php?time='.$time.'&date='.$rs['date'].'&format='.$format;
            foreach($ctp->CTags as $tagid=>$ctag) {
                if(!empty($rs[strtolower($ctag->GetName())])) {
                    $ctp->Assign($tagid,$rs[$ctag->GetName()]);
                }
            }
            $solvingask .= $ctp->GetResult();
        }
    }
    return $solvingask;
}

 

更多归档文件打包

链接: http://pan.baidu.com/s/1jIr4V0i  密码: jy3e