通常友情链接我都是写死的,但是制作的主题因为要公开给大家用,所以很多童鞋表示写死了不方便修改,于是花了点时间折腾了一下,方便大家使用。首先使用该代码之前,请先确认你的页面里的友情链接最终输出格式是这样的:
<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 下有两款友情链接插件,请在本站直接搜索关键词友情链接来获取。