需求:
为了让蜘蛛更容易找到文章的入口,只想搞个只有链接的简单 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
三、正常创建页面,右边选网站链接列表
更详细的使用说明,请参考代码出处:https://2dph.com/archives/typecho-article-link.html