我正在尝试在我的网站上创建显示RSS谷歌博主帖子的页面。我正在使用PHP,CodeIgniter和SimplePie来解析Google提要。
问题 1:
我希望能够在一页上使用 guid 创建链接,然后在下一页上显示不可侵犯的博客文章。所以我有这样的东西:
http://mysite.co.uk/technology/blog_post/tag:blogger.com,1999:blog-6168323340908483477.post-1651486241197422269
这不起作用,因为 guid 对 url 无效并且看起来一团糟(可以使用url_encode但不想(。我想这样得到它:
http://mysite.co.uk/technology/blog_post/6168323340908483477/1651486241197422269
为此,我需要了解 guid 的格式。这是一个 json 对象吗?如果是这样,我该如何拆分它?我可以使用 explode(( 来拆分它,但我想有更好的方法可以做到这一点。
问题 2:
我可以在我的CodeIgniter/SimplePie网站上显示提要,但我不能轻易显示单个提要。这是我目前的代码(未经测试(:
foreach($feeds as $k => $item):
if( $item->get_id()==$this->uri->segment(3) ): //Does id of post match id passed in?
?>
<h1 id="main-heading"><?=$page_title?></h1>
<div class="blog-date"><?=$item->get_date()?></div>
<h3><a href="<?=$item->get_link()?>"><?=$item->get_title()?></a></h3>
<div class="blog-desc"><?=$item->get_description()?></div>
<?
break;//End as we only want to display one post, need a better way of doing this.
endif;
endforeach;
显然,这是一个循环,而不是对 1 个提要的单独引用。
问题 1
您不应依赖 GUID 是某种格式,也不应依赖它是有效的 URL(除非 isPermalink
属性设置为 true
- 省略应该意味着true
,但情况并非总是如此(。
最好的办法是简单地对 GUID 进行哈希处理。如果你想让SimplePie为你做到这一点,只需使用$item->get_id(true)
问题2
如果您只尝试使用一个源,则应该只将该源传递到 SimplePie 中,而不是使用重张进纸技术。(将来我们可能会引入一个独立于SimplePie
的SimplePie_Feed
类,允许您单独循环每个提要,但这尚不存在。
这可能会让你感兴趣 雅虎的管道
管道是一种强大的组合工具,用于聚合、操作和 来自网络周围的混搭内容。