Typecho无插件添加友情链接功能

在看了OFFODD [TYPECHO主题集成友情链接功能] 的文章之后,觉得非常不错。
然后就在自己做的主题里面实现体验了一把,其实就是把代码添加到 functions.php 中,后台设置的内容在页脚进行显示,从而实现全站友情链接的功能。

友情链接

那么下面就看一下到底是怎么做到的。
首先在 themeConfig() 函数内添加代码,实现后台设置的功能

$Links = new Typecho_Widget_Helper_Form_Element_Textarea('Links', NULL, NULL, _t('链接列表(注意:切换主题会被清空,注意备份!)'), _t('按照格式输入链接信息,格式:<br><strong>链接名称(必须),链接地址(必须),链接描述,链接分类</strong><br>不同信息之间用英文逗号“,”分隔,例如:<br><strong>OFFODD,http://www.offodd.com/,JIElive的博客 | 有点不同,Myself</strong><br>若中间有暂时不想填的信息,请留空,例如暂时不想填写链接描述:<br><strong>OFFODD,http://www.offodd.com/,,Myself</strong><br>多个链接换行即可,一行一个'));
    $form->addInput($Links);

然后在 themeConfig() 函数外添加代码

function Links($sorts = NULL) {
    $options = Typecho_Widget::widget('Widget_Options');
    if ($options->Links) {
        $list = explode("\r\n", $options->Links);
        foreach ($list as $tmp) {
            list($name, $url, $description, $sort) = explode(",", $tmp);
            if ($sorts) {
                $arr = explode(",", $sorts);
                if (in_array($sort, $arr)) {
                    $Links .= $url ? '<li><a href="'.$url.'" title="'.$description.'" target="_blank">'.$name.'</a></li>' : '<li><a title="'.$description.'"><del>'.$name.'</del></a></li>';
                }
            } else {
                $Links .= $url ? '<li><a href="'.$url.'" title="'.$description.'" target="_blank">'.$name.'</a></li>' : '<li><a title="'.$description.'"><del>'.$name.'</del></a></li>';
            }
        }
    }
    echo $Links ? $Links : '<li>暂无链接</li>';
}

后台添加链接的设置方法

按照格式输入链接信息,链接输入格式: 链接名称,链接地址,链接描述,链接分类

不同信息之间用英文逗号“,”分隔,例如: OFFODD,http://www.offodd.com/,JIElive的博客 |有点不同,Myself

若中间有暂时不想填的信息,请留空,例如暂时不想填写链接描述: OFFODD,http://www.offodd.com/,,Myself

若结尾有暂时不想填的信息,无需逗号,可直接留空,例如暂时不想填写链接分类:
OFFODD,http://www.offodd.com/,JIElive的博客 | 有点不同

多个链接换行即可,一行一个

函数调用方法

最后在需要输出链接的地方调用 <?php Links(); ?> 即可。
函数的原型为 Links($sorts)
其中 $sorts 参数为链接分类名称,默认显示全部链接,若要显示指定分类的链接,将其替换为链接分类名称即可。
例如要显示分类为 Friendlinks 的链接,则调用 <?php Links("Friendlinks"); ?> 即可,支持调用多个分类,分类名之间用英文逗号“,”分隔。

函数的输出内容为

<li><a href="{url}" title="{description}" target="_blank">{name}</a></li>

最后需要注意的是,填写的链接更换主题之后会删除,所以请小心谨慎,早备份

文章最后编辑时间:2019-01-31 16:18
已有 2 条评论
  1. Zenlee
    好,威武,支持,有希望了
    回复 Zenlee 2018-12-10 23:14 Admin
    1. 1321
      @Zenlee 11
      回复 1321 2019-02-14 23:05
发表评论