tự động post bài blogspot bằng php
Bạn có thể đã nghe nói về Blogger, một nền tảng blog miễn phí cho phép bạn dễ dàng tạo ra các web cá nhân và xuất bản các bài viết về chủ đề nào. Blogger, mà đã được khoảng từ năm 1999, là một trong những nền tảng blog đầu tiên trên web. Nó đã được mua bởi Google và tích hợp vào bộ các dịch vụ miễn phí của Google.
Ứng dụng blogger nổi tiếng
Trong khi Blogger là một lựa chọn phổ biến cho các nền tảng blog, nhiều tùy chọn khác tồn tại. Đối với một,kết nối phần mềm IBM bao gồm khả năng viết blog được tích hợp. Lựa chọn phần mềm blog phổ biến khác bao gồm Wordpress, Drupal, và Typepad, trong số rất nhiều người khác.
Với Blogger, thật dễ dàng cho những người không có kiến thức kỹ thuật cụ thể để tạo ra và duy trì weblog của mình. Blogger:
Đi kèm với một số mẫu định sẵn và bố trí
Hỗ trợ ý kiến, kiểm soát truy cập, và các thiết bị di động
Được tích hợp chặt chẽ với các dịch vụ khác (chẳng hạn như Twitter, Google AdSense, và những người khác) để chia sẻ nội dung và lưu hành tiền tệ.
Tóm lại, Blogger cung cấp mọi thứ bạn cần để xuất bản blog của bạn mà không cần phải lo lắng về các chi tiết kỹ thuật.
Từ viết tắt thường xuyên sử dụng
API: Giao diện lập trình ứng dụng
HTML: Hypertext Markup Language
HTTP: Hypertext Transfer Protocol
REST: Representational State Transfer
RSS: Really Simple Syndication
URL: Giao diện người dùng
WYSISYG: Những gì bạn thấy là những gì bạn có được
XML: Extensible Markup Language
Nhưng Blogger là không chỉ thú vị cho người dùng. Giống như nhiều dịch vụ khác của Google, Blogger có một API nhà phát triển cho phép bạn có được bàn tay của bạn trên các bộ phận bên trong của các dịch vụ và trích xuất nội dung để tạo ra các ứng dụng tùy chỉnh của riêng bạn và mashup. Bạn có thể truy cập các dữ liệu API Blogger, mà sau những mô hình REST, thông qua bất kỳ bộ công cụ phát triển XML có khả năng. Nó đã có thư viện client cho nhiều ngôn ngữ lập trình phổ biến, bao gồm yêu thích của tôi: PHP.
Trong bài viết này, tìm hiểu về API Blogger dữ liệu, và làm thế nào để tích hợp và sử dụng nội dung Blogger với các ứng dụng PHP. Nhiều ví dụ sẽ hướng dẫn bạn thông qua:
Kết nối và xác thực để các API
Lấy danh sách blog và nguồn cấp dữ liệu blog của
Thêm, cập nhật và xóa nội dung
Làm việc với các blog ý kiến
Trở lại đầu trang
Khái niệm chính
Trước khi bạn nhận được vào các mã PHP, phần này cung cấp cho một cái nhìn tổng quan về các API Blogger Data. Như với tất cả các dịch vụ dựa trên REST, API chấp nhận yêu cầu HTTP có chứa một hoặc nhiều đối số đầu vào XML-mã hóa và trả về phản ứng XML-mã hóa có thể được phân tích cú pháp trong bất kỳ khách hàng XML-aware. Với API Blogger, phản ứng luôn luôn bao gồm một Atom hoặc RSS nguồn cấp dữ liệu chứa các thông tin yêu cầu.
Blogger có cả thức ăn công cộng và tư nhân. Bạn có thể truy cập vào nguồn cấp dữ liệu công cộng, chẳng hạn như danh sách các bài viết trong một blog, không có chứng thực. Nguồn cấp dữ liệu tin yêu cầu xác thực. Ví dụ, một nguồn cấp dữ liệu tin yêu cầu xác thực để thực hiện thêm hoặc cập nhật các hoạt động trên một bài đăng blog hoặc comment. Các ví dụ trong bài viết này chứng tỏ cả hai loại thức ăn.
Để nhận được nhiều nhất của bài viết này, bạn cần phải có một tài khoản Blogger với ít nhất một blog và một bài. Nếu bạn không có, bạn có thể đăng nhập vào Blogger (xem Tài nguyên), tạo ra một blog mới, và thêm một bài mới để nó cho mục đích thử nghiệm. Trong khi bạn đang đăng nhập, hãy cố gắng truy cập vào các URL http://www.blogger.com/feeds/default/blogs trong một trình duyệt web. Bạn sẽ thấy một cái gì đó tương tự như Liệt kê 1.
Liệt kê 1. Blogger metafeed
<? xml version = "1.0" encoding = "UTF-8"?>
<? xml-stylesheet href = "http://www.blogger.com/styles/atom.css" type = "text / css"?>
<xmlns thức ăn = 'http: //www.w3.org/2005/Atom'
xmlns: OpenSearch = 'http: //a9.com/-/spec/opensearchrss/1.0/'>
<id> tag: blogger.com, 1999: người dùng 12345USERIDHERE12345.blogs </ id>
<cập nhật> 2011-09-02T03: 35: 34.547Z </ cập nhật>
<'text' loại title => Blogs V Vaswani của </ title>
<link rel = 'http: //schemas.google.com/g/2005#feed' type = 'application / atom + xml'
href = 'http: //www.blogger.com/feeds/12345USERIDHERE12345/blogs'/>
<'tự' rel = link type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345USERIDHERE12345/blogs'/>
<link rel = kiểu 'thay thế' = 'text / html "
href = 'http: //www.blogger.com/profile/12345USERIDHERE12345'/>
<author>
<name> V Vaswani </ name>
<email> noreply@blogger.com </ email>
</ author>
<phiên bản phát = '7.00' uri = 'http: //www.blogger.com'> Blogger </ máy phát điện>
<OpenSearch: totalResults> 1 </ OpenSearch: totalResults>
<OpenSearch: startIndex> 1 </ OpenSearch: startIndex>
<OpenSearch: itemsPerPage> 25 </ OpenSearch: itemsPerPage>
<entry>
<id> tag: blogger.com, 1999: người dùng 12345USERIDHERE12345.blog
-12345BLOGIDHERE12345 </ Id>
<xuất bản> 2008-02-19T23: 30: 41,755-08: 00 </ xuất bản>
<cập nhật> 2011-09-01T04: 01: 19,669-07: 00 </ cập nhật>
<'text' loại title => Blog V Vaswani của </ title>
<kiểu tóm tắt = "html"> </ summary>
<'tự' rel = link type = "application / atom + xml 'href =' http: //www.blogger.com/feeds/
12345USERIDHERE12345 / blog / 12345BLOGIDHERE12345 '/>
<link rel = 'text / html' 'thay thế' type = href = 'http: //vvaswani.blogspot.com/'/>
<link rel = 'http: //schemas.google.com/g/2005#feed'
type = "application / atom + xml '
href = 'http: //vvaswani.blogspot.com/feeds/posts/default'/>
<link rel = 'http: //schemas.google.com/g/2005#post' type = 'application / atom + xml'
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/posts/default'/>
<link rel = 'http: //schemas.google.com/blogger/2008#template'
type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/template'/>
<rel link = 'http: //schemas.google.com/blogger/2008#settings'
type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/settings'/>
<author>
<name> V Vaswani </ name>
<email> noreply@blogger.com </ email>
</ author>
<gd: xmlns extendedProperty: gd = 'http: //schemas.google.com/g/2005'
name = value 'IS_PUBLIC_BLOG' = 'true' />
<gd: xmlns extendedProperty: gd = 'http: //schemas.google.com/g/2005'
name = 'PICASAWEB_ALBUM_ID' value = "0" />
</ entry>
</ feed>
Các metafeed trong Liệt kê 1 cung cấp một danh sách của tất cả các blog liên quan đến người sử dụng được xác thực hiện. Nó sẽ mở ra với một<ăn> yếu tố như các yếu tố gốc. Các <feed> yếu tố có chứa:
<link> yếu tố, trong đó có chứa các URL cho các phiên bản khác nhau của thức ăn
An <author> yếu tố, trong đó xác định chủ sở hữu tài khoản
<OpenSearch> yếu tố, trong đó có chứa thống kê tóm tắt
Ngoài cùng <feed> yếu tố bao quanh một hoặc nhiều <entry> yếu tố, từng đại diện cho một blog. Mỗi <entry> chứa thêm chi tiết, bao gồm tiêu đề, mô tả, ngày tạo, ngày cập nhật cuối cùng, và là tác giả của mỗi blog. Mỗi mục cũng bao gồm một tập hợp các liên kết nguồn cấp dữ liệu, đó là thức ăn có chứa các bài viết trên blog, blog template, và các thiết lập blog.
Trong Liệt kê 1, mỗi blog được liên kết với một định danh duy nhất, hoặc blog ID. Blog ID được sử dụng để xây dựng URL đến các nguồn cấp dữ liệu blog-cụ thể. Ví dụ, để tìm thức ăn cho một bài blog cụ thể, sử dụng các URL được chỉ định trong <link rel = 'http: //schemas.google.com/g/2005#post' ... />. Tố Liệt kê 2 cho thấy những gì các nguồn cấp dữ liệu bài có thể trông như thế nào.
Liệt kê 2. Blogger thức ăn bài
<? xml version = "1.0" encoding = "UTF-8"?>
<? xml-stylesheet href = "http://www.blogger.com/styles/atom.css" type = "text / css"?>
<xmlns thức ăn = 'http: //www.w3.org/2005/Atom'
xmlns: OpenSearch = 'http: //a9.com/-/spec/opensearchrss/1.0/'
xmlns: georss = 'http: //www.georss.org/georss'
xmlns: thr = 'http: //purl.org/syndication/thread/1.0'>
<id> tag: blogger.com, 1999: blog-12345BLOGIDHERE12345 </ id>
<cập nhật> 2011-09-01T21: 06: 44,240-07: 00 </ cập nhật>
<'text' loại title => Blog V Vaswani của </ title>
<type phụ đề = "html"> </ subtitle>
<link rel = 'http: //schemas.google.com/g/2005#feed' type = 'application / atom + xml'
href = 'http: //vvaswani.blogspot.com/feeds/posts/default'/>
<'tự' rel = link type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/posts/default'/>
<link rel = 'http: //schemas.google.com/g/2005#post' type = 'application / atom + xml'
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/posts/default'/>
<link rel = 'text / html' 'thay thế' type = href = 'http: //vvaswani.blogspot.com/'/>
<author>
<name> V Vaswani </ name>
<email> noreply@blogger.com </ email>
</ author>
<phiên bản phát = '7.00' uri = 'http: //www.blogger.com'> Blogger </ máy phát điện>
<OpenSearch: totalResults> 3 </ OpenSearch: totalResults>
<OpenSearch: startIndex> 1 </ OpenSearch: startIndex>
<OpenSearch: itemsPerPage> 25 </ OpenSearch: itemsPerPage>
<entry>
<id> tag: blogger.com, 1999: blog-12345BLOGIDHERE12345.post-
12345POSTIDHERE12345 </ id>
<xuất bản> 2011-09-01T03: 34: 00.001-07: 00 </ xuất bản>
<cập nhật> 2011-09-01T21: 06: 44,258-07: 00 </ cập nhật>
<'text' loại title => Post thứ ba của tôi </ title>
<content type = "html"> Đây là bài viết thứ ba của tôi
<br /> </ nội dung>
<rel link = 'trả lời' type = 'application / atom + xml'
href = 'http: //vvaswani.blogspot.com/feeds/12345POSTIDHERE12345/comments/default'
title = "Đăng Nhận xét '/>
<rel link = 'trả lời' type = 'text / html "
https href = ': //www.blogger.com/comment.g?
blogID = 12345BLOGIDHERE12345 & postID = 12345POSTIDHERE12345 '
title = '0 Bình luận' />
<'chỉnh sửa' rel = link type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/posts/
default / 12345POSTIDHERE12345 '/>
<'tự' rel = link type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/posts/
default / 12345POSTIDHERE12345 '/>
<link rel = kiểu 'thay thế' = 'text / html "
href = 'http: //vvaswani.blogspot.com/2011/09/my-third-d.html'
title = 'My bài viết thứ ba' />
<author>
<name> V Vaswani </ name>
<email> noreply@blogger.com </ email>
</ author>
<thr: tổng số> 0 </ Thr: tổng số>
</ entry>
...
</ feed>
Liệt kê 2 cho thấy rằng các thức ăn có chứa một bài tập các <entry> yếu tố, và rằng mỗi người đại diện cho một bài duy nhất của blog. Mỗi<entry> bao gồm:
Các tiêu đề, nội dung, và ngày xuất bản của bài viết.
Liên kết đến URL công cộng của bài viết, bài chỉnh sửa URL, URL comments thức ăn, và ý kiến chỉnh sửa feed URL. Những thức ăn được sử dụng để xem và chỉnh sửa các bài viết, hoặc ý kiến của mình, thông qua các API Blogger Data.
Mỗi bài cũng có một định danh duy nhất, gọi là bài ID, mà là ở <id> yếu tố của mục nhập. Nó là một chuỗi phức hợp bao gồm cả ID blog và bài ID, theo định dạng tag: blogger.com, 1999: blog-BLOGID.post-postID. Ví dụ, trong các chuỗi nhận dạng tag: blogger.com, 1999:blog-1234.post-6789, bộ nhận dạng blog là 1234 và định danh bài là 6789.
Trở lại đầu trang
Lấy blog và bài viết
Bây giờ bạn biết làm thế nào để truy cập vào blog và bài feeds thông qua các API, hãy thử những điều tương tự từ bên trong một ứng dụng PHP.Để tạo ra các nguồn cấp dữ liệu trong bảng liệt kê 1 và 2, đầu tiên bạn đăng nhập bằng tay vào Blogger bằng một tài khoản Google. Để truy xuất và xử lý các nguồn cấp dữ liệu từ bên trong một ứng dụng PHP, nhiệm vụ xác thực như nhau cần phải được thực hiện theo chương trình.
Làm việc chứng thực bằng tay là một công việc khá lộn xộn và đòi hỏi rất nhiều mã vào tài khoản cho các kịch bản khác nhau mà có thể phát sinh trong quá trình giao dịch xác thực điển hình. May mắn thay, Zend Framework có Zend_Gdata, một thư viện khách PHP thiết kế đặc biệt cho các nhà phát triển đang cố gắng để tích hợp các ứng dụng PHP với các API dữ liệu của Google. Zend_Gdata cung cấp một giao diện hướng đối tượng thuận lợi để các API dữ liệu của Google (xem liên kết trong Tài nguyên để tải về nó). Nó đóng gói hầu hết các tác vụ thông thường, bao gồm xác thực, và để bạn tự do để tập trung vào các chức năng cốt lõi của ứng dụng của bạn.
Sau khi bạn cài đặt thư viện Gdata Zend, xem xét thông qua Liệt kê 3. Nó cho thấy làm thế nào để xử lý thức ăn từ Liệt kê 1 và chuyển đổi nó thành một trang web liệt kê tất cả các web của người sử dụng xác thực trên Blogger.
Liệt kê 3. Liệt kê các blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Có được danh sách của tất cả các blog
$ query = Zend_Gdata_Query mới ('http://www.blogger.com/feeds/default/blogs');
$ ăn = $ dịch vụ-> getFeed ($ query);
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
<html>
<head> </ head>
<body>
<h2> Blogs </ h2>
<ul>
<? php foreach ($ thức ăn như $ entry):?>
<li>
<a href = "<? php?
echo $ entry-> getLink ('thay thế') -> getHref (); ?> ">
<? php echo $ entry-> getTitle (); ?>
</a>
</ li>
<? php endforeach; ?>
</ ul>
</ body>
</ html>
Liệt kê 3 tải các thư viện lớp Zend và khởi tạo một thể hiện của Zend_Gdata lớp dịch vụ. Zend_Gdata sử dụng một Zend_Http_Client đối tượng, được cung cấp các thông tin xác thực người dùng cần thiết và sử dụng để mở một kết nối được xác thực với dịch vụ Blogger. Lớp này cũng phục vụ như là điểm kiểm soát cho tất cả các tương tác tiếp theo với các API Blogger Data.
Khi kết nối được xác thực là mở, getFeed () là phương pháp được sử dụng để lấy danh sách các blog. GetFeed () chấp nhận mộtZend_Gdata_Query đối tượng, đó là thông qua các URL cho các danh sách thức ăn blog. Việc đối phó với getFeed () gọi API là một nguồn cấp dữ liệu XML tương tự như trong Liệt kê 1, sau đó được phân tích và chuyển đổi thành một đối tượng PHP. Mục trong nguồn cấp dữ liệu được biểu diễn như là các phần tử mảng, làm cho nó có thể:
Lặp qua các nguồn cấp dữ liệu
Lấy tên blog cá nhân và URL
Định dạng chúng để hiển thị trong một trình duyệt web
Hình 1 cho thấy sản lượng mà bạn có thể nhìn thấy.
Hình trang web 1. Ví dụ hiển thị blog của người dùng
Như đã nói trước đây, mỗi blog và đăng bài trong các dịch vụ Blogger có một định danh duy nhất. Nếu bạn có định danh duy nhất cho một blog, bạn có thể tạo ra các URL cho các cấp dữ liệu blog tương ứng, trong đó có chứa một danh sách tất cả các bài viết trong blog đó. Liệt kê 4 cho thấy quá trình để lấy và xử lý như một nguồn cấp dữ liệu blog với khách hàng Zend_Gdata thư viện.
Liệt kê 4. Liệt kê bài đăng trên blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Có được danh sách của tất cả các bài viết trong blog feed
$ query = Zend_Gdata_Query mới (
'http://www.blogger.com/feeds/YOUR-BLOG-ID-HERE/posts/default');
$ ăn = $ dịch vụ-> getFeed ($ query);
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
<html>
<head> </ head>
<body>
<h2> bài </ h2>
<ul>
<? php foreach ($ thức ăn như $ entry):?>
<li>
<a href = "<? php?
echo $ entry-> getLink ('thay thế') -> getHref (); ?> ">
<? php echo $ entry-> getTitle (); ?>
</a>
</ li>
<? php endforeach; ?>
</ ul>
</ body>
</ html>
Như trong Liệt kê 3, ví dụ 4 đầu tiên khởi tạo các thư viện Zend và tạo ra một thực Zend_Gdata đối tượng dịch vụ. Các định danh blog được sử dụng để xây dựng các URL nguồn cấp dữ liệu blog, được chuyển đổi thành một Zend_Gdata_Query đối tượng và chuyển tới getFeed ()phương pháp. Các nguồn cấp dữ liệu kết quả sau đó được phân tích và xử lý, theo cách thông thường, để tạo ra một danh sách của tất cả các bài viết trong blog được chỉ định. Hình 2 cho thấy một ví dụ về đầu ra.
Hình 2. Trang Web hiển thị bài đăng trên blog của người dùng
Bạn có thể kết hợp Liệt kê 3 và Liệt kê 4 để tạo ra một danh sách của tất cả các blog của người dùng xác thực và các bài viết trong mỗi blog. Liệt kê 5 cho thấy các mã kết hợp.
Liệt kê 5. Liệt kê các blog và viết blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Tạo mảng
$ data = array ();
// Có được danh sách của tất cả các bài viết trong tất cả các nguồn cấp dữ liệu blog của
$ query1 = Zend_Gdata_Query mới ('http://www.blogger.com/feeds/default/blogs');
$ = $ feed1 dịch vụ-> getFeed ($ query1);
foreach ($ feed1 như $ entry 1) {
$ arr = explode ('-', (string) $ entry1-> getId ());
$ id = $ arr [2];
$ query2 = new Zend_Gdata_Query (
'http://www.blogger.com/feeds/'.$id.'/posts/default');
$ = $ feed2 dịch vụ-> getFeed ($ query2);
$ blogArray = array (
'title' => (string) $ entry1-> getTitle (),
'uri' => (string) $ entry1-> getLink ('thay thế') -> getHref (),
= 'gửi'> array ()
);
foreach ($ feed2 như $ entry2) {
$ postArray = array (
'title' => (string) $ entry2-> getTitle (),
'uri' => (string) $ entry2-> getLink ('thay thế') -> getHref ()
);
$ blogArray ['gửi'] [] = $ postArray;
}
$ data [] = $ blogArray;
}
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
<html>
<head> </ head>
<body>
<h2> Blog và bài viết </ h2>
<div id = "kết quả">
<? php foreach ($ dữ liệu như là $ d):?>
<ul>
<li> <a href="<?php vang $d['uri']; ?> ">
<? php echo $ d ['title']; ?> </a> </ li>
<ul>
<? php foreach ($ d ['gửi'] là $ p):?>
<li> <a href="<?php vang $p['uri']; ?> ">
<? php echo $ p ['title']; ?> </a> </ li>
<? php endforeach; ?>
</ ul>
</ ul>
<? php endforeach; ?>
</ div>
</ body>
</ html>
Liệt kê 5 yêu cầu đầu tiên metafeed blog và lặp trên các mục bên trong nó để lấy định danh duy nhất của mỗi blog. Định danh này sau đó được sử dụng để xây dựng các URL bài feed của blog, được yêu cầu và xử lý để trích xuất tiêu đề và URL của từng bài. Tất cả các thông tin này được lưu trữ trong một mảng lồng nhau, như trong Liệt kê 6.
Liệt kê 6. mảng Nested
Mảng
(
[0] => Array
(
Blog [title] => V Vaswani của
[uri] => http: //***.blogspot.com/
[gửi] => Array
(
[0] => Array
(
[title] => Thứ tư bài của mình
[uri] => http: //***.blogspot.com/2011/09/my-fourth-post.html
)
[1] => Array
(
[title] => Bài viết thứ ba của tôi
[uri] => http: //***.blogspot.com/2011/09/my-third-d.html
)
[2] => Array
(
[title] => My bài viết thứ hai
[uri] => http: //***.blogspot.com/2011/08/my-second-post.html
)
[3] => Array
(
[title] => My First bài viết
[uri] => http: //***.blogspot.com/2008/02/testing.html
)
)
)
[1] => Array
(
[title] Blog Thứ hai => V Vaswani của
[uri] => http: //***.blogspot.com/
[gửi] => Array
(
[0] => Array
(
[title] => My bài viết đầu tiên trong Blog Thứ hai của tôi
[uri] => http: //***.blogspot.com/2011/09/my-first-post-in-my-second-blog.html
)
)
)
)
Một khi mảng được tạo ra hoàn toàn, bạn chỉ có thể lặp trên nó và chuẩn bị một danh sách lồng nhau của các blog và bài viết của họ. Hình 3 cho thấy một ví dụ về đầu ra.
Hình 3. Trang Web hiển thị blog của người dùng và viết blog
Trở lại đầu trang
Thêm bài đăng trên blog
Ngoài việc cho phép truy bài, các API Blogger Dữ liệu cũng cho phép người sử dụng xác thực để thêm bài viết mới vào một blog lập trình. Tạo mớiZend_Gdata_App_Entry đối tượng, đặt tiêu đề và nội dung của nó, và sau đó POST nó vào nguồn cấp dữ liệu bài. Liệt kê 7 cho thấy mã ví dụ.
Liệt kê 7. Thêm một bài viết trên blog
<? php
if (isset ($ _ POST ['submit'])) {
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Đặt blog của id
$ id = 'YOUR-BLOG-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Tạo một đối tượng mục mới
// Cư nó với người sử dụng đầu vào
$ uri = 'http://www.blogger.com/feeds/'. $ id. '/ posts / default';
$ entry = $ dịch vụ-> newEntry ();
$ entry-> title = $ dịch vụ-> newTitle ($ _ POST ['title']);
$ entry-> content = $ dịch vụ-> newContent ($ _ POST ['cơ thể']);
$ entry-> content-> setType ('text');
// Lưu nhập vào máy chủ
// Trả về id duy nhất cho bài mới
$ phản ứng = $ dịch vụ-> insertEntry ($ entry, $ uri);
$ arr = explode ('-', $ response-> getId ());
$ id = $ arr [2];
echo 'thêm thành bài với ID:'. $ id;
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
}
?>
<html>
<head> </ head>
<body>
<h2> Add New Post </ h2>
<form method = "post">
Tiêu đề: <br/> <input type = "text" name = "title"
size = "50" /> <br/>
Body: Tên <br/> <textarea = "cơ thể" cols = "40"
rows = "10"> </ textarea> <br/>
<input type = "submit" name = "submit" value = "Post" />
</ form>
</ body>
</ html>
Trong các mã trong Liệt kê 7, một hình thức web đơn giản cho phép người dùng nhập vào một tiêu đề và cơ thể cho một bài đăng blog. Sau khi hình thành được gửi, kịch bản tải các thư viện lớp Zend và tạo ra một đối tượng dịch vụ chứng thực. Các kịch bản sau đó sử dụng các đối tượng dịch vụ của newEntry () phương pháp để tạo ra một đối tượng mục mới và sử dụng newTitle () và newContent () phương pháp để thiết lập các tiêu đề và nội dung của các bài đăng blog từ đầu vào của người dùng. Sau khi các thuộc tính được thiết lập, các insertEntry () là phương pháp được sử dụng để lưu các bài mới cho các máy chủ của Google.
Hình 4 cho thấy một ví dụ về hình thức.
Hình 4. Hình thức Web để thêm một bài đăng blog mới
Giá trị trả về của insertEntry () phương pháp là một mục đại diện cho chức danh mới được tạo ra. Mục nhập này đã chứa các định danh duy nhất của bài, có thể được tách ra và hiển thị trên trang kết quả. Sau khi nó được cứu, các bài mới sẽ được nhìn thấy trong các blog công cộng và cũng xuất hiện trong tất cả các nguồn cấp dữ liệu API cho blog đó.
Trở lại đầu trang
Chỉnh sửa và xóa bài đăng trên blog
Bạn cũng có thể xóa hoặc sửa bài viết hiện có thông qua các API Blogger Data. Trong cả hai trường hợp, tương ứng DELETE hoặc PUT yêu cầu phải được truyền đi để chỉnh sửa URL của bài viết (xem Liệt kê 2 cho một ví dụ). Chỉ xác thực người dùng có thể thực hiện cả hai hoạt động này.
Các mã trong Liệt kê 8 cho thấy làm thế nào để xóa một bài đăng blog hiện có thông qua các API, giả sử bạn đã có các blog và bài ID.
Liệt kê 8. Xóa một bài viết trên blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Thiết lập blog và bài ids
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
$ pid = 'YOUR-POST-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Gán URI cho mục để xóa
// Lấy từ <link rel = chỉnh sửa ... />
$ uri = 'http://www.blogger.com/feeds/'. $ thầu. '/ posts / default /'. $ pid;
$ dịch vụ-> xóa ($ uri);
echo 'xóa thành công bài với ID:'. $ pid;
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
Liệt kê 8 sử dụng các đối tượng dịch vụ của delete () phương pháp để xóa các bài viết trên blog được chỉ định. Các delete () phương pháp chấp nhận chỉnh sửa URL của bài và truyền một yêu cầu DELETE để URL đó. Sau khi nó bị xóa, các bài viết trên blog sẽ biến mất từ cả các blog công cộng và bất kỳ API feed mà tham khảo nó.
Để hiển thị các mã để cập nhật một bài đăng blog hiện có thông qua các API, một lần nữa giả sử bạn đã có các blog và bài IDs, sử dụng mã trongLiệt kê 9.
Liệt kê 9. Đang cập nhật một bài đăng blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Thiết lập blog và bài ids
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
$ pid = 'YOUR-POST-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Gán URI cho mục cập nhật
// Lấy từ <link rel = tự ... />
$ uri = 'http://www.blogger.com/feeds/'. $ thầu. '/ posts / default /'. $ pid;
// Lấy mục hiện tại
// Gán giá trị mới
// Lưu lại
$ phản ứng = $ dịch vụ-> get ($ uri);
$ entry = Zend_Gdata_App_Entry mới ($ response-> getBody ());
$ entry-> title = $ dịch vụ-> newTitle ("title mới");
$ entry-> content = $ dịch vụ-> newContent ("nội dung mới");
$ entry-> content-> setType ('text');
$ dịch vụ-> updateEntry ($ entry);
echo 'Đã cập nhật thành bài với ID:'. $ pid;
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
Cập nhật một bài viết trên blog thông qua các API là một quá trình hai bước. Đầu tiên, bạn cần phải lấy bài blog hiện có và chuyển đổi nó vào mộtZend_Gdata_App_Entry đối tượng. Sau đó, bạn có thể sử dụng phương pháp đối tượng phục vụ, chẳng hạn như newTitle () vànewContent (), để cập nhật các mục nhập và lưu nó lại cho máy chủ bằng cách sử dụng updateEntry () phương pháp.
Tương tự như các insertEntry () phương pháp, giá trị trả về của updateEntry () phương pháp là một mục đại diện cho bài viết bao gồm nhận dạng độc đáo của nó và nội dung. Sau khi nó được cứu, các bài cập nhật sẽ được nhìn thấy trong các blog công cộng và trong tất cả các nguồn cấp dữ liệu API tham khảo blog mà.
Trở lại đầu trang
Làm việc với các ý kiến
Cũng như bạn có thể thêm, sửa, xóa bài viết, bạn cũng có thể thêm, chỉnh sửa, và xóa bài bình luận. Trong Liệt kê 2, nhận thấy rằng mỗi mục bài bao gồm các liên kết đến các bài bình luận của thức ăn. Thêm một lời nhận xét mới cũng đơn giản như chèn một mục nhập vào nguồn cấp dữ liệu này bình luận.
Liệt kê 10 cho thấy quá trình để thêm bình luận mới cho bài viết.
Liệt kê 10. Thêm một lời nhận xét mới
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Thiết lập blog và bài ids
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
$ pid = 'YOUR-POST-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Tạo một đối tượng mục mới
// Cư nó với người sử dụng đầu vào
$ uri = "http://www.blogger.com/feeds/$bid/$pid/comments/default";
$ entry = $ dịch vụ-> newEntry ();
$ entry-> content = $ dịch vụ-> newContent ('Đây là một bài viết rất thú vị.');
$ entry-> content-> setType ('text');
// Lưu nhập vào máy chủ
// Trả về id duy nhất cho bình luận mới
$ phản ứng = $ dịch vụ-> insertEntry ($ entry, $ uri);
$ arr = explode ('/', $ response-> getEditLink () -> href);
$ id = $ arr [8];
echo 'thêm thành công bình với ID:'. $ id;
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
Thêm một lời nhận xét mới là gần như giống như thêm một bài mới; sự khác biệt chỉ nằm ở các URL mà yêu cầu được gửi (trong trường hợp này, các ý kiến feed URL). Việc đối phó với insertEntry () phương pháp là một đối tượng đại diện cho bình luận mới được bổ sung. Các đối tượng sau đó có thể được phân tích để lấy định danh comment độc đáo, đó là cần thiết nếu bạn muốn xóa bình luận sau đó.
Giả sử bạn có nhận dạng bình luận, bạn có thể sử dụng mã trong Liệt kê 11 để lập trình loại bỏ các bình luận với các delete () phương pháp.
Liệt kê 11. Xóa một bình luận
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Thiết lập blog, bài viết và bình luận ids
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
$ pid = 'YOUR-POST-ID-HERE';
$ cid = 'YOUR-BÌNH-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Gán URI cho mục để xóa
// Lấy từ <link rel = chỉnh sửa ... />
$ uri = "http://www.blogger.com/feeds/$bid/$pid/comments/default/$cid";
$ dịch vụ-> xóa ($ uri);
echo 'comment xóa thành công với ID:'. $ cid;
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
Bạn cũng có thể sử dụng các URL nhận thức ăn tương tự để lấy một danh sách của tất cả các bình luận cho bài viết, như trong Liệt kê 12.
Liệt kê 12. Liệt kê ý kiến
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Thiết lập blog và bài ids
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
$ pid = 'YOUR-POST-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Có được danh sách của tất cả các bình luận cho bài viết
$ uri = "http://www.blogger.com/feeds/$bid/$pid/comments/default/";
$ query = Zend_Gdata_Query mới ($ uri);
$ ăn = $ dịch vụ-> getFeed ($ query);
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
<html>
<head> </ head>
<body>
<h2> Cảm </ h2>
<div id = "kết quả">
<ul>
<? php foreach ($ thức ăn như $ entry):?>
<? php $ author = $ entry-> getAuthor (); ?>
<li> <? php echo $ entry-> getTitle (); ?>
- <? Php echo $ tác giả [0] -> getName (); ?> <br/>
<? php echo date ('d Myh: i', strtotime ($ entry-> getUpdated ())); ?>
</ li>
<? php endforeach; ?>
</ ul>
</ body>
</ html>
Trở lại đầu trang
Ứng dụng ví dụ: Hệ thống quản trị nội dung
Hãy đặt mọi thứ vào thực tế bằng cách xây dựng một ứng dụng thực tế đơn giản đó chứng tỏ sức mạnh của các API Blogger Data. Các ứng dụng ví dụ là một người quản lý nội dung web dựa trên cho phép người dùng xem các bài viết blog hiện có của họ, thêm bài viết mới, và chỉnh sửa hoặc xóa bài viết hiện có. Chỉnh sửa được thực hiện thông qua một trình soạn thảo WYSIWYG dựa trên trình duyệt và được chuyển tới Blogger thông qua các API Blogger Data.
Để bắt đầu, tải về và cài đặt các trình soạn thảo TinyMCE JavaScript trên máy chủ phát triển của bạn (xem Tài nguyên cho một liên kết). Tạo một kịch bản có chứa các mã được hiển thị trong Liệt kê 13.
Liệt kê 13. Quản lý nội dung blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Đặt blog của id
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Cho tiện ích và hiệu chỉnh hoạt động
if (isset ($ _ POST ['submit'])) {
// Nếu bài id hiện tại
// Cập nhật bài với nội dung mới
if (isset ($ _ POST ['pid'])) {
$ arr = explode ('-', $ _GET ['pid']);
$ pid = $ arr [2];
$ uri = 'http://www.blogger.com/feeds/'. $ thầu. '/ posts / default /'. $ pid;
$ phản ứng = $ dịch vụ-> get ($ uri);
$ entry = Zend_Gdata_App_Entry mới ($ response-> getBody ());
$ entry-> title = $ dịch vụ-> newTitle ($ _ POST ['title']);
$ entry-> content = $ dịch vụ-> newContent ($ _ POST ['cơ thể']);
$ entry-> content-> setType ('text');
$ dịch vụ-> updateEntry ($ entry);
echo 'Đã cập nhật thành bài với ID:'. $ pid;
} Else {
// Nếu bài id không có mặt
// Tạo một bài mới
// Cư nó với người sử dụng đầu vào
$ uri = 'http://www.blogger.com/feeds/'. $ thầu. '/ posts / default';
$ entry = $ dịch vụ-> newEntry ();
$ entry-> title = $ dịch vụ-> newTitle ($ _ POST ['title']);
$ entry-> content = $ dịch vụ-> newContent ($ _ POST ['cơ thể']);
$ entry-> content-> setType ('text');
$ phản ứng = $ dịch vụ-> insertEntry ($ entry, $ uri);
$ arr = explode ('-', $ response-> getId ());
$ id = $ arr [2];
echo 'thêm thành bài với ID:'. $ id;
}
}
// Cho chỉnh sửa và xóa các hoạt động
if (isset ($ _ GET ['op'])) {
// Tạo bài URL
$ arr = explode ('-', $ _GET ['pid']);
$ pid = $ arr [2];
$ uri = 'http://www.blogger.com/feeds/'. $ thầu. '/ posts / default /'. $ pid;
chuyển đổi ($ _ GET ['op']) {
trường hợp 'xóa':
// Xóa bài
$ dịch vụ-> xóa ($ uri);
echo 'xóa thành công bài với ID:'. $ pid;
gãy;
trường hợp 'chỉnh sửa':
// Lấy bài cho hiển thị trong biểu mẫu chỉnh sửa
$ phản ứng = $ dịch vụ-> get ($ uri);
$ entry = Zend_Gdata_App_Entry mới ($ response-> getBody ());
}
}
// Có được danh sách của tất cả các bài viết trong blog feed
$ query = Zend_Gdata_Query mới (
'http://www.blogger.com/feeds/'.$bid.'/posts/default');
$ ăn = $ dịch vụ-> getFeed ($ query);
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
<html>
<head>
<script type = "text / javascript"
src = "TinyMCE / JScripts / tiny_mce / tiny_mce.js"> </ script>
<script type = "text / javascript">
tinyMCE.init ({
chế độ: "textareas",
Chủ đề: "tiên tiến",
theme_advanced_buttons1: "in đậm, in nghiêng, gạch dưới, |, justifyleft,
justifycenter, justifyright, |, code, preview, |, ForeColor, backcolor, |, sub, sup,
|, fontsizeselect ",
theme_advanced_buttons2: "cut, copy, paste, |, bullist, numlist, |, outdent, thụt lề,
|, undo, redo, |, liên kết, tháo liên kết anchor, hình ảnh, |, removeformat ",
theme_advanced_buttons3: "",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "trái",
theme_advanced_statusbar_location: "đáy",
theme_advanced_resizing: đúng
});
</ script>
</ head>
<body>
<h2> Xem bài viết </ h2>
<ul>
<? php foreach ($ thức ăn như $ e):>
<li> <? php echo $ e-> getTitle (); ?> <br/>
<a href = "<? php?
echo $ e-> getLink ('thay thế') -> getHref (); ?> "> Xem </a>
| <a href="?op=edit&pid=<?php vang $e-> getId ();?> "> Edit </a>
| <a href="?op=delete&pid=<?php vang $e-> getId ();?> "> Xóa
</a>
</ li>
<? php endforeach; ?>
</ ul>
<a href="<?php vang $_SERVER['PHP_SELF']; ?> ">
Thêm một bài mới </a>
<? php if (isset ($ _ GET ['op']) && $ _GET ['op'] == 'chỉnh sửa'):?>
<h2> Chỉnh sửa bài viết </ h2>
<form method = "post">
Tiêu đề: <br/> <input type = "text" name = "title" size = "50"
value = "<? php echo $ entry-> title;?>" /> <br/>
Body: Tên <br/> <textarea = "cơ thể" cols = "40"
? rows = "10"> <? php echo $ entry-> nội dung; ?> </ textarea> <br/>
<input type = tên "ẩn" = "pid"
value = "<? php echo $ entry-> id;?>" />
<input type = "submit" name = "submit" value = "Post" />
</ form>
<? php khác:?>
<h2> Add New Post </ h2>
<form method = "post">
Tiêu đề: <br/> <input type = "text" name = "title"
size = "50" /> <br/>
Body: Tên <br/> <textarea = "cơ thể" cols = "40"
rows = "10"> </ textarea> <br/>
<input type = "submit" name = "submit" value = "Post" />
</ form>
<? php endif; ?>
</ body>
</ html>
Đoạn mã trên có thể trông phức tạp, nhưng nó chỉ là một vài câu lệnh điều kiện bao bọc xung quanh mã bạn đã nhìn thấy. Nó có thể giúp phá vỡ nó xuống, như sau.
Các kịch bản bắt đầu bằng cách tải các thư viện lớp Zend và thiết lập các thông tin để xác thực. Nó cũng định nghĩa blog ID. Tất cả các hoạt động tiếp theo sẽ diễn ra chỉ trên blog chỉ định.
Giả sử không có yêu cầu thông số tồn tại, kịch bản kết nối với các API Blogger và yêu cầu một danh sách của tất cả các bài viết trong blog được chỉ định. Sau đó nó xử lý các nguồn cấp dữ liệu kết quả và hiển thị danh sách các bài viết là một danh sách HTML.
Mỗi bài viết được đi kèm với ba liên kết: để Xem, Chỉnh sửa, hoặc xóa bài viết. Các Xem liên kết xác định URL công cộng của bài. Các Sửa vàXóa liên kết đơn giản chỉ gọi lại script, qua đó các bài ID lựa chọn như là một tham số yêu cầu GET.
Sau khi tạo ra các danh sách các bài viết hiện tại, kịch bản cũng tạo ra một hình thức web cho người sử dụng thêm một bài mới. Mẫu đơn này có một lĩnh vực duy nhất-line đầu vào văn bản (đối với tiêu đề bài viết) và một khu vực văn bản nhiều dòng (đối với cơ thể bài).
Các biên tập viên TinyMCE, mà cũng được khởi tạo vào tải trang, tự động chăm sóc của chuyển khu vực văn bản vào một lĩnh vực soạn thảo văn bản WYSIWYG với định dạng siêu liên kết và điều khiển.
Điều gì sẽ xảy ra tiếp theo phụ thuộc vào hoạt động mà người dùng chọn.
Nếu người dùng chọn ...
Sau đó...
Để thêm một bài mới
Sau khi nội dung được nhập vào các hình thức web và trình, kịch bản tạo ra một đối tượng mục mới bằng cách sử dụngnewEntry () phương pháp, populates nó với đầu vào gửi, và lưu nó vào blog bằng cách sử dụng insertEntry () phương pháp.
Để xóa một bài hiện có
ID của bài viết được chọn sẽ được lấy ra từ các URL yêu cầu, và các URL nguồn cấp dữ liệu bài được xây dựng bằng cách sử dụng ID blog và bài ID. Chức vụ này sau đó đã bị xóa bằng cách sử dụng các đối tượng dịch vụ của delete () phương pháp.
Để chỉnh sửa một bài hiện có
ID của bài viết được chọn sẽ được lấy ra từ các URL yêu cầu, và các URL nguồn cấp dữ liệu bài được xây dựng bằng cách sử dụng ID blog và bài ID. Chức vụ này sau đó được lấy bằng cách sử dụng các đối tượng dịch vụ của get () phương pháp. Các nội dung của bài viết được sử dụng để đặt trước trong mẫu web để chỉnh sửa, cùng với một lĩnh vực ẩn chứa những bài ID duy nhất.
Sau khi người sử dụng làm thay đổi nội dung và resubmits các hình thức, các bài ID ẩn được sử dụng để xác định và cập nhật các bài hiện có với các updateEntry () phương pháp.
Vì lợi ích của sự đơn giản, kịch bản này không bao gồm bất kỳ xác nhận đầu vào. Trong một môi trường sản xuất, bạn cần thêm xác nhận để đảm bảo tính toàn vẹn và tính hợp lệ của dữ liệu được thu thập từ người dùng.
Hình 5 cho thấy các hệ thống ví dụ quản lý nội dung.
Hình 5. Blog giao diện quản lý nội dung
Trở lại đầu trang
Lời kết
Trong bài viết này, bạn đã học cách để tích hợp Blogger bài viết blog trực tiếp vào một ứng dụng PHP bằng cách sử dụng các API Blogger dữ liệu và thư viện khách Zend Gdata. Bài viết này cung cấp một giới thiệu về các dạng thức ăn Blogger. Bạn cũng biết cách:
Lấy blog, bài viết và ý kiến
Thêm, chỉnh sửa, và xóa bài viết
Xem, thêm và xóa các bình luận
Blogger API cung cấp một định dạng độc lập, cơ chế tinh vi để tích hợp nội dung blog nào vào bất kỳ ứng dụng web. Nó tuyệt vời cho mashups, hoặc để xây dựng giao diện tùy chỉnh của riêng bạn để Blogger.bạn có thể dùng cách này để seo blogspot dễ dàng và quản lý chúng. Hãy thử nó ra lúc nào, và xem những gì bạn có thể làm.
Ứng dụng blogger nổi tiếng
Trong khi Blogger là một lựa chọn phổ biến cho các nền tảng blog, nhiều tùy chọn khác tồn tại. Đối với một,kết nối phần mềm IBM bao gồm khả năng viết blog được tích hợp. Lựa chọn phần mềm blog phổ biến khác bao gồm Wordpress, Drupal, và Typepad, trong số rất nhiều người khác.
Với Blogger, thật dễ dàng cho những người không có kiến thức kỹ thuật cụ thể để tạo ra và duy trì weblog của mình. Blogger:
Đi kèm với một số mẫu định sẵn và bố trí
Hỗ trợ ý kiến, kiểm soát truy cập, và các thiết bị di động
Được tích hợp chặt chẽ với các dịch vụ khác (chẳng hạn như Twitter, Google AdSense, và những người khác) để chia sẻ nội dung và lưu hành tiền tệ.
Tóm lại, Blogger cung cấp mọi thứ bạn cần để xuất bản blog của bạn mà không cần phải lo lắng về các chi tiết kỹ thuật.
Từ viết tắt thường xuyên sử dụng
API: Giao diện lập trình ứng dụng
HTML: Hypertext Markup Language
HTTP: Hypertext Transfer Protocol
REST: Representational State Transfer
RSS: Really Simple Syndication
URL: Giao diện người dùng
WYSISYG: Những gì bạn thấy là những gì bạn có được
XML: Extensible Markup Language
Nhưng Blogger là không chỉ thú vị cho người dùng. Giống như nhiều dịch vụ khác của Google, Blogger có một API nhà phát triển cho phép bạn có được bàn tay của bạn trên các bộ phận bên trong của các dịch vụ và trích xuất nội dung để tạo ra các ứng dụng tùy chỉnh của riêng bạn và mashup. Bạn có thể truy cập các dữ liệu API Blogger, mà sau những mô hình REST, thông qua bất kỳ bộ công cụ phát triển XML có khả năng. Nó đã có thư viện client cho nhiều ngôn ngữ lập trình phổ biến, bao gồm yêu thích của tôi: PHP.
Trong bài viết này, tìm hiểu về API Blogger dữ liệu, và làm thế nào để tích hợp và sử dụng nội dung Blogger với các ứng dụng PHP. Nhiều ví dụ sẽ hướng dẫn bạn thông qua:
Kết nối và xác thực để các API
Lấy danh sách blog và nguồn cấp dữ liệu blog của
Thêm, cập nhật và xóa nội dung
Làm việc với các blog ý kiến
Trở lại đầu trang
Khái niệm chính
Trước khi bạn nhận được vào các mã PHP, phần này cung cấp cho một cái nhìn tổng quan về các API Blogger Data. Như với tất cả các dịch vụ dựa trên REST, API chấp nhận yêu cầu HTTP có chứa một hoặc nhiều đối số đầu vào XML-mã hóa và trả về phản ứng XML-mã hóa có thể được phân tích cú pháp trong bất kỳ khách hàng XML-aware. Với API Blogger, phản ứng luôn luôn bao gồm một Atom hoặc RSS nguồn cấp dữ liệu chứa các thông tin yêu cầu.
Blogger có cả thức ăn công cộng và tư nhân. Bạn có thể truy cập vào nguồn cấp dữ liệu công cộng, chẳng hạn như danh sách các bài viết trong một blog, không có chứng thực. Nguồn cấp dữ liệu tin yêu cầu xác thực. Ví dụ, một nguồn cấp dữ liệu tin yêu cầu xác thực để thực hiện thêm hoặc cập nhật các hoạt động trên một bài đăng blog hoặc comment. Các ví dụ trong bài viết này chứng tỏ cả hai loại thức ăn.
Để nhận được nhiều nhất của bài viết này, bạn cần phải có một tài khoản Blogger với ít nhất một blog và một bài. Nếu bạn không có, bạn có thể đăng nhập vào Blogger (xem Tài nguyên), tạo ra một blog mới, và thêm một bài mới để nó cho mục đích thử nghiệm. Trong khi bạn đang đăng nhập, hãy cố gắng truy cập vào các URL http://www.blogger.com/feeds/default/blogs trong một trình duyệt web. Bạn sẽ thấy một cái gì đó tương tự như Liệt kê 1.
Liệt kê 1. Blogger metafeed
<? xml version = "1.0" encoding = "UTF-8"?>
<? xml-stylesheet href = "http://www.blogger.com/styles/atom.css" type = "text / css"?>
<xmlns thức ăn = 'http: //www.w3.org/2005/Atom'
xmlns: OpenSearch = 'http: //a9.com/-/spec/opensearchrss/1.0/'>
<id> tag: blogger.com, 1999: người dùng 12345USERIDHERE12345.blogs </ id>
<cập nhật> 2011-09-02T03: 35: 34.547Z </ cập nhật>
<'text' loại title => Blogs V Vaswani của </ title>
<link rel = 'http: //schemas.google.com/g/2005#feed' type = 'application / atom + xml'
href = 'http: //www.blogger.com/feeds/12345USERIDHERE12345/blogs'/>
<'tự' rel = link type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345USERIDHERE12345/blogs'/>
<link rel = kiểu 'thay thế' = 'text / html "
href = 'http: //www.blogger.com/profile/12345USERIDHERE12345'/>
<author>
<name> V Vaswani </ name>
<email> noreply@blogger.com </ email>
</ author>
<phiên bản phát = '7.00' uri = 'http: //www.blogger.com'> Blogger </ máy phát điện>
<OpenSearch: totalResults> 1 </ OpenSearch: totalResults>
<OpenSearch: startIndex> 1 </ OpenSearch: startIndex>
<OpenSearch: itemsPerPage> 25 </ OpenSearch: itemsPerPage>
<entry>
<id> tag: blogger.com, 1999: người dùng 12345USERIDHERE12345.blog
-12345BLOGIDHERE12345 </ Id>
<xuất bản> 2008-02-19T23: 30: 41,755-08: 00 </ xuất bản>
<cập nhật> 2011-09-01T04: 01: 19,669-07: 00 </ cập nhật>
<'text' loại title => Blog V Vaswani của </ title>
<kiểu tóm tắt = "html"> </ summary>
<'tự' rel = link type = "application / atom + xml 'href =' http: //www.blogger.com/feeds/
12345USERIDHERE12345 / blog / 12345BLOGIDHERE12345 '/>
<link rel = 'text / html' 'thay thế' type = href = 'http: //vvaswani.blogspot.com/'/>
<link rel = 'http: //schemas.google.com/g/2005#feed'
type = "application / atom + xml '
href = 'http: //vvaswani.blogspot.com/feeds/posts/default'/>
<link rel = 'http: //schemas.google.com/g/2005#post' type = 'application / atom + xml'
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/posts/default'/>
<link rel = 'http: //schemas.google.com/blogger/2008#template'
type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/template'/>
<rel link = 'http: //schemas.google.com/blogger/2008#settings'
type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/settings'/>
<author>
<name> V Vaswani </ name>
<email> noreply@blogger.com </ email>
</ author>
<gd: xmlns extendedProperty: gd = 'http: //schemas.google.com/g/2005'
name = value 'IS_PUBLIC_BLOG' = 'true' />
<gd: xmlns extendedProperty: gd = 'http: //schemas.google.com/g/2005'
name = 'PICASAWEB_ALBUM_ID' value = "0" />
</ entry>
</ feed>
Các metafeed trong Liệt kê 1 cung cấp một danh sách của tất cả các blog liên quan đến người sử dụng được xác thực hiện. Nó sẽ mở ra với một<ăn> yếu tố như các yếu tố gốc. Các <feed> yếu tố có chứa:
<link> yếu tố, trong đó có chứa các URL cho các phiên bản khác nhau của thức ăn
An <author> yếu tố, trong đó xác định chủ sở hữu tài khoản
<OpenSearch> yếu tố, trong đó có chứa thống kê tóm tắt
Ngoài cùng <feed> yếu tố bao quanh một hoặc nhiều <entry> yếu tố, từng đại diện cho một blog. Mỗi <entry> chứa thêm chi tiết, bao gồm tiêu đề, mô tả, ngày tạo, ngày cập nhật cuối cùng, và là tác giả của mỗi blog. Mỗi mục cũng bao gồm một tập hợp các liên kết nguồn cấp dữ liệu, đó là thức ăn có chứa các bài viết trên blog, blog template, và các thiết lập blog.
Trong Liệt kê 1, mỗi blog được liên kết với một định danh duy nhất, hoặc blog ID. Blog ID được sử dụng để xây dựng URL đến các nguồn cấp dữ liệu blog-cụ thể. Ví dụ, để tìm thức ăn cho một bài blog cụ thể, sử dụng các URL được chỉ định trong <link rel = 'http: //schemas.google.com/g/2005#post' ... />. Tố Liệt kê 2 cho thấy những gì các nguồn cấp dữ liệu bài có thể trông như thế nào.
Liệt kê 2. Blogger thức ăn bài
<? xml version = "1.0" encoding = "UTF-8"?>
<? xml-stylesheet href = "http://www.blogger.com/styles/atom.css" type = "text / css"?>
<xmlns thức ăn = 'http: //www.w3.org/2005/Atom'
xmlns: OpenSearch = 'http: //a9.com/-/spec/opensearchrss/1.0/'
xmlns: georss = 'http: //www.georss.org/georss'
xmlns: thr = 'http: //purl.org/syndication/thread/1.0'>
<id> tag: blogger.com, 1999: blog-12345BLOGIDHERE12345 </ id>
<cập nhật> 2011-09-01T21: 06: 44,240-07: 00 </ cập nhật>
<'text' loại title => Blog V Vaswani của </ title>
<type phụ đề = "html"> </ subtitle>
<link rel = 'http: //schemas.google.com/g/2005#feed' type = 'application / atom + xml'
href = 'http: //vvaswani.blogspot.com/feeds/posts/default'/>
<'tự' rel = link type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/posts/default'/>
<link rel = 'http: //schemas.google.com/g/2005#post' type = 'application / atom + xml'
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/posts/default'/>
<link rel = 'text / html' 'thay thế' type = href = 'http: //vvaswani.blogspot.com/'/>
<author>
<name> V Vaswani </ name>
<email> noreply@blogger.com </ email>
</ author>
<phiên bản phát = '7.00' uri = 'http: //www.blogger.com'> Blogger </ máy phát điện>
<OpenSearch: totalResults> 3 </ OpenSearch: totalResults>
<OpenSearch: startIndex> 1 </ OpenSearch: startIndex>
<OpenSearch: itemsPerPage> 25 </ OpenSearch: itemsPerPage>
<entry>
<id> tag: blogger.com, 1999: blog-12345BLOGIDHERE12345.post-
12345POSTIDHERE12345 </ id>
<xuất bản> 2011-09-01T03: 34: 00.001-07: 00 </ xuất bản>
<cập nhật> 2011-09-01T21: 06: 44,258-07: 00 </ cập nhật>
<'text' loại title => Post thứ ba của tôi </ title>
<content type = "html"> Đây là bài viết thứ ba của tôi
<br /> </ nội dung>
<rel link = 'trả lời' type = 'application / atom + xml'
href = 'http: //vvaswani.blogspot.com/feeds/12345POSTIDHERE12345/comments/default'
title = "Đăng Nhận xét '/>
<rel link = 'trả lời' type = 'text / html "
https href = ': //www.blogger.com/comment.g?
blogID = 12345BLOGIDHERE12345 & postID = 12345POSTIDHERE12345 '
title = '0 Bình luận' />
<'chỉnh sửa' rel = link type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/posts/
default / 12345POSTIDHERE12345 '/>
<'tự' rel = link type = "application / atom + xml '
href = 'http: //www.blogger.com/feeds/12345BLOGIDHERE12345/posts/
default / 12345POSTIDHERE12345 '/>
<link rel = kiểu 'thay thế' = 'text / html "
href = 'http: //vvaswani.blogspot.com/2011/09/my-third-d.html'
title = 'My bài viết thứ ba' />
<author>
<name> V Vaswani </ name>
<email> noreply@blogger.com </ email>
</ author>
<thr: tổng số> 0 </ Thr: tổng số>
</ entry>
...
</ feed>
Liệt kê 2 cho thấy rằng các thức ăn có chứa một bài tập các <entry> yếu tố, và rằng mỗi người đại diện cho một bài duy nhất của blog. Mỗi<entry> bao gồm:
Các tiêu đề, nội dung, và ngày xuất bản của bài viết.
Liên kết đến URL công cộng của bài viết, bài chỉnh sửa URL, URL comments thức ăn, và ý kiến chỉnh sửa feed URL. Những thức ăn được sử dụng để xem và chỉnh sửa các bài viết, hoặc ý kiến của mình, thông qua các API Blogger Data.
Mỗi bài cũng có một định danh duy nhất, gọi là bài ID, mà là ở <id> yếu tố của mục nhập. Nó là một chuỗi phức hợp bao gồm cả ID blog và bài ID, theo định dạng tag: blogger.com, 1999: blog-BLOGID.post-postID. Ví dụ, trong các chuỗi nhận dạng tag: blogger.com, 1999:blog-1234.post-6789, bộ nhận dạng blog là 1234 và định danh bài là 6789.
Trở lại đầu trang
Lấy blog và bài viết
Bây giờ bạn biết làm thế nào để truy cập vào blog và bài feeds thông qua các API, hãy thử những điều tương tự từ bên trong một ứng dụng PHP.Để tạo ra các nguồn cấp dữ liệu trong bảng liệt kê 1 và 2, đầu tiên bạn đăng nhập bằng tay vào Blogger bằng một tài khoản Google. Để truy xuất và xử lý các nguồn cấp dữ liệu từ bên trong một ứng dụng PHP, nhiệm vụ xác thực như nhau cần phải được thực hiện theo chương trình.
Làm việc chứng thực bằng tay là một công việc khá lộn xộn và đòi hỏi rất nhiều mã vào tài khoản cho các kịch bản khác nhau mà có thể phát sinh trong quá trình giao dịch xác thực điển hình. May mắn thay, Zend Framework có Zend_Gdata, một thư viện khách PHP thiết kế đặc biệt cho các nhà phát triển đang cố gắng để tích hợp các ứng dụng PHP với các API dữ liệu của Google. Zend_Gdata cung cấp một giao diện hướng đối tượng thuận lợi để các API dữ liệu của Google (xem liên kết trong Tài nguyên để tải về nó). Nó đóng gói hầu hết các tác vụ thông thường, bao gồm xác thực, và để bạn tự do để tập trung vào các chức năng cốt lõi của ứng dụng của bạn.
Sau khi bạn cài đặt thư viện Gdata Zend, xem xét thông qua Liệt kê 3. Nó cho thấy làm thế nào để xử lý thức ăn từ Liệt kê 1 và chuyển đổi nó thành một trang web liệt kê tất cả các web của người sử dụng xác thực trên Blogger.
Liệt kê 3. Liệt kê các blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Có được danh sách của tất cả các blog
$ query = Zend_Gdata_Query mới ('http://www.blogger.com/feeds/default/blogs');
$ ăn = $ dịch vụ-> getFeed ($ query);
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
<html>
<head> </ head>
<body>
<h2> Blogs </ h2>
<ul>
<? php foreach ($ thức ăn như $ entry):?>
<li>
<a href = "<? php?
echo $ entry-> getLink ('thay thế') -> getHref (); ?> ">
<? php echo $ entry-> getTitle (); ?>
</a>
</ li>
<? php endforeach; ?>
</ ul>
</ body>
</ html>
Liệt kê 3 tải các thư viện lớp Zend và khởi tạo một thể hiện của Zend_Gdata lớp dịch vụ. Zend_Gdata sử dụng một Zend_Http_Client đối tượng, được cung cấp các thông tin xác thực người dùng cần thiết và sử dụng để mở một kết nối được xác thực với dịch vụ Blogger. Lớp này cũng phục vụ như là điểm kiểm soát cho tất cả các tương tác tiếp theo với các API Blogger Data.
Khi kết nối được xác thực là mở, getFeed () là phương pháp được sử dụng để lấy danh sách các blog. GetFeed () chấp nhận mộtZend_Gdata_Query đối tượng, đó là thông qua các URL cho các danh sách thức ăn blog. Việc đối phó với getFeed () gọi API là một nguồn cấp dữ liệu XML tương tự như trong Liệt kê 1, sau đó được phân tích và chuyển đổi thành một đối tượng PHP. Mục trong nguồn cấp dữ liệu được biểu diễn như là các phần tử mảng, làm cho nó có thể:
Lặp qua các nguồn cấp dữ liệu
Lấy tên blog cá nhân và URL
Định dạng chúng để hiển thị trong một trình duyệt web
Hình 1 cho thấy sản lượng mà bạn có thể nhìn thấy.
Hình trang web 1. Ví dụ hiển thị blog của người dùng
Như đã nói trước đây, mỗi blog và đăng bài trong các dịch vụ Blogger có một định danh duy nhất. Nếu bạn có định danh duy nhất cho một blog, bạn có thể tạo ra các URL cho các cấp dữ liệu blog tương ứng, trong đó có chứa một danh sách tất cả các bài viết trong blog đó. Liệt kê 4 cho thấy quá trình để lấy và xử lý như một nguồn cấp dữ liệu blog với khách hàng Zend_Gdata thư viện.
Liệt kê 4. Liệt kê bài đăng trên blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Có được danh sách của tất cả các bài viết trong blog feed
$ query = Zend_Gdata_Query mới (
'http://www.blogger.com/feeds/YOUR-BLOG-ID-HERE/posts/default');
$ ăn = $ dịch vụ-> getFeed ($ query);
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
<html>
<head> </ head>
<body>
<h2> bài </ h2>
<ul>
<? php foreach ($ thức ăn như $ entry):?>
<li>
<a href = "<? php?
echo $ entry-> getLink ('thay thế') -> getHref (); ?> ">
<? php echo $ entry-> getTitle (); ?>
</a>
</ li>
<? php endforeach; ?>
</ ul>
</ body>
</ html>
Như trong Liệt kê 3, ví dụ 4 đầu tiên khởi tạo các thư viện Zend và tạo ra một thực Zend_Gdata đối tượng dịch vụ. Các định danh blog được sử dụng để xây dựng các URL nguồn cấp dữ liệu blog, được chuyển đổi thành một Zend_Gdata_Query đối tượng và chuyển tới getFeed ()phương pháp. Các nguồn cấp dữ liệu kết quả sau đó được phân tích và xử lý, theo cách thông thường, để tạo ra một danh sách của tất cả các bài viết trong blog được chỉ định. Hình 2 cho thấy một ví dụ về đầu ra.
Hình 2. Trang Web hiển thị bài đăng trên blog của người dùng
Bạn có thể kết hợp Liệt kê 3 và Liệt kê 4 để tạo ra một danh sách của tất cả các blog của người dùng xác thực và các bài viết trong mỗi blog. Liệt kê 5 cho thấy các mã kết hợp.
Liệt kê 5. Liệt kê các blog và viết blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Tạo mảng
$ data = array ();
// Có được danh sách của tất cả các bài viết trong tất cả các nguồn cấp dữ liệu blog của
$ query1 = Zend_Gdata_Query mới ('http://www.blogger.com/feeds/default/blogs');
$ = $ feed1 dịch vụ-> getFeed ($ query1);
foreach ($ feed1 như $ entry 1) {
$ arr = explode ('-', (string) $ entry1-> getId ());
$ id = $ arr [2];
$ query2 = new Zend_Gdata_Query (
'http://www.blogger.com/feeds/'.$id.'/posts/default');
$ = $ feed2 dịch vụ-> getFeed ($ query2);
$ blogArray = array (
'title' => (string) $ entry1-> getTitle (),
'uri' => (string) $ entry1-> getLink ('thay thế') -> getHref (),
= 'gửi'> array ()
);
foreach ($ feed2 như $ entry2) {
$ postArray = array (
'title' => (string) $ entry2-> getTitle (),
'uri' => (string) $ entry2-> getLink ('thay thế') -> getHref ()
);
$ blogArray ['gửi'] [] = $ postArray;
}
$ data [] = $ blogArray;
}
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
<html>
<head> </ head>
<body>
<h2> Blog và bài viết </ h2>
<div id = "kết quả">
<? php foreach ($ dữ liệu như là $ d):?>
<ul>
<li> <a href="<?php vang $d['uri']; ?> ">
<? php echo $ d ['title']; ?> </a> </ li>
<ul>
<? php foreach ($ d ['gửi'] là $ p):?>
<li> <a href="<?php vang $p['uri']; ?> ">
<? php echo $ p ['title']; ?> </a> </ li>
<? php endforeach; ?>
</ ul>
</ ul>
<? php endforeach; ?>
</ div>
</ body>
</ html>
Liệt kê 5 yêu cầu đầu tiên metafeed blog và lặp trên các mục bên trong nó để lấy định danh duy nhất của mỗi blog. Định danh này sau đó được sử dụng để xây dựng các URL bài feed của blog, được yêu cầu và xử lý để trích xuất tiêu đề và URL của từng bài. Tất cả các thông tin này được lưu trữ trong một mảng lồng nhau, như trong Liệt kê 6.
Liệt kê 6. mảng Nested
Mảng
(
[0] => Array
(
Blog [title] => V Vaswani của
[uri] => http: //***.blogspot.com/
[gửi] => Array
(
[0] => Array
(
[title] => Thứ tư bài của mình
[uri] => http: //***.blogspot.com/2011/09/my-fourth-post.html
)
[1] => Array
(
[title] => Bài viết thứ ba của tôi
[uri] => http: //***.blogspot.com/2011/09/my-third-d.html
)
[2] => Array
(
[title] => My bài viết thứ hai
[uri] => http: //***.blogspot.com/2011/08/my-second-post.html
)
[3] => Array
(
[title] => My First bài viết
[uri] => http: //***.blogspot.com/2008/02/testing.html
)
)
)
[1] => Array
(
[title] Blog Thứ hai => V Vaswani của
[uri] => http: //***.blogspot.com/
[gửi] => Array
(
[0] => Array
(
[title] => My bài viết đầu tiên trong Blog Thứ hai của tôi
[uri] => http: //***.blogspot.com/2011/09/my-first-post-in-my-second-blog.html
)
)
)
)
Một khi mảng được tạo ra hoàn toàn, bạn chỉ có thể lặp trên nó và chuẩn bị một danh sách lồng nhau của các blog và bài viết của họ. Hình 3 cho thấy một ví dụ về đầu ra.
Hình 3. Trang Web hiển thị blog của người dùng và viết blog
Trở lại đầu trang
Thêm bài đăng trên blog
Ngoài việc cho phép truy bài, các API Blogger Dữ liệu cũng cho phép người sử dụng xác thực để thêm bài viết mới vào một blog lập trình. Tạo mớiZend_Gdata_App_Entry đối tượng, đặt tiêu đề và nội dung của nó, và sau đó POST nó vào nguồn cấp dữ liệu bài. Liệt kê 7 cho thấy mã ví dụ.
Liệt kê 7. Thêm một bài viết trên blog
<? php
if (isset ($ _ POST ['submit'])) {
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Đặt blog của id
$ id = 'YOUR-BLOG-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Tạo một đối tượng mục mới
// Cư nó với người sử dụng đầu vào
$ uri = 'http://www.blogger.com/feeds/'. $ id. '/ posts / default';
$ entry = $ dịch vụ-> newEntry ();
$ entry-> title = $ dịch vụ-> newTitle ($ _ POST ['title']);
$ entry-> content = $ dịch vụ-> newContent ($ _ POST ['cơ thể']);
$ entry-> content-> setType ('text');
// Lưu nhập vào máy chủ
// Trả về id duy nhất cho bài mới
$ phản ứng = $ dịch vụ-> insertEntry ($ entry, $ uri);
$ arr = explode ('-', $ response-> getId ());
$ id = $ arr [2];
echo 'thêm thành bài với ID:'. $ id;
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
}
?>
<html>
<head> </ head>
<body>
<h2> Add New Post </ h2>
<form method = "post">
Tiêu đề: <br/> <input type = "text" name = "title"
size = "50" /> <br/>
Body: Tên <br/> <textarea = "cơ thể" cols = "40"
rows = "10"> </ textarea> <br/>
<input type = "submit" name = "submit" value = "Post" />
</ form>
</ body>
</ html>
Trong các mã trong Liệt kê 7, một hình thức web đơn giản cho phép người dùng nhập vào một tiêu đề và cơ thể cho một bài đăng blog. Sau khi hình thành được gửi, kịch bản tải các thư viện lớp Zend và tạo ra một đối tượng dịch vụ chứng thực. Các kịch bản sau đó sử dụng các đối tượng dịch vụ của newEntry () phương pháp để tạo ra một đối tượng mục mới và sử dụng newTitle () và newContent () phương pháp để thiết lập các tiêu đề và nội dung của các bài đăng blog từ đầu vào của người dùng. Sau khi các thuộc tính được thiết lập, các insertEntry () là phương pháp được sử dụng để lưu các bài mới cho các máy chủ của Google.
Hình 4 cho thấy một ví dụ về hình thức.
Hình 4. Hình thức Web để thêm một bài đăng blog mới
Giá trị trả về của insertEntry () phương pháp là một mục đại diện cho chức danh mới được tạo ra. Mục nhập này đã chứa các định danh duy nhất của bài, có thể được tách ra và hiển thị trên trang kết quả. Sau khi nó được cứu, các bài mới sẽ được nhìn thấy trong các blog công cộng và cũng xuất hiện trong tất cả các nguồn cấp dữ liệu API cho blog đó.
Trở lại đầu trang
Chỉnh sửa và xóa bài đăng trên blog
Bạn cũng có thể xóa hoặc sửa bài viết hiện có thông qua các API Blogger Data. Trong cả hai trường hợp, tương ứng DELETE hoặc PUT yêu cầu phải được truyền đi để chỉnh sửa URL của bài viết (xem Liệt kê 2 cho một ví dụ). Chỉ xác thực người dùng có thể thực hiện cả hai hoạt động này.
Các mã trong Liệt kê 8 cho thấy làm thế nào để xóa một bài đăng blog hiện có thông qua các API, giả sử bạn đã có các blog và bài ID.
Liệt kê 8. Xóa một bài viết trên blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Thiết lập blog và bài ids
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
$ pid = 'YOUR-POST-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Gán URI cho mục để xóa
// Lấy từ <link rel = chỉnh sửa ... />
$ uri = 'http://www.blogger.com/feeds/'. $ thầu. '/ posts / default /'. $ pid;
$ dịch vụ-> xóa ($ uri);
echo 'xóa thành công bài với ID:'. $ pid;
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
Liệt kê 8 sử dụng các đối tượng dịch vụ của delete () phương pháp để xóa các bài viết trên blog được chỉ định. Các delete () phương pháp chấp nhận chỉnh sửa URL của bài và truyền một yêu cầu DELETE để URL đó. Sau khi nó bị xóa, các bài viết trên blog sẽ biến mất từ cả các blog công cộng và bất kỳ API feed mà tham khảo nó.
Để hiển thị các mã để cập nhật một bài đăng blog hiện có thông qua các API, một lần nữa giả sử bạn đã có các blog và bài IDs, sử dụng mã trongLiệt kê 9.
Liệt kê 9. Đang cập nhật một bài đăng blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Thiết lập blog và bài ids
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
$ pid = 'YOUR-POST-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Gán URI cho mục cập nhật
// Lấy từ <link rel = tự ... />
$ uri = 'http://www.blogger.com/feeds/'. $ thầu. '/ posts / default /'. $ pid;
// Lấy mục hiện tại
// Gán giá trị mới
// Lưu lại
$ phản ứng = $ dịch vụ-> get ($ uri);
$ entry = Zend_Gdata_App_Entry mới ($ response-> getBody ());
$ entry-> title = $ dịch vụ-> newTitle ("title mới");
$ entry-> content = $ dịch vụ-> newContent ("nội dung mới");
$ entry-> content-> setType ('text');
$ dịch vụ-> updateEntry ($ entry);
echo 'Đã cập nhật thành bài với ID:'. $ pid;
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
Cập nhật một bài viết trên blog thông qua các API là một quá trình hai bước. Đầu tiên, bạn cần phải lấy bài blog hiện có và chuyển đổi nó vào mộtZend_Gdata_App_Entry đối tượng. Sau đó, bạn có thể sử dụng phương pháp đối tượng phục vụ, chẳng hạn như newTitle () vànewContent (), để cập nhật các mục nhập và lưu nó lại cho máy chủ bằng cách sử dụng updateEntry () phương pháp.
Tương tự như các insertEntry () phương pháp, giá trị trả về của updateEntry () phương pháp là một mục đại diện cho bài viết bao gồm nhận dạng độc đáo của nó và nội dung. Sau khi nó được cứu, các bài cập nhật sẽ được nhìn thấy trong các blog công cộng và trong tất cả các nguồn cấp dữ liệu API tham khảo blog mà.
Trở lại đầu trang
Làm việc với các ý kiến
Cũng như bạn có thể thêm, sửa, xóa bài viết, bạn cũng có thể thêm, chỉnh sửa, và xóa bài bình luận. Trong Liệt kê 2, nhận thấy rằng mỗi mục bài bao gồm các liên kết đến các bài bình luận của thức ăn. Thêm một lời nhận xét mới cũng đơn giản như chèn một mục nhập vào nguồn cấp dữ liệu này bình luận.
Liệt kê 10 cho thấy quá trình để thêm bình luận mới cho bài viết.
Liệt kê 10. Thêm một lời nhận xét mới
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Thiết lập blog và bài ids
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
$ pid = 'YOUR-POST-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Tạo một đối tượng mục mới
// Cư nó với người sử dụng đầu vào
$ uri = "http://www.blogger.com/feeds/$bid/$pid/comments/default";
$ entry = $ dịch vụ-> newEntry ();
$ entry-> content = $ dịch vụ-> newContent ('Đây là một bài viết rất thú vị.');
$ entry-> content-> setType ('text');
// Lưu nhập vào máy chủ
// Trả về id duy nhất cho bình luận mới
$ phản ứng = $ dịch vụ-> insertEntry ($ entry, $ uri);
$ arr = explode ('/', $ response-> getEditLink () -> href);
$ id = $ arr [8];
echo 'thêm thành công bình với ID:'. $ id;
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
Thêm một lời nhận xét mới là gần như giống như thêm một bài mới; sự khác biệt chỉ nằm ở các URL mà yêu cầu được gửi (trong trường hợp này, các ý kiến feed URL). Việc đối phó với insertEntry () phương pháp là một đối tượng đại diện cho bình luận mới được bổ sung. Các đối tượng sau đó có thể được phân tích để lấy định danh comment độc đáo, đó là cần thiết nếu bạn muốn xóa bình luận sau đó.
Giả sử bạn có nhận dạng bình luận, bạn có thể sử dụng mã trong Liệt kê 11 để lập trình loại bỏ các bình luận với các delete () phương pháp.
Liệt kê 11. Xóa một bình luận
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Thiết lập blog, bài viết và bình luận ids
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
$ pid = 'YOUR-POST-ID-HERE';
$ cid = 'YOUR-BÌNH-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Gán URI cho mục để xóa
// Lấy từ <link rel = chỉnh sửa ... />
$ uri = "http://www.blogger.com/feeds/$bid/$pid/comments/default/$cid";
$ dịch vụ-> xóa ($ uri);
echo 'comment xóa thành công với ID:'. $ cid;
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
Bạn cũng có thể sử dụng các URL nhận thức ăn tương tự để lấy một danh sách của tất cả các bình luận cho bài viết, như trong Liệt kê 12.
Liệt kê 12. Liệt kê ý kiến
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Thiết lập blog và bài ids
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
$ pid = 'YOUR-POST-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Có được danh sách của tất cả các bình luận cho bài viết
$ uri = "http://www.blogger.com/feeds/$bid/$pid/comments/default/";
$ query = Zend_Gdata_Query mới ($ uri);
$ ăn = $ dịch vụ-> getFeed ($ query);
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
<html>
<head> </ head>
<body>
<h2> Cảm </ h2>
<div id = "kết quả">
<ul>
<? php foreach ($ thức ăn như $ entry):?>
<? php $ author = $ entry-> getAuthor (); ?>
<li> <? php echo $ entry-> getTitle (); ?>
- <? Php echo $ tác giả [0] -> getName (); ?> <br/>
<? php echo date ('d Myh: i', strtotime ($ entry-> getUpdated ())); ?>
</ li>
<? php endforeach; ?>
</ ul>
</ body>
</ html>
Trở lại đầu trang
Ứng dụng ví dụ: Hệ thống quản trị nội dung
Hãy đặt mọi thứ vào thực tế bằng cách xây dựng một ứng dụng thực tế đơn giản đó chứng tỏ sức mạnh của các API Blogger Data. Các ứng dụng ví dụ là một người quản lý nội dung web dựa trên cho phép người dùng xem các bài viết blog hiện có của họ, thêm bài viết mới, và chỉnh sửa hoặc xóa bài viết hiện có. Chỉnh sửa được thực hiện thông qua một trình soạn thảo WYSIWYG dựa trên trình duyệt và được chuyển tới Blogger thông qua các API Blogger Data.
Để bắt đầu, tải về và cài đặt các trình soạn thảo TinyMCE JavaScript trên máy chủ phát triển của bạn (xem Tài nguyên cho một liên kết). Tạo một kịch bản có chứa các mã được hiển thị trong Liệt kê 13.
Liệt kê 13. Quản lý nội dung blog
<? php
// Tải thư viện Zend Gdata
require_once 'Zend / Loader.php';
Zend_Loader :: loadClass ('Zend_Gdata');
Zend_Loader :: loadClass ('Zend_Gdata_Query');
Zend_Loader :: loadClass ('Zend_Gdata_ClientLogin');
Zend_Loader :: loadClass ('Zend_Gdata_Feed');
// Thiết lập các thông tin để xác thực ClientLogin
$ user = "your-username@gmail.com";
$ = vượt qua "của bạn mật khẩu";
// Đặt blog của id
$ = Giá thầu 'YOUR-BLOG-ID-HERE';
cố gắng {
// Thực hiện đăng nhập
// Khởi tạo đối tượng dịch vụ
$ client = Zend_Gdata_ClientLogin :: getHttpClient (
$ user, $ pass, 'blogger');
$ dịch vụ = Zend_Gdata mới ($ khách hàng);
// Cho tiện ích và hiệu chỉnh hoạt động
if (isset ($ _ POST ['submit'])) {
// Nếu bài id hiện tại
// Cập nhật bài với nội dung mới
if (isset ($ _ POST ['pid'])) {
$ arr = explode ('-', $ _GET ['pid']);
$ pid = $ arr [2];
$ uri = 'http://www.blogger.com/feeds/'. $ thầu. '/ posts / default /'. $ pid;
$ phản ứng = $ dịch vụ-> get ($ uri);
$ entry = Zend_Gdata_App_Entry mới ($ response-> getBody ());
$ entry-> title = $ dịch vụ-> newTitle ($ _ POST ['title']);
$ entry-> content = $ dịch vụ-> newContent ($ _ POST ['cơ thể']);
$ entry-> content-> setType ('text');
$ dịch vụ-> updateEntry ($ entry);
echo 'Đã cập nhật thành bài với ID:'. $ pid;
} Else {
// Nếu bài id không có mặt
// Tạo một bài mới
// Cư nó với người sử dụng đầu vào
$ uri = 'http://www.blogger.com/feeds/'. $ thầu. '/ posts / default';
$ entry = $ dịch vụ-> newEntry ();
$ entry-> title = $ dịch vụ-> newTitle ($ _ POST ['title']);
$ entry-> content = $ dịch vụ-> newContent ($ _ POST ['cơ thể']);
$ entry-> content-> setType ('text');
$ phản ứng = $ dịch vụ-> insertEntry ($ entry, $ uri);
$ arr = explode ('-', $ response-> getId ());
$ id = $ arr [2];
echo 'thêm thành bài với ID:'. $ id;
}
}
// Cho chỉnh sửa và xóa các hoạt động
if (isset ($ _ GET ['op'])) {
// Tạo bài URL
$ arr = explode ('-', $ _GET ['pid']);
$ pid = $ arr [2];
$ uri = 'http://www.blogger.com/feeds/'. $ thầu. '/ posts / default /'. $ pid;
chuyển đổi ($ _ GET ['op']) {
trường hợp 'xóa':
// Xóa bài
$ dịch vụ-> xóa ($ uri);
echo 'xóa thành công bài với ID:'. $ pid;
gãy;
trường hợp 'chỉnh sửa':
// Lấy bài cho hiển thị trong biểu mẫu chỉnh sửa
$ phản ứng = $ dịch vụ-> get ($ uri);
$ entry = Zend_Gdata_App_Entry mới ($ response-> getBody ());
}
}
// Có được danh sách của tất cả các bài viết trong blog feed
$ query = Zend_Gdata_Query mới (
'http://www.blogger.com/feeds/'.$bid.'/posts/default');
$ ăn = $ dịch vụ-> getFeed ($ query);
} Catch (Exception $ e) {
die ("ERROR: '$ e-> getMessage ().);
}
?>
<html>
<head>
<script type = "text / javascript"
src = "TinyMCE / JScripts / tiny_mce / tiny_mce.js"> </ script>
<script type = "text / javascript">
tinyMCE.init ({
chế độ: "textareas",
Chủ đề: "tiên tiến",
theme_advanced_buttons1: "in đậm, in nghiêng, gạch dưới, |, justifyleft,
justifycenter, justifyright, |, code, preview, |, ForeColor, backcolor, |, sub, sup,
|, fontsizeselect ",
theme_advanced_buttons2: "cut, copy, paste, |, bullist, numlist, |, outdent, thụt lề,
|, undo, redo, |, liên kết, tháo liên kết anchor, hình ảnh, |, removeformat ",
theme_advanced_buttons3: "",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "trái",
theme_advanced_statusbar_location: "đáy",
theme_advanced_resizing: đúng
});
</ script>
</ head>
<body>
<h2> Xem bài viết </ h2>
<ul>
<? php foreach ($ thức ăn như $ e):>
<li> <? php echo $ e-> getTitle (); ?> <br/>
<a href = "<? php?
echo $ e-> getLink ('thay thế') -> getHref (); ?> "> Xem </a>
| <a href="?op=edit&pid=<?php vang $e-> getId ();?> "> Edit </a>
| <a href="?op=delete&pid=<?php vang $e-> getId ();?> "> Xóa
</a>
</ li>
<? php endforeach; ?>
</ ul>
<a href="<?php vang $_SERVER['PHP_SELF']; ?> ">
Thêm một bài mới </a>
<? php if (isset ($ _ GET ['op']) && $ _GET ['op'] == 'chỉnh sửa'):?>
<h2> Chỉnh sửa bài viết </ h2>
<form method = "post">
Tiêu đề: <br/> <input type = "text" name = "title" size = "50"
value = "<? php echo $ entry-> title;?>" /> <br/>
Body: Tên <br/> <textarea = "cơ thể" cols = "40"
? rows = "10"> <? php echo $ entry-> nội dung; ?> </ textarea> <br/>
<input type = tên "ẩn" = "pid"
value = "<? php echo $ entry-> id;?>" />
<input type = "submit" name = "submit" value = "Post" />
</ form>
<? php khác:?>
<h2> Add New Post </ h2>
<form method = "post">
Tiêu đề: <br/> <input type = "text" name = "title"
size = "50" /> <br/>
Body: Tên <br/> <textarea = "cơ thể" cols = "40"
rows = "10"> </ textarea> <br/>
<input type = "submit" name = "submit" value = "Post" />
</ form>
<? php endif; ?>
</ body>
</ html>
Đoạn mã trên có thể trông phức tạp, nhưng nó chỉ là một vài câu lệnh điều kiện bao bọc xung quanh mã bạn đã nhìn thấy. Nó có thể giúp phá vỡ nó xuống, như sau.
Các kịch bản bắt đầu bằng cách tải các thư viện lớp Zend và thiết lập các thông tin để xác thực. Nó cũng định nghĩa blog ID. Tất cả các hoạt động tiếp theo sẽ diễn ra chỉ trên blog chỉ định.
Giả sử không có yêu cầu thông số tồn tại, kịch bản kết nối với các API Blogger và yêu cầu một danh sách của tất cả các bài viết trong blog được chỉ định. Sau đó nó xử lý các nguồn cấp dữ liệu kết quả và hiển thị danh sách các bài viết là một danh sách HTML.
Mỗi bài viết được đi kèm với ba liên kết: để Xem, Chỉnh sửa, hoặc xóa bài viết. Các Xem liên kết xác định URL công cộng của bài. Các Sửa vàXóa liên kết đơn giản chỉ gọi lại script, qua đó các bài ID lựa chọn như là một tham số yêu cầu GET.
Sau khi tạo ra các danh sách các bài viết hiện tại, kịch bản cũng tạo ra một hình thức web cho người sử dụng thêm một bài mới. Mẫu đơn này có một lĩnh vực duy nhất-line đầu vào văn bản (đối với tiêu đề bài viết) và một khu vực văn bản nhiều dòng (đối với cơ thể bài).
Các biên tập viên TinyMCE, mà cũng được khởi tạo vào tải trang, tự động chăm sóc của chuyển khu vực văn bản vào một lĩnh vực soạn thảo văn bản WYSIWYG với định dạng siêu liên kết và điều khiển.
Điều gì sẽ xảy ra tiếp theo phụ thuộc vào hoạt động mà người dùng chọn.
Nếu người dùng chọn ...
Sau đó...
Để thêm một bài mới
Sau khi nội dung được nhập vào các hình thức web và trình, kịch bản tạo ra một đối tượng mục mới bằng cách sử dụngnewEntry () phương pháp, populates nó với đầu vào gửi, và lưu nó vào blog bằng cách sử dụng insertEntry () phương pháp.
Để xóa một bài hiện có
ID của bài viết được chọn sẽ được lấy ra từ các URL yêu cầu, và các URL nguồn cấp dữ liệu bài được xây dựng bằng cách sử dụng ID blog và bài ID. Chức vụ này sau đó đã bị xóa bằng cách sử dụng các đối tượng dịch vụ của delete () phương pháp.
Để chỉnh sửa một bài hiện có
ID của bài viết được chọn sẽ được lấy ra từ các URL yêu cầu, và các URL nguồn cấp dữ liệu bài được xây dựng bằng cách sử dụng ID blog và bài ID. Chức vụ này sau đó được lấy bằng cách sử dụng các đối tượng dịch vụ của get () phương pháp. Các nội dung của bài viết được sử dụng để đặt trước trong mẫu web để chỉnh sửa, cùng với một lĩnh vực ẩn chứa những bài ID duy nhất.
Sau khi người sử dụng làm thay đổi nội dung và resubmits các hình thức, các bài ID ẩn được sử dụng để xác định và cập nhật các bài hiện có với các updateEntry () phương pháp.
Vì lợi ích của sự đơn giản, kịch bản này không bao gồm bất kỳ xác nhận đầu vào. Trong một môi trường sản xuất, bạn cần thêm xác nhận để đảm bảo tính toàn vẹn và tính hợp lệ của dữ liệu được thu thập từ người dùng.
Hình 5 cho thấy các hệ thống ví dụ quản lý nội dung.
Hình 5. Blog giao diện quản lý nội dung
Trở lại đầu trang
Lời kết
Trong bài viết này, bạn đã học cách để tích hợp Blogger bài viết blog trực tiếp vào một ứng dụng PHP bằng cách sử dụng các API Blogger dữ liệu và thư viện khách Zend Gdata. Bài viết này cung cấp một giới thiệu về các dạng thức ăn Blogger. Bạn cũng biết cách:
Lấy blog, bài viết và ý kiến
Thêm, chỉnh sửa, và xóa bài viết
Xem, thêm và xóa các bình luận
Blogger API cung cấp một định dạng độc lập, cơ chế tinh vi để tích hợp nội dung blog nào vào bất kỳ ứng dụng web. Nó tuyệt vời cho mashups, hoặc để xây dựng giao diện tùy chỉnh của riêng bạn để Blogger.bạn có thể dùng cách này để seo blogspot dễ dàng và quản lý chúng. Hãy thử nó ra lúc nào, và xem những gì bạn có thể làm.
tự động post bài blogspot bằng php
Reviewed by Thietkeblogspot
on
1:37 AM
Rating:
No comments: