Typecho无插件实现同分类文章上一篇下一篇

这个功能因为自己突然有需要,然后去论坛搜了下发现也有人问过,帖子里有人推荐了个插件可以实现,不过我突然想到个模板函数,就是自定义文章上下篇链接的,好像就可以直接实现,不需要插件。

函数如下:

/**
* 显示下一篇
*
* @access public
* @param string $default 如果没有下一篇,显示的默认文字
* @return void
*/
function theNext($widget, $default = NULL)
{
$db = Typecho_Db::get();
$sql = $db->select()->from('table.contents')
->where('table.contents.created > ?', $widget->created)
->where('table.contents.status = ?', 'publish')
->where('table.contents.type = ?', $widget->type)
->where('table.contents.password IS NULL')
->order('table.contents.created', Typecho_Db::SORT_ASC)
->limit(1);
$content = $db->fetchRow($sql);

if ($content) {
$content = $widget->filter($content);
$link = '<a href="' . $content['permalink'] . '" title="' . $content['title'] . '">下一篇</a>';
echo $link;
} else {
echo $default;
}
}

/**
* 显示上一篇
*
* @access public
* @param string $default 如果没有下一篇,显示的默认文字
* @return void
*/
function thePrev($widget, $default = NULL)
{
$db = Typecho_Db::get();
$sql = $db->select()->from('table.contents')
->where('table.contents.created < ?', $widget->created)
->where('table.contents.status = ?', 'publish')
->where('table.contents.type = ?', $widget->type)
->where('table.contents.password IS NULL')
->order('table.contents.created', Typecho_Db::SORT_DESC)
->limit(1);
$content = $db->fetchRow($sql);
if ($content) {
$content = $widget->filter($content);
$link = '<a href="' . $content['permalink'] . '" title="' . $content['title'] . '">上一篇</a>';
echo $link;
} else {
echo $default;
}
}

调用代码<?php thePrev($this); ?><?php theNext($this); ?>

可以看出里面用的是数据库语句,那么实现[Typecho无插件实现同分类文章上一篇下一篇],岂不是插入个where语句就行了,对,就是这么简单。

首先在函数里开头部分加入如下代码,获取当前文章的分类mid

@$mid=intval($widget->categories[0]['mid']);

然后在数据库语句中合适位置插入一个where语句

->where('table.relationships.mid = ?', $mid)

好了,这就大功告成了,希望能帮得到各位。

已有 9 条评论
  1. 小白白
    小白白回复

    然后在数据库语句中合适位置插入一个where语句 我是小白白,想问一下,这个是插入到哪里?

    1. 泽泽社长

      小白白 其他where语句后面就行

  2. 王小大

    前几天愁用原生实现呢,哈哈

  3. Waxxh

    你好骚啊

    1. 泽泽社长

      Waxxh 哪里哪里,就是水文啦

      1. Roogle

        泽泽社长 你好多水啊

  4. 森纯博客

    教程不错不错,涨姿势了

  5. if

    动不动就是骚操作

    1. 泽泽社长

      if 这不是没啥写的了吗,所以就随便分享点干货