我希望能够将我的tumblr动态集成到我的网站中。看起来tumblr提供了一个API用于此功能,但我不太清楚如何使用它。据我所知,我需要请求页面,然后tumblr会返回一个包含我的博客内容的xml文件。但是,我该如何将这个xml转换成有意义的html呢?我必须通过php解析它,将相关标签转换为标题等吗?我告诉自己这不可能那么痛苦。有人有什么见解吗?
现在有一个 JavaScript 的引用可以做到这一点,它来自于 Tumblr(您需要登录才能看到):http://www.tumblr.com/developers
最终类似于以下内容:
<script type="text/javascript" src="http://{username}.tumblr.com/js"></script>
<post id="11576453174" url="http://wamoyo.com/post/11576453174" url-with-slug="http://wamoyo.com/post/11576453174/100-year-old-marathoner-finishes-race" type="link" date-gmt="2011-10-17 18:01:27 GMT" date="Mon, 17 Oct 2011 14:01:27" unix-timestamp="1318874487" format="html" reblog-key="E2Eype7F" slug="100-year-old-marathoner-finishes-race" bookmarklet="true">
所以,有很多种方法可以做到这一点,我将展示我使用的方法,并在本文底部附上我的代码,以便您可以根据自己的需求进行调整。注意type="link"部分?或者id="11576453174"?这些是您将用于将数据拉入您的PHP脚本中的值。
以下是示例:
<!-- The Latest Text Post -->
<?php
echo "";
$request_url = "http://wamoyo.com/api/read?type=regular"; //get xml file
$xml = simplexml_load_file($request_url); //load it
$title = $xml->posts->post->{'regular-title'}; //load post title into $title
$post = $xml->posts->post->{'regular-body'}; //load post body into $post
$link = $xml->posts->post['url']; //load url of blog post into $link
$small_post = substr($post,0,350); //shorten post body to 350 characters
echo // spit that baby out with some stylish html
'<div class="panel" style="width:220px;margin:0 auto;text-align:left;">
<h1 class="med georgia bold italic black">'.$title.'</h1>'
. '<br />'
. '<span>'.$small_post.'</span>' . '...'
. '<br /></br><div style="text-align:right;"><a class="bold italic blu georgia" href="'.$link.'">Read More...</a></div>
</div>
<img style="position:relative;top:-6px;" src="pic/shadow.png" alt="" />
';
?>
例如,假设您想要的不是最近的,而是第二个最近的“照片”帖子。您必须将request_url更改为此:
$request_url = "http://wamoyo.com/api/read?type=photo&start=1"
$request_url = "http://wamoyo.com/api/read?tagged=events";
$request_url = "http://wamoyo.com/api/read?id=11576453174";
有两种主要方法可以做到这一点。首先,您可以解析xml,从您需要的标记中提取内容(根据您使用SAX或DOM解析器的方式有几种方法来实现此目的)。这是快速而简单的解决方案。
您还可以使用XSLT转换直接将xml源转换为所需的html。这更加复杂,因为您必须学习xslt模板的语法,这有点冗长。