因为做了个说说的功能,结果发现,文章上下文会查出说说的cid,但因为没有标题,无法实现链接转入。
用typecho自带的函数,怎么也解决不了这个问题,于是就想着做2个函数,找出最邻近上下文中的cid,再在文章中通过上下文cid链接来实现。
具体代码:
一、在 funciton.php 文件中添加2个函数:
// 获取上一篇文章CID
function getPrevCid($created)
{
$db = Typecho_Db::get();
$query = $db->select()->from('table.contents')
->where("type = ?", "post")
->where("created < ?", $created)
->order("created", Typecho_Db::SORT_DESC);
$results = $db->fetchAll($query);
foreach ($results as $result) {
if (strlen($result["title"]) > 0) :
return $result["cid"];
break;
endif;
}
}
// 获取下一篇文章CID
function getNextCid($created)
{
$db = Typecho_Db::get();
$query1 = $db->select()->from('table.contents')
->where("type = ?", "post")
->where("created > ?", $created)
->order("created", Typecho_Db::SORT_ASC);
$results = $db->fetchAll($query1);
foreach ($results as $result) {
if (strlen($result["title"]) > 0) :
return $result["cid"];
break;
endif;
}
}
因为不知道怎么在查询语句中通过 where 过滤不为空的标题,只能通过循环实现了。
二、在 post.php 内容代码下方添加如下代码:
<div>
<?php if (getPrevCid($this->created)) :
$this->widget('Widget_Archive@precid', 'pageSize=1&type=post', 'cid=' . getPrevCid($this->created) . '')->to($PrevContent);
echo '<a href="' . $PrevContent->permalink . '"> 上一篇:' . $PrevContent->title . '</a>';
else :
echo "没有了";
endif; ?>
</div>
<div>
<?php if (getNextCid($this->created)) :
$this->widget('Widget_Archive@nextcid', 'pageSize=1&type=post', 'cid=' . getNextCid($this->created) . '')->to($NextContent);
echo '<a href="' . $NextContent->permalink . '"> 下一篇:' . $NextContent->title . '</a>';
else :
echo "没有了";
endif; ?>
</div>