TYPECHO WIKI
每一个作品都值得被记录

Typecho 自定义上一篇/下一篇的显示样式

Typecho维基君Typecho教程 • 2335次浏览 • 发布 2018-05-18 • 更新 2018-05-18

有Typecho中,默认的上一篇和下一篇函数有个缺陷,就是在没有文章的时候会显示一个没有了。这是我无法接受的。

改进方法:

/**
* 显示下一篇
*
* @access public
* @param string $default 如果没有下一篇, 显示的默认文字
* @return void
*/
function theNext($widget, $word = '下一篇', $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 = $word.': <a href="' . $content['permalink'] . '" title="' . $content['title'] . '">' . $content['title']. '</a>';
        echo $link;
    } else {
        echo $default;
    }
}

/**
* 显示上一篇
*
* @access public
* @param string $default 如果没有上一篇, 显示的默认文字
* @return void
*/
function thePrev($widget, $word = '上一篇', $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 = $word.': <a href="' . $content['permalink'] . '" title="' . $content['title'] . '">' . $content['title']  . '</a>';
        echo $link;
    } else {
        echo $default;
    }
}

将上面的代码加入到function.php里面就好。

调用方法

<?php thePrev($this);?>
<?php theNext($this);?>
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,Typecho.Wiki所有文章均包含本声明。
厂商投放

【腾讯云】🎉五一云上盛惠!云服务器99元/月续费同价!

腾讯云五一劳动节海量产品 · 轻松上云!云服务器首年1.8折起,买1年送3个月!超值优惠,性能稳定,让您的云端之旅更加畅享。快来腾讯云选购吧!

广告
添加新评论 »