【前言】
本文介绍下实现文章或新闻上下篇的语法,可以解决ID不连续的问题
【主体】
(1)上篇
$pre = M('article')->where(array('id>"'.$_GET["id"].'"','cateid' => $cateid)) ->limit('1')->find();
注意:这里我在where里的条件加了一条,即分类。也就是和当前文章处于同一分类,这里用array数组形式添加多个条件。如没有分类,则可以去除cateid条件
(2)下篇
$next = M('article')->where(array('id<"'.$_GET["id"].'"','cateid' => $cateid)) ->order('id desc') ->limit('1') ->find();
注意:和上篇原理类似
(3)没有了--判断有无上下篇
注意:这里可以在控制器里加判断然后传递到模板,也可以直接在模板里判断。
①控制器里判断
if(!$pre){ $pre['title']='没有了(本文为该分类的首篇)'; } if(!$next){ $next['title']='没有了(本文为该分类的尾篇)'; }
判断完后传递到模板即可
②模板里判断
输出后得知,没有上下篇时$pre或$next变量输出为空数组,所以可以在模板里判断
<if condition="$next eq null"> <a href="javascript:;" class="prompt-next">没有了!</a> <else/> <a href="__CONTROLLER__/index/id/{$next.id}" title="{$next['title']|msubstr=###,0,40}">{$next['title']|msubstr=###,0,40}</a> </if>
完善,为了提高用户体验,给没有上下文的情况,添加个点击事件
<script type="text/javascript"> $(function(){ $('.prompt-pre').on('click',function(){ alert("本文为该分类的首篇"); }); $('.prompt-next').on('click',function(){ alert("本文为该分类的尾篇"); }); }) </script>
..