«

EMLOG非插件实现时间轴归档的方法

时间:2019-9-9 17:45     作者:博客志     分类: emlog教程


很多博客程序的模板开发者都设计过时间轴归档的功能,不过EMLOG官方模板里并没有这样的功能,而一些EMLOG模板同样也没有这样的功能,因此博客志今天就来分享一下EMLOG非插件实现时间轴归档的方法。

一、操作步骤

1、复制模板文件page.php,将其重新命名为guidang.php

2、在guidang.php里找到<?php echo $log_content; ?>这串代码,然后在前面添加如下代码

<?php
function displayRecord(){
    global $CACHE; 
    $record_cache = $CACHE->readCache('record');
    $output = '';
    foreach($record_cache as $value){
        $output .= '<h4>'.$value['record'].'('.$value['lognum'].')</h4>'.displayRecordItem($value['date']).'';
    }
    $output = '<div class="archives">'.$output.'</div>';
    return $output;
}
function displayRecordItem($record){
    if (preg_match("/^([\d]{4})([\d]{2})$/", $record, $match)) {
        $days = getMonthDayNum($match[2], $match[1]);
        $record_stime = emStrtotime($record . '01');
        $record_etime = $record_stime + 3600 * 24 * $days;
    } else {
        $record_stime = emStrtotime($record);
        $record_etime = $record_stime + 3600 * 24;
    }
    $sql = "and date>=$record_stime and date<$record_etime order by top desc ,date desc";
    $result = archiver_db($sql);
    return $result;
}
function archiver_db($condition = ''){
    $DB = MySql::getInstance();
    $sql = "SELECT gid, title, date, views FROM " . DB_PREFIX . "blog WHERE type='blog' and hide='n' $condition";
    $result = $DB->query($sql);
    $output = '';
    while ($row = $DB->fetch_array($result)) {
        $log_url = Url::log($row['gid']);
        $output .= '<li><a href="'.$log_url.'"><span>'.date('Y年m月d日',$row['date']).'</span><div class="atitle">'.$row['title'].'</div></a></li>';
    }
    $output = empty($output) ? '<li>暂无文章</li>' : $output;
    $output = '<ul>'.$output.'</ul>';
    return $output;
}
?>
<?php
if($res['hide'] == 'y' || !function_exists('displayRecord')) emMsg('不存在的页面!');
$show_type == 'sort' ? $log_content .= displaySort() : $log_content .= displayRecord();
?>

3、复制下面的jquery库代码,放置在guidang.php文件最底部

<script src="https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
    $('.archives').find('ul').hide();
    $('.archives').find('ul:first').show();
    $('.archives h4').click(function(){
        $(this).next('ul').slideToggle("fast");
    })
})
</script>

4、将下面的css样式复制粘贴到公用css文件合适的位置

.archives ul{overflow:hidden;padding:0px !important;}
.archives-title{border-bottom:1px #eee solid;position:relative;padding-bottom:4px;margin-bottom:10px}
.archives li a{color:#222222;padding:8px 0;display:block;}
.archives li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;list-style:none !important}
.archives li a:hover .atitle:after{background:#cc0000}
.archives li a span{display:inline-block;width:130px;font-size:12px;text-indent:20px}
.archives li a .atitle{display:inline-block;padding:0 15px;position:relative;white-space:nowrap;width:calc(100% - 180px);}
.archives li a .atitle:after{position:absolute;left:-6px;background:#ccc;height:8px;width:8px;border-radius:6px;top:8px;content:""}
.archives li a .atitle:before{position:absolute;left:-8px;background:#fff;height:12px;width:12px;border-radius:6px;top:6px;content:"";box-shadow:inset 0px 0px 2px #00cc00;}
.archives{position:relative;padding:10px 0}
.archives:before{height:100%;width:4px;background:#eee;position:absolute;left:126px;content:"";top:0;}
.archives h4{position:relative;margin:10px 0;cursor:pointer;font-size:14px !important;font-weight:bold !important;width:120px}
.archives h4:hover:after{background:#cc0000}
.archives h4:before{position:absolute;left:119px;background:#fff;height:18px;width:18px;border-radius:9px;top:3px;content:"";box-shadow:inset 0px 0px 4px #00cc00;}
.archives h4:after{position:absolute;left:122px;background:#ccc;height:12px;width:12px;border-radius:6px;top:6px;content:""}

5、打开网站管理界面,依次点击 后台 - 页面 - 新建页面 - 填写页面名称为时间轴归档 - 修改页面模板为guidang.php - 发布

6、在浏览器上新建隐身窗口,打开刚刚发布的用户注册页面查看效果

二、原理解析

利用自建模板页面,新增时间轴归档页面

三、注意事项

1、本教程使用在部分模板上可能会出现错位,请根据实际情况调整css样式