需求:

为了让蜘蛛更容易找到文章的入口,只想搞个只有链接的简单 sitemap.html

不需要包含有文章链接,文章标题,更新时间等内容的传统sitemap,

如何实现呢。

经搜索,只需要简单的在主题根目录下建个自定义模板即可实现。

操作

一、创建 URLLinks.php,复制以下代码:

<?php 
/**
 * 网站链接列表
 * 
 * @package custom 
 * 
 */
?>
    <?php 
        $db = Typecho_Db::get();
        $options = Typecho_Widget::widget('Widget_Options');
        $posts= $db->fetchAll($db->select()->from('table.contents')
                ->where('table.contents.status = ?', 'publish')
                ->order('table.contents.created', Typecho_Db::SORT_DESC));
        foreach($posts as $p)
        {
            /** 取出所有分类 */
            $p['categories'] = $db->fetchAll($db
            ->select()->from('table.metas')
            ->join('table.relationships', 'table.relationships.mid = table.metas.mid')
            ->where('table.relationships.cid = ?', $p['cid'])
            ->where('table.metas.type = ?', 'category')
            ->order('table.metas.order', Typecho_Db::SORT_ASC));

            /** 取出第一个分类作为slug条件 */
            $p['category'] = current(Typecho_Common::arrayFlatten($p['categories'], 'slug'));
            //去掉附件
            $type = $p['type'];
            if($type == "post"){
                $routeExists = (NULL != Typecho_Router::get($type));
                $pathinfo = $routeExists ? Typecho_Router::url($type, $p) : '#';
                $permalink = Typecho_Common::url($pathinfo, $options->index);
                echo "<a href=\"".$permalink."\">".$permalink."</a><br/>";
            }
        }
    ?>
注意URLLinks.php的文件编码为 utf-8等支持中文的格式,否则创建页面时显示筹码。

二、上传文件到当前主题根目录,本站为:

./themes/initial_plus

三、正常创建页面,右边选网站链接列表

给Typecho创建简单的sitemap

更详细的使用说明,请参考代码出处:https://2dph.com/archives/typecho-article-link.html

效果图

给Typecho创建简单的sitemap

文章目录