在全部的文章页中,会常常发现都会有这么一个功能。能引导用户去查看上一篇文章或下一篇文章,而在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}>

好了,这样上一篇下一篇功能已经实现,赶快动手改动吧~

ShopEx文章页添加上一篇下一篇功能的更多相关文章

  1. dedecms文章页调用上一篇和下一篇文章

    dedecms文章页调用上一篇和下一篇文章,解析后是链接形式的上下篇 {dede:prenext get='pre'/} {dede:prenext get='next'/}

  2. phpcms v9文章内容页调用上一篇下一篇的方法(转)

    phpcms v9文章内容页调用上一篇下一篇的方法如下,魔客吧(www.moke8.com)提示您直接摘取如下代码中的红色部分即可: 上一篇:{$previous_page[url]}" t ...

  3. thinkPHP中的文章详情页实现“上一篇下一篇”功能经验分享

    前段时间在公司中接触到了用thinkPHP搭建的项目,其中涉及到了文章详情页上一篇下一篇翻页的功能实现效果. 因为刚接触这套框架和PHP,所以整理一下实现该功能的经验方法. 如果有不到位的地方,欢迎指 ...

  4. thinkphp5.0 文章详情页 上一篇 下一篇

    // 上一篇下一篇(同一个分类下,先确定该分类的pid) public function frontAfter() { $param=$this->param; $front=Db::name( ...

  5. phpcms v9 wap手机门户站点内容页添加上一篇、下一篇的方法

    PHP源码修改:打开 phpcms\modules\wap\index.php 文件找到if(!$r || $r['status'] != 99) showmessage(L('info_does_n ...

  6. wordpress文章显示同一分类下的上一篇下一篇

    我们在用wordpress开发网站的时候会在文章页中引入上一篇下一篇,但是发现新闻页的上下文章有可能是产品分类的post,这个就不太合理,如何显示同一分类下的上一篇下一篇文章呢?随ytkah一起来看看 ...

  7. ecshop调用文章显示上一篇下一篇

    首先调用文章中的上一篇和下一篇语法为:  代码如下 复制代码 上一篇:<a href="{$next_article.url}">{$next_article.titl ...

  8. MVC3学习:实现文章上一篇下一篇链接

    文章的显示都是通过id查询数据库来显示.但是文章会经常删除,因此id号可能不是连续的,所以上一篇下一篇文章,不能简单的做id加减法. 我的思路是:先将表格中所有文章的ID号全部放入一个数组中,如果文章 ...

  9. dedecms手机网站内页上一篇/下一篇的翻页功能

    修改文件include/arc.archives.class.php文件. 1.搜索 function GetPreNext($gtype='') 2.将这个函数的所有内容替换为 function G ...

随机推荐

  1. crm 系统项目(一) 登录,注册,校验

    crm 系统项目(一) 登录,注册,校验 首先创建一个Django项目,关于配置信息不多说,前面有~ models.py文件下创建需要的表格信息,之后导入数据库 from django.db impo ...

  2. 单元测试Struts2的Action(包含源码)

    很久没有从头搭建Struts2的环境了.最近,认真实践了单元测试Struts2.Spring等Java项目. 今天特意写的是单元测试Struts2的Action,遇到了不少问题,果然是实践出真知啊. ...

  3. cocos2d-js 热更新具体解释(一)

    本文将会具体解说cocos2d-js下的热更新机制.这篇内容先给大家介绍一下两个manifest文件就当热身了. 首先介绍project.manifest:  举个样例 { "package ...

  4. FZU_Problem 2168 防守阵地 I

    Problem 2168 防守阵地 I Accept: 128 Submit: 392 Time Limit: 3000 mSec Memory Limit : 32768 KB Problem De ...

  5. JavaWeb错误处理集锦

    一:起因 (1)自己接下来想走算法的路子,打算把十大算法和数学模型学习一下,算是给自己之前 JavaWeb 的一个总结: (2)记得Java算是第一个比較上手的语言了,更是用JavaWeb走过了非常长 ...

  6. easyui编辑器(kindeditor-4.1.10)

    //1  重写kindedit    -建一个js文件 easyui_kindeditor.js (function ($, K) {     if (!K)         throw " ...

  7. Mysql 数据迁移后 启动出错

    今天上班后不知道为什么,mysql一直无法启动,折腾了半天于是决定重装 我本地的server用的是wamp , 重装的时候, 要进行数据备份 , 我使用的最简单粗暴的备份方式, 就是直接进入到mysq ...

  8. Java虚拟机的类载入机制

    Java虚拟机类载入过程是把Class类文件载入到内存.并对Class文件里的数据进行校验.转换解析和初始化,终于形成能够被虚拟机直接使用的java类型的过程. 在载入阶段,java虚拟机须要完毕下面 ...

  9. OSGi 和 C++

    2011年 9月我参加了OSGi社区在达姆施塔特的会议,并且有机会与其他与会者探讨本机c++实现的OSGi规范的现状.在这一事件之前我也一直想写一篇博客,来描述关于当前实现OSGi规范的现状和努力—— ...

  10. 安卓 使用Gradle生成正式签名apk文件

    1. 进入app中的build.gradle下面进行配置 2.进入Gradle下面选择clean和assembleRelese,双击 3.生成成功,前往查看 4.加密更安全