RSS là gì? Cách Tạo RSS cho Website PHP
Khi Website bạn có dữ liệu lớn ở nhiều mục khác nhau dẫn đến khó theo dõi cho người dùng. Khi bạn muốn tự động cập nhật tin tức của một số website nào đó thay vì vào từng trang để lọc tin thì bạn sẽ cần một nơi có thể xem một cách nhanh nhất? Điều này sẽ được giải quyết với RSS. Vậy 'RSS là gì?' và 'Cách tạo RSS cho Website như thế nào?' thì chúng ta cùng tìm hiểu nhé.
1. RSS là gì?
Theo Wiki thì RSS là một tập tin XML dùng để chia sẻ thông tin web (có thể là tin tức, dịch vụ, ...) và được dùng phổ biến ở các website lớn như 24h.com, vnexpress.net, .. Hay thâm chị là các blog Wordpress cũng có sử dụng. Với kỹ thuật RSS này người dùng có thể lấy nội dung của các website thông qua chức năng RSS của họ, điều này có nghĩa là website đó phải có sử dụng chia sẻ RSS thì bạn mới có thể sử dụng được.
Định dạng của RSS sẽ được lưu trư dạng XML và mô tả đầy đủ cho tin đó thông qua các meta-data (title, link, description). Người ta hay gọi đây là kỹ thuật RSS Feed, Webfeed, RSS stream hay RSS chanel. Hiện nay có hai Version đó là RSS 1.0 và RSS 2.0, mỗi version sẽ có một số cấu trúc khác nhau, bạn có thể lên trang Wiki để đọc thêm hai ví dụ này.
2. Cấu trúc file RSS 2.0
Đây là cấu trúc file RSS thông thường, tuy nhiên tùy mỗi trang họ có thể bỏ đi một số thông tin không cần thiết.
Bài viết này được đăng tại [free tuts .net]
<?xml version="1.0"?> <rss version="2.0"> <channel> <title>Tiêu đề Website</title> <link>http://domain.com/</link> <description>Mô tả website</description> <language>Ngôn ngữ website</language> <pubDate>Ngày website public</pubDate> <lastBuildDate>Ngày cập nhật website mới nhất</lastBuildDate> <docs>Đường dẫn tới file RSS</docs> <generator>FW, CMS tạo ra website này</generator> <managingEditor>Email của chủwebsite </managingEditor> <webMaster>Email master</webMaster> <item> <title>Tiêu đề tin</title> <link>Đường link của tin</link> <description>Mô tả của tin</description> <pubDate>Ngày đăng tin</pubDate> <guid>Đường link của tin</guid> </item> </channel> </rss>
Trong cấu trúc này nếu website có nhiều tin item
sẽ được lặp nhiều lần.
3. Cách tạo RSS cho Website PHP
Bây giờ chúng ta sẽ tìm hiểu cách tạo RSS sử dụng PHP và dữ liệu sẽ lấy từ MySQL. Trước tiên chúng ta cần tạo một bảng tin tức và thêm một số record để demo nhé.
# Tạo database news
Bạn bật PHPMYADMIN lên và chạy đoạn SQL sau:
CREATE DATABASE `rss_news`; USE `rss_news`; CREATE TABLE IF NOT EXISTS `news` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `title` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL, `slug` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL, `image` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL, `description` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ; INSERT INTO `news` (`id`, `title`, `slug`, `image`, `description`) VALUES (1, 'Bài 01: Cài đặt MySQL và tham quan PHPMyAdmin', 'cai-dat-mysql-va-tham-quan-phpmyadmin', 'https://freetuts.net/upload/tut_post/images/2015/03/04/311/hoc-mysql-cai-dat-mysql-va-tham-quan-phpmyadmin.gif', 'Trong bài đầu tiên này chúng ta sẽ tìm hiểu cách cài đặt MYSQL và tham quan sơ qua hệ quản trị CSDL MySQL'), (2, 'Bài 02: MySQL Table Types & Storage Engines', 'mysql-table-types-storage-engines', 'https://freetuts.net/upload/tut_post/images/2015/03/04/311/hoc-mysql-cai-dat-mysql-va-tham-quan-phpmyadmin.gif', 'Trong bài này chúng ta sẽ tìm hiểu một số loại table trong mysql và storage engines. Việc nắm từng loại table này giúp bạn sử dụng một cách hiệu quả về tính performance'), (3, 'Bài 03: MySQL Data Types', 'mysql-data-types', 'https://freetuts.net/upload/tut_post/images/2015/03/04/311/hoc-mysql-cai-dat-mysql-va-tham-quan-phpmyadmin.gif', 'Như ta biết trong SQL có một ngôn ngữ tên là T-SQL, mà đã là ngôn ngữ lập trình thì đương nhiên sẽ có các kiểu dữ liệu.');
# Viết code PHP tạo RSS cho website
Bây giờ bạn tạo một file rss.php
và dán nội dung sau vào:
// Thiết lập cấu trúc fiel là xml header("Content-type: text/xml"); // Hàm chuyển đổi những ký tự đặc biệt để khỏi lỗi XML function xml_entities($string) { return str_replace( array("&", "<", ">", '"', "'"), array("&", "<", ">", """, "'"), $string ); } // Kết nối CSDL và lấy danh sách 10 tin mới nhất $conn = mysqli_connect("localhost", "root", "vertrigo", "rss_news") or die("Khong the ket noi CSDL"); mysqli_set_charset($conn,"utf8"); $query = "SELECT * FROM news order by id desc"; $result = mysqli_query($conn, $query); // Lặp dư liệu và đưa ra các items XML $items = ''; while ($row = mysqli_fetch_array($result)) { $items .= '<item>'; $items .= "<title>" . xml_entities($row['title']) . "</title>"; $items .= "<link>" . xml_entities("https://freetuts.net/{$row['slug']}-{$row['id']}.html") . "</link>"; $items .= "<description>" . xml_entities($row['description']) . "</description>"; $items .= "<guid>" . xml_entities("https://freetuts.net/{$row['slug']}-{$row['id']}.html") . "</guid>"; // Nếu bạn muốn thêm ngày tạo tin thì trong CSDL thêm một field add_date và // thêm dòng này: // $items .= "<pubDate>{$result['description']}</pubDate>"; $items .= '</item>'; } // Xuất thông tin website và nối $items vào echo '<?xml version="1.0"?> <rss version="2.0"> <channel> <title> ' . xml_entities('Học lập trình online freetuts.net') . ' </title> <link>' . xml_entities('https://freetuts.net') . '</link> <description> ' . xml_entities('Freetust.net là một website học lập trình online miễn phí') . ' </description> <language>vi_VN</language> '.$items.' </channel> </rss>';
Trong đó bạn cần chú ý những vấn đề sau:
- Đoạn code
header("Content-type: text/xml");
dùng để thiết lập hiển thị cho file này là dạng XML, nếu không có nó thì browser sẽ hiểu đây là file bình thường. - Hàm
xml_entities
có tác dụng chuyển đổi những ký tự đặc biệt để không bị lỗi trùng với cú pháp của XML. Nếu không sử dụng hàm này thì bạn phải sử dụng CDATA - Sửa lại thông tin kết nối giống với hệ thống của bạn
- Sửa lại đường dẫn URL trong phần hiển thị
items
- Nếu website bạn có tên field khác thì nhớ sửa lại luôn nhé, đây chỉ là một ví dụ demo
Bây giờ bạn chạy file rss.php
lên sẽ thấy kế quả như sau tức là đã thành công:
4. Lời kết
Bài này mang tính chất tham khảo cách tạo RSS cho website nên nếu bạn sử dụng thì hãy chỉnh sửa lại thông tin cho giống với website của bạn nhé, nó cũng rất đơn giản và dễ sử dụng. Bạn có thể lên những website lớn khác để tham khảo các RSS của họ.