背景

实际上并不局限于友情链接,还可以做成置顶展示之类的。

创建独立页面

以我的为例,独立页面网址是http://www.polarxiong.com/project.html,其中的project是我自己定义的,后面修改代码时记得这个URL。

内容如下:

 - [全国火车换乘查询系统][1]
 - [南京大学校园网自动登录脚本][2]

[1]:http://huoche.polarxiong.com/
[2]:http://www.polarxiong.com/archives/Python-%E5%8D%97%E4%BA%AC%E5%A4%A7%E5%AD%A6%E6%A0%A1%E5%9B%AD%E7%BD%91%E8%87%AA%E5%8A%A8%E7%99%BB%E5%BD%95%E8%84%9A%E6%9C%AC-V2-0.html

链接数目不限,但必须是超级链接格式。

编辑functions.php文件

在typecho文件目录下usr/themes/THE_THEME_YOU_USE/functions.php

在此文件中加入

function PageToLinks($slug = 'links')
{
    $db = Typecho_Db::get();

    $contents = $db->fetchObject($db->select('text')->from('table.contents')
    ->where('slug = ?', $slug)->limit(1));
    if (!$contents) {
        return;
    }
    $text = $contents->text;
    $titles = $db->fetchObject($db->select('title')->from('table.contents')
    ->where('slug = ?', $slug)->limit(1));
    $title = $titles->title;
    if (substr($text, -1) != ' ') {
        $text = $text.' ';
    }
    preg_match_all("/\[(.*?)\]\[(\d)\]/", $text, $r);
    echo "<h3 class='widget-title'>".$title.'</h3>';
    echo "<ul class='widget-list'>";
    foreach ($r[1] as $key => $value) {
        $num = $r[2][$key];
        preg_match_all("/\[$num\]:\s(.*?)\s/", $text, $urls);
        $href = '<a href='.$urls[1][0].'>'.$value.'</a>';
        echo '<li>'.$href.'</li>';
    }
    echo '</ul>';

保存并关闭

编辑sidebar.php

在typecho文件目录下usr/themes/THE_THEME_YOU_USE/sidebar.php
在合适位置插入如下代码:

<section class="widget">
   <?php PageToLinks('project'); ?> 
</section>

将上面代码中的project修改为你的独立页面名字

保存并关闭

完成

上述文件修改完毕,即独立页面编辑完毕后,刷新首页就能看到侧边栏中显示的内容了。

需要修改内容只需要修改独立页面,而不再需要修改代码。

需要在侧边栏中增加新的内容,只需要重复如上编辑sidebar.php即可。

详细版本及代码细节:

typecho 1.0 利用独立页面实现自定义sidebar侧边栏,如友情链接