Вопрос

Я хотел бы интегрировать канал Tumblr на свой сайт.Кажется, у tumblr есть для этого API, но я не совсем понимаю, как его использовать.Насколько я понимаю, я запрашиваю страницу, а tumblr возвращает XML-файл с содержимым моего блога.Но как мне затем превратить этот XML в осмысленный HTML?Должен ли я анализировать его с помощью php, превращая соответствующие теги в заголовки и так далее?Я говорю себе, что это не может быть так больно.У кого-нибудь есть идеи?

Это было полезно?

Решение

Вы можете использовать PHPTumblr, оболочка API, написанная на PHP, которая упрощает получение сообщений.

Другие советы

Теперь есть javascript, который делает это, и доступен на Tumblr (вы должны войти в систему, чтобы увидеть его): http://www.tumblr.com/developers

В итоге получается что-то вроде этого:

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

Если вы пойдете в http://yourblog.tumblr.com/api/read где «ваш блог» следует заменить названием вашего блога (будьте осторожны: если вы размещаете свой блог 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, содержащего фрагмент сообщения в блоге.Здесь представлен самый последний текстовый пост.Не стесняйтесь использовать его, просто зайдите и измените первый URL-адрес на свой блог.А затем выберите любые значения из вашего XML-файла.

Например, предположим, что вы хотите не самую последнюю, а вторую по времени публикацию с фотографией.Вам нужно изменить 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";

Итак, все, что вам нужно сделать, это прикрепить ?с любым параметром и используйте &, если у вас несколько параметров.

Если вы хотите сделать что-то более необычное, вам понадобится документация API Tumblr здесь: http://www.tumblr.com/docs/en/api/v2

Надеюсь, это было полезно!

Есть два основных способа сделать это.Во-первых, вы можете проанализировать XML, извлекая содержимое из нужных вам тегов (несколько способов сделать это в зависимости от того, используете ли вы анализатор SAX или DOM).Это быстрое и грязное решение.

Вы также можете использовать XSLT-преобразование чтобы преобразовать источник XML непосредственно в нужный вам HTML.Это более сложный процесс, поскольку вам придется изучить синтаксис шаблонов xslt, который немного многословен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top