【问题标题】:Integrating tumblr blog with website将 tumblr 博客与网站集成
【发布时间】:2010-12-06 19:04:39
【问题描述】:

我想将我的 tumblr 供稿整合到我的网站中。似乎 tumblr 对此有一个 API,但我不太确定如何使用它。据我了解,我请求该页面,然后 tumblr 返回一个包含我博客内容的 xml 文件。但是我如何将这个 xml 变成有意义的 html?我必须用 php 解析它,将相关标签转换为标题等吗?我告诉自己,这不可能那么痛苦。有人有什么见解吗?

【问题讨论】:

  • 问题中特别提到了php,使其与编程相关。

标签: php blogs tumblr


【解决方案1】:

现在有一个 javascript 包含可以执行此操作,可从 Tumblr 获得(您必须登录才能看到它):http://www.tumblr.com/developers

结果是这样的:

<script type="text/javascript" src="http://{username}.tumblr.com/js"></script>

【讨论】:

  • 这是一种超级简单的方法,而且很有效。您还可以在 js 之后添加 ?num=4 来确定显示的帖子数(此处为 4)。您也可以使用 css 对其进行样式设置,但此方法的缺点是不显示发布时间
  • 如何设置偏移量?结果开始于
  • 虽然似乎有更多选项(请查看此处:tumblr.com/docs/en/api/v2#posts),但似乎忽略了偏移量。不过,您可以使用完整的 API 进行更好的控制。
  • 现在看来这个功能已经被移除了。有没有其他选择?
  • 嗯,仍然对我有用。也许有一个坏字符或什么东西弄乱了渲染?
【解决方案2】:

如果您转到 http://yourblog.tumblr.com/api/read,其中“yourblog”应该替换为您的博客名称(请注意,如果您像我一样在自定义域上托管您的 Tumblr 博客,请使用它)您会看到您博客的 XML 版本。由于某种原因,它在 Firefox 上对我来说真的很乱,所以我使用 Chrome,尝试了几个不同的浏览器,这将有助于查看 XML 文件的格式、缩进等。

一旦您查看了博客的 XML 版本,就会发现每篇文章都有一组属性 =“值”方向的数据。这是我博客中的一个例子:

<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="" />
    '; 
?>

所以,这实际上相当简单。此处的 PHP 脚本将 xml 文件中的数据(如帖子标题和帖子文本)放入 php 变量中,然后将这些变量与一些 html 一起回显以创建一个 div,该 div 具有来自博客帖子的 sn-p。这一篇以最新的文字帖子为特色。随意使用它,只需进入并将第一个 url 更改为您自己的博客。然后从您的 xml 文件中选择您想要的任何值。

例如,假设您想要的不是最新的,而是第二个最近的“照片”帖子。您必须将 request_url 更改为:

$request_url = "http://wamoyo.com/api/read?type=photo&start=1"

或者假设您想要带有特定标签的最新帖子

$request_url = "http://wamoyo.com/api/read?tagged=events";

或者假设您想要一个特定的帖子,只需使用 id

$request_url = "http://wamoyo.com/api/read?id=11576453174";

所以你所要做的就是坚持?使用任何参数,如果您有多个参数,请使用 &。

如果你想做一些更高级的事情,你需要 tumblr api 文档:http://www.tumblr.com/docs/en/api/v2

希望这对您有所帮助!

【讨论】:

  • 相信您也可以在自定义域名上使用yourblogname.tumblr.com。例如 crystilogic.tumblr.com/api/read/json 为我工作,但 crystilogic.tumblr.com 重定向到 mixingmemory.org
  • 是的,绝对正确。神圣...哈哈!自从我提出这个问题以来,我学到了很多东西,哈哈。我现在正在做 node.js 的东西,看看我学到了多少东西有点酷。感谢 stackoverflow 的人们!
【解决方案3】:

有两种主要方法可以做到这一点。首先,您可以解析 xml,从您需要的标签中提取内容(根据您使用的是 SAX 还是 DOM 解析器,有几种方法可以做到这一点)。这是快速而肮脏的解决方案。

您也可以使用XSLT transformation 将xml 源直接转换为您想要的html。这涉及更多,因为您必须学习 xslt 模板的语法,这有点冗长。

【讨论】:

    【解决方案4】:

    您可以使用PHPTumblr,这是一个用 PHP 编写的 API 包装器,让检索帖子变得轻而易举。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-11
      • 2012-01-24
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      相关资源
      最近更新 更多