====== Hướng dẫn chức năng RSS của module ====== ===== Tổng quan ===== Một module có chức năng RSS cần bổ sung đủ hai file * modules/module-name/rssdata.php * modules/module-name/funcs/rss.php Trong đó: * ''rssdata.php'' là file tạo danh mục (chủ đề) rss cho module feeds của hệ thống * ''rss.php'' là file xử lý rss chính của module. ===== Cách viết file rssdata.php ===== File này cần trả về một mảng có dạng $rssarray[] = array('catid' => 0, 'parentid' => 0, 'title' => '', 'link' => ''); Trong đó: * ''catid'' là ID của chuyên mục, chủ đề, nhóm ... * ''parentid'' là ID của chuyên mục, chủ đề, nhóm ... cha (Nếu có đa cấp) * ''title'' là tiêu đề * ''link'' là đường dẫn tới phần xử lý RSS của module (funcs rss) ==== Ví dụ về file ''rssdata.php'' không có đa cấp ==== 0, 'parentid' => 0, 'title' => '', 'link' => ''); $list = $nv_Cache->db($sql, '', $mod_name); foreach ($list as $value) { $value['parentid'] = 0; $value['link'] = NV_BASE_SITEURL . "index.php?" . NV_LANG_VARIABLE . "=" . NV_LANG_DATA . "&" . NV_NAME_VARIABLE . "=" . $mod_name . "&" . NV_OP_VARIABLE . "=" . $mod_info['alias']['rss'] . "/" . $value['alias']; $rssarray[] = $value; } ==== Ví dụ về file ''rssdata.php'' đa cấp ==== 0, 'parentid' => 0, 'title' => '', 'link' => ''); $list = $nv_Cache->db($sql, '', $mod_name); foreach ($list as $value) { $value['link'] = NV_BASE_SITEURL . "index.php?" . NV_LANG_VARIABLE . "=" . NV_LANG_DATA . "&" . NV_NAME_VARIABLE . "=" . $mod_name . "&" . NV_OP_VARIABLE . "=" . $mod_info['alias']['rss'] . "/" . $value['alias']; $rssarray[] = $value; } > Trong ví dụ trên giá trị ''parentid'' do sự quyết định của CSDL. ==== Chú ý ==== Nếu module có chức năng RSS và không phân theo chủ đề hay chuyên mục gì thì vẫn phải có file rssdata.php như sau ===== Cách viết file rss.php ===== File rss.php cần đưa được dữ liệu hợp chuẩn vào hai mảng $channel = array(); $items = array(); Mảng ''$channel'' có dạng $channel['title'] = $module_info['custom_title']; $channel['link'] = NV_MY_DOMAIN . NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name; $channel['description'] = !empty($module_info['description']) ? $module_info['description'] : $global_config['site_description']; Trong đó: * ''title'' là tiêu đề nguồn cấp tin * ''link'' là đường dẫn đến nguồn cấp tin * ''description'' là mô tả nguồn cấp tin Mảng ''$items'' có dạng $items[] = array( 'title' => $title, 'link' => NV_MY_DOMAIN . NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name . '&' . NV_OP_VARIABLE . '=' . $alias . $global_config['rewrite_exturl'], // 'guid' => $module_name . '_' . $id, 'description' => $time . (!empty($location) ? '. ' . $location : ''), 'pubdate' => $publtime ); Trong đó: * ''title'' là tiêu đề bài viết * ''link'' là đường dẫn đến bài viết * ''guid'' là khóa của tin (không quan trọng) * ''description'' mô tả tin (có thể sử dụng html vào đây) * ''pubdate'' là thời gian xuất bản tin (kiểu số nguyên) ==== Ví dụ ==== sqlreset()->select('id, time_start, time_end, title, alias, location, addtime')->order('id DESC')->limit(30); $where = 'status = 1'; if (isset($array_op[1])) { $_catid = 0; foreach ($global_array_cat as $cat) { if ($cat['alias'] == $array_op[1]) { $_catid = $cat['catid']; break; } } if (!empty($_catid)) { $where .= ' AND catids LIKE \'%,' . $_catid . ',%\''; } else { header('location:' . nv_url_rewrite(NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name . '&' . NV_OP_VARIABLE . '=' . $op, true)); die(); } } $db->from(NV_PREFIXLANG . '_' . $module_data . '_rows')->where($where); if ($module_info['rss']) { $result = $db->query($db->sql()); while (list($id, $time_start, $time_end, $title, $alias, $location, $publtime) = $result->fetch(3)) { $h = nv_date('H', $time_start); $m = nv_date('i', $time_start); $d = nv_date('d/m/Y', $time_start); $time = ($h != '00' ? $h . ':' . $m . ' ' : '') . $d; if (!empty($time_end)) { $h = nv_date('H', $time_end); $m = nv_date('i', $time_end); $d = nv_date('d/m/Y', $time_end); $time .= ' - ' . ($h != '00' ? $h . ':' . $m . ' ' : '') . $d; } $items[] = array( 'title' => $title, 'link' => NV_MY_DOMAIN . NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name . '&' . NV_OP_VARIABLE . '=' . $alias . $global_config['rewrite_exturl'], // 'guid' => $module_name . '_' . $id, 'description' => $time . (!empty($location) ? '. ' . $location : ''), 'pubdate' => $publtime ); } } nv_rss_generate($channel, $items); die(); ==== Chú ý ==== Các đường dẫn trong RSS đều phải là đường dẫn tuyệt đối.