GORAGOD.com

RSS กับ XML (ตอนที่ 2)

ปัญหาในการทำเว็บไซต์ ที่ต้องดึงข่าว RSS มาแสดง มักพบว่าถ้ามี RSS หลายตัว จะพบว่าการโหลดเว็บ จะอืดเป็นเรือเกลือเลยทีเดียว ทำให้ผมคิดว่าน่าจะมีการนำ AJAX มาใช้งานเพื่อให้ในการโหลดเว็บไม่ต้องรอให้เสียเวลา นอกจากนี้การใช้ AJAX ยังจะทำให้การเปลี่ยนแปลงรูปแบบการแสดงผลทำได้ง่ายขึ้นอีกด้วย และสามารถทำได้ด้วยตัวเองอย่างไม่ยากเย็นนัก

ในการอ่านข่าว เราจะเอา url ของเนื้อหาข่าวมากำหนดให้กับโปรแกรม โปรแกรมจะไปดึงข่าวมา (ด้วย AJAX) เมื่อได้รับข่าวสารเรียบร้อยแล้ว ก็ใช้ Javascript แยกเอาส่วนต่างๆของเอกสาร XML ที่ได้รับมาออก เพื่อจัดการแสดงผลต่อไป
function LoadXMLDoc(url, handler, language) {
  document.getElementById(handler).innerHTML="Loding...";
  var req=Inint_AJAX();
  if (req!=null) {
    req.onreadystatechange=function() {
      if (req.readyState==4) {
        if (req.status==200) {
          xml=req.responseXML;
          parseFeed(req.responseXML, handler);
        }
      }
    };
    req.open("GET", "rss.php?feed="+url+"&lang="+language, true);
    req.send(null);
  }
}

LoadXMLDoc เป็นฟังก์ชั่นเพื่อ load ข่าวครับโดยที่ url คือ url ของเอกสารข่าว, handler คือ พื้นที่ (div) สำหรับแสดงผล โดยส่งค่ามาเป็น id ของพื้นที่นั้นๆ และ language เป็นการกำหนดภาษาของเอกสาร เช่น utf-8, tis-620 เป็นต้น
<?php
  // rss.php
  $language=$_GET['lang'];
  header("Content-Type: application/xml; charset=$language");
  echo file_get_contents($_GET['feed']);

ฟังก์ชั่นจะไปทำการเรียกเอาเอกสาร XML ด้วยไฟล์ rss.php มาทำงานเพื่อรับเอาเอกสาร XML มาจากเว็บไซต์ต้นทาง เทคนิคในการอ่านเอกสารเราก็ใช้ฟังก์ชั่น file_get_contents อ่านเอาเอกสารที่กำหนดมาแล้วคืนค่ากลับไปยัง AJAX ต่อไป