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

Typecho教程 typecho 模板 插件 函数 2019-04-27

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

函数如下:

/**
* 显示下一篇
*
* @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条评论

    小白白

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

    游客 Windows7 171 天前回复

      泽泽社长
      @小白白

      其他where语句后面就行

      作者 Windows7 171 天前回复

    王小大

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

    游客 Windows10 190 天前回复

    Waxxh

    你好骚啊

    游客 Windows7 222 天前回复

      泽泽社长
      @Waxxh

      哪里哪里,就是水文啦

      作者 Linux 222 天前回复

        Roogle
        @泽泽社长

        你好多水啊

        游客 Windows10 202 天前回复

    森纯博客

    教程不错不错,涨姿势了

    游客 Windows10 224 天前回复

    if

    动不动就是骚操作

    游客 IpadOS 225 天前回复

      泽泽社长
      @if

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

      作者 Linux 224 天前回复

智能推荐