2009-10-14 38 views
8

Tôi muốn tích hợp nguồn cấp dữ liệu tumblr vào trang web của mình. Có vẻ như tumblr có một API cho điều này, nhưng tôi không hoàn toàn chắc chắn làm thế nào để sử dụng nó. Từ những gì tôi hiểu, tôi yêu cầu trang và tumblr trả về tệp xml có nội dung trong blog của tôi. Nhưng làm thế nào để tôi làm cho xml này thành html có ý nghĩa? Tôi có phải phân tích cú pháp bằng php, chuyển các thẻ liên quan thành tiêu đề và v.v. không? Tôi tự nhủ rằng nó không thể đau đớn như vậy. Bất cứ ai có bất kỳ thông tin chi tiết?Tích hợp blog tumblr với trang web

+0

Câu hỏi cụ thể đề cập đến php, làm cho nó liên quan đến lập trình. –

Trả lời

4

Bạn có thể sử dụng PHPTumblr, trình bao bọc API được viết bằng PHP giúp việc truy xuất các bài đăng trở nên dễ dàng.

+1

Godsent. Bây giờ để tìm hiểu php ... – Ying

1

Có hai cách chính để thực hiện việc này. Đầu tiên, bạn có thể phân tích cú pháp xml, rút ​​nội dung ra khỏi các thẻ bạn cần (một số cách để thực hiện việc này tùy thuộc vào việc bạn sử dụng trình phân tích SAX hay DOM). Đây là giải pháp nhanh và bẩn.

Bạn cũng có thể sử dụng XSLT transformation để chuyển đổi nguồn xml trực tiếp sang html bạn muốn. Điều này có liên quan nhiều hơn kể từ khi bạn phải tìm hiểu cú pháp cho các mẫu xslt, đó là một chút chi tiết.

11

Có một javascript bao gồm thực hiện điều này bây giờ, có sẵn từ Tumblr (Bạn phải đăng nhập để xem nó): http://www.tumblr.com/developers

Nó gió lên là một cái gì đó như thế này:

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

Đây là cách siêu dễ dàng và nó hoạt động. Bạn cũng có thể thêm? Num = 4 sau khi js để xác định có bao nhiêu bài viết được hiển thị (ở đây nó sẽ là 4). Bạn cũng có thể tạo kiểu này với css, nhưng nhược điểm của phương thức này là thời gian post không được hiển thị – CodeVirtuoso

+0

Làm thế nào để thiết lập offset? Kết quả để bắt đầu tại –

+1

Trong khi nó xuất hiện rằng có nhiều tùy chọn hơn (kiểm tra ở đây: http://www.tumblr.com/docs/en/api/v2#posts), có vẻ như bù đắp được bỏ qua. Bạn có thể sử dụng API đầy đủ để kiểm soát tốt hơn. – kweerious

3

Nếu bạn đi đến http://yourblog.tumblr.com/api/read nơi "yourblog" nên được thay thế bằng tên blog của bạn (hãy cẩn thận, nếu bạn lưu trữ blog Tumblr của mình trên tên miền tùy chỉnh, như tôi làm, hãy sử dụng tên đó), bạn sẽ thấy phiên bản XML của blog của mình. Nó thực sự lộn xộn đối với tôi trên Firefox vì một số lý do vì vậy tôi sử dụng Chrome, hãy thử một vài trình duyệt khác nhau, nó sẽ giúp xem tệp XML được định dạng tốt, thụt lề và như vậy.

Khi bạn xem phiên bản XML của blog, hãy lưu ý rằng mỗi bài đăng có một loạt dữ liệu theo định hướng thuộc tính = "giá trị". Dưới đây là một ví dụ từ blog của tôi:

<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"> 

Vì vậy, có rất nhiều cách để làm điều này, tôi sẽ cho bạn thấy một tôi đã sử dụng, và thả mã của tôi trên dưới cùng của bài viết này để bạn có thể chỉ may mà theo nhu cầu của bạn. Chú ý phần type = "link"? Hoặc id = "11576453174"? Đây là những giá trị bạn sẽ sử dụng để kéo dữ liệu vào tập lệnh PHP của bạn.

Dưới đây là ví dụ:

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

Vì vậy, đây thực sự là khá đơn giản. Kịch bản PHP ở đây đặt dữ liệu (như tiêu đề bài đăng và văn bản bài) từ tệp xml vào các biến php và sau đó lặp lại các biến đó cùng với một số html để tạo một div có đoạn trích từ bài đăng trên blog. Phần này có bài đăng văn bản gần đây nhất. Vui lòng sử dụng nó, chỉ cần vào và thay đổi url đầu tiên đó thành blog của riêng bạn. Và sau đó chọn bất kỳ giá trị nào bạn muốn từ tệp xml của mình.

Ví dụ: giả sử bạn muốn, không phải là bài đăng "ảnh" gần đây nhất, nhưng là "ảnh" thứ hai gần đây nhất.Bạn phải thay đổi request_url này:

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

Hoặc giả sử bạn muốn bài viết gần đây nhất với một từ khóa cụ thể

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

Hoặc giả sử bạn muốn có một bài cụ thể, chỉ cần sử dụng id

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

Vì vậy, tất cả những gì bạn phải làm là tiếp tục? với tham số bất kỳ và sử dụng & nếu bạn có nhiều tham số.

Nếu bạn muốn làm một cái gì đó fancier, bạn sẽ cần các tài liệu tumblr api đây: http://www.tumblr.com/docs/en/api/v2

Hy vọng điều này là hữu ích!

+1

Tôi tin rằng bạn cũng có thể sử dụng 'yourblogname.tumblr.com' trên tên miền tùy chỉnh. Ví dụ 'crystilogic.tumblr.com/api/read/json' làm việc cho tôi, nhưng' crystilogic.tumblr.com' chuyển hướng đến 'mixingmemory.org'. – isomorphismes

+0

Đúng, chắc chắn là đúng. Thánh ... HAHA! Tôi đã học được rất nhiều kể từ khi tôi đặt câu hỏi này lên, lol. Tôi đang làm công cụ node.js bây giờ, Kinda mát mẻ để xem tôi đã học được bao nhiêu. Cảm ơn người dân stackoverflow! – Costa

Các vấn đề liên quan