这一篇我们来制作banenr和排行榜,数据源使用置顶的文章。也可以使用插件来完成。
本篇文章主要掌握:文章列表的调用,指定类别内容的调用。先看效果图:
一、首先我们写好辅助函数
同样,写入到common.php,辅助函数都是写到这里面的,后面就不再强调了。
/*置顶文章*/ function topLogs($limit=10){ $LogsMod=new LogsMod(); $logData=$LogsMod->limit($limit)->where(array('a.isTop'=>1))->select(); return $logData['list']; } /*根据浏览量获取文章排行榜*/ function HotLogs($limit=10){ $LogsMod=new LogsMod(); $logData=$LogsMod->limit($limit)->order(array('a.views'=>'desc'))->select(); return $logData['list']; } /*正文中匹配缩略图*/ function thumb($data,$len=1){ preg_match_all("|<img[^>]+src="([^>"]+)"?[^>]*>|is", $data['content'], $img); $thumb=array(); if(isset($img[1]) && !empty($img[1])){ $max=min(count($img[1]),$len); for($i=0;$i<$max;$i++){ $imgs=$img[1][$i]; $newimg=dirname($imgs). '/thum-' .basename($imgs); $thumb[]='<img src="'.(file_exists(CMSPATH .'/'. $newimg) ? $newimg : $imgs).'" alt="'.$data['title'].'"/>'; } }else{ $thumb[]= '<img src="'. TEMPURL .'/image/random/'.rand(1,20).'.jpg" alt="'.$data['title'].'"/>'; } return join('',$thumb); }
这里使用了一个新的obj:LogsMod,这个是系统封装好的文章类,可以使用这个方便的获取需要的数据。
在common.php中使用logsMod和使用其他系统文件一样,需要use一下。如下,在文件最上方use需要用到的模块:
<?php use rp\Cache; use rp\index\LogsMod;
logsMod返回的数据这里就不说明了,有能力的同学可以print_r打印看一下。
二、模板调用数据
这里的banner我们就使用Swiper来完成了。模板中遍历文章使用{foreach}标签。列表的数据请参考《帮助文档-模板制作-列表变量》
<div class="section s1"> <div class="swiper-container banner"> <div class="swiper-wrapper"> {foreach topLogs(5) as $k=>$v} <div class="swiper-slide"> <a href="{$v['url']}"> {:thumb($v)} <p>{$v['title']}</p> </a> </div> {/foreach} </div> <div class="swiper-pagination"></div> </div> <ul class="rankingBox"> {foreach HotLogs(10) as $k=>$v} <li><i>{$k+1}</i><a href="{$v['url']}" title="{$v['title']}">{$v['title']}</a></li> {/foreach} </ul> <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css"> <script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script> <script> var swiper = new Swiper('.swiper-container', { pagination: { el: '.swiper-pagination', }, }); </script> </div>
三、附css,可参考
.section{margin: 10px 0;} .banner{width: 700px;height: 300px;float: left;overflow: hidden;} .banner .swiper-wrapper a{display: block;width: 100%;height: 100%;position: relative;} .banner .swiper-wrapper img{width: 100%;height: 100%;} .banner .swiper-wrapper p{position: absolute;left: 0;right: 0;bottom: 0;background: rgb(0 0 0 / 60%);padding: 0 10px;line-height: 40px;color: #fff;} .rankingBox{width: 290px;height: 300px;float: right;overflow: hidden;} .rankingBox li{margin: 11px 0;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;} .rankingBox li:first-child{margin-top: 0;} .rankingBox li i{width: 20px;height: 20px;line-height: 20px;display: block;float: left;background: #b1b1b1;color: #fff;font-style: normal;text-align: center;margin-right: 5px;} .rankingBox li a{color: #333;} .rankingBox li:nth-child(-n+3) i{background: #f40;}
知识点讲解:
1、文章缩略图使用的辅助函数thumb,可以说所有模板通用。
2、模板中运行函数{:函数名称}。
3、foreach标签可以使用变量名,也可以直接使用函数。
4、调用变量{$变量名}。
总结:熟练掌握LogsMod模块,制作的模板“妙不可言”。
发表评论
评论已关闭,请移步论坛发表,立即前往