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样式