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.0RSS 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.

<?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.');
Ok, bây giờ ta viết code PHP nhé.

# 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("&amp;", "&lt;", "&gt;", "&quot;", "&apos;"), $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:

tao-rss-cho-website-php.png

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ọ.

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Facebook để được hỗ trợ nhanh nhất.