在所有的文章页中,会经常发现都会有这么一个功能,能引导用户去查看上一篇文章或下一篇文章,而在ShopEx中,我DEZEND了一下文章模型,并没有找到上一篇这样的函数功能,因此,这就需要我们手动在对应的文章控制器中自己去添加一个这样的功能。 文章控制器对应文件:\core\shop\controller\ctl.article.php 找到这个文件,我们需要操作的就是在这个文件尾加一个我们自己的函数如下:
function getPrevAndNextArticle($currentArticleId, $nodeId){//查找上一篇和下一篇的函数 $nodeId = $nodeId == ''?0:$nodeId; $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die('Could not connect: ' . mysql_error()); mysql_select_db(DB_NAME) or die('Could not select database'); //查找上一篇 $sql_prev = "SELECT * FROM ".DB_PREFIX."articles WHERE ifpub='1' AND node_id=$nodeId AND article_id<$currentArticleId ORDER BY article_id DESC LIMIT 0,1"; $result = mysql_query($sql_prev) or die('Query failed: ' . $sql_prev); $prev = mysql_fetch_array($result, MYSQL_ASSOC); mysql_free_result($result);// 释放结果集 //查找下一篇 $sql_next = "SELECT * FROM ".DB_PREFIX."articles WHERE ifpub='1' AND node_id=$nodeId AND article_id>$currentArticleId ORDER BY article_id ASC LIMIT 0,1"; $result = mysql_query($sql_next) or die('<br/>Query failed: ' . $sql_next); $next = mysql_fetch_array($result, MYSQL_ASSOC); mysql_free_result($result);// 释放结果集 //mysql_close($link);//不能关闭连接,否则页面空白 return array('prev'=>$prev, 'next'=>$next); }增加完这个函数以后,就需要在Index()函数中引用,增加以下代码
$this->pagedata['extra'] = $this->getPrevAndNextArticle($articleid, $this->pagedata['article']['node_id']);控制器这样就完成了,接下来需要操作的就是修改模板 找到适当的位置,添加以下代码
上一篇:<{if $extra.prev}><a href="/?article-<{$extra.prev.article_id}>.html"><{$extra.prev.title}></a><{else}>没有了<{/if}> 下一篇:<{if $extra.next}><a href="/?article-<{$extra.next.article_id}>.html"><{$extra.next.title}></a><{else}>没有了<{/if}>好了,这样上一篇下一篇功能已经实现,赶快动手修改吧~