TYPECHO WIKI

Typecho 非插件实现友情链接页面

发布者:Typecho维基君/更新日期:2018-05-18/人气指数:1103

通常友情链接我都是写死的,但是制作的主题因为要公开给大家用,所以很多童鞋表示写死了不方便修改,于是花了点时间折腾了一下,方便大家使用。首先使用该代码之前,请先确认你的页面里的友情链接最终输出格式是这样的:

<ul>
<li><a href="https://www.baidu.com">baidu</a></li>
<li><a href="https://www.baidu.com">baidu</a></li>
<li><a href="https://www.baidu.com">baidu</a></li>
<li><a href="https://www.baidu.com">baidu</a></li>
<li><a href="https://www.baidu.com">baidu</a></li>
<li><a href="https://www.baidu.com">baidu</a></li>
</ul>

然后,在主题目录下的 functions.php 文件里新增一下函数:

function links($slug)
{
    $db = Typecho_Db::get();
    $Contents = Typecho_Widget::widget('Widget_Abstract_Contents');
    $value = $db->fetchRow($db->select()
            ->from('table.contents')
            ->where('table.contents.status = ?', 'publish')
            ->where('table.contents.type = ?', 'page')
            ->where('table.contents.slug = ?', $slug)
            ->where('table.contents.password IS NULL')
            ->limit(1));
    $value = $Contents->filter($value);
    if (0 === strpos($value['text'], '<!--markdown-->')) {
        $value['isMarkdown'] = 0;
    } else {
        $value['isMarkdown'] = 1;
    }
    if ($value['isMarkdown'] == 1) {
        $text = substr($value['text'], 15);
        $text = $Contents->markdown($text);
    } else {
        $text = $Contents->autoP($value['text']);
    }

    $search = '/<ul>(.*?)<\/ul>/is';
    preg_match_all($search, $text, $matches);
    $result = '';
    foreach ($matches[1] as $v) {
        $result .= $v;
    }
    //以下三行稍微处理了一下,如果不需要删除就可以
    $result = str_replace('<li>', '', $result);
    $result = str_replace('</li>', '<br/>', $result);
    $result = rtrim($result, '<br/>');
    echo $result;
}

在需要输出友情链接的地方调用代码为:<?php links('links'); ?> 注意这里的 links 为你的页面的 slug 名称。

当然如果你懒得折腾也可以使用插件来处理,Typecho 下有两款友情链接插件,请在本站直接搜索关键词友情链接来获取。

本文检索关键词:开发日志
赞助支持

添加新评论 »