Banner

Trích xuất nội dung bài viết từ nguồn cấp blog

Trích xuất nội dung bài viết từ nguồn cấp blog bằng cách chuyển đổi từ json sang html bằng script


Trích xuất nội dung bài viết từ nguồn cấp blog là cách bạn sẽ viết script tìm thứ cần lấy sau đó ráp lại thành bố cục hiển thị một bài viết hoàn chỉnh. Khi viết bài bạn thêm nội dung gì thì nguồn cấp của bài đăng đó đều lưu trữ phần bạn đã thêm. Việc của bạn cần làm là chuyển đổi từ json sang html bằng script.

Mình chia sẻ code script tóm tắt dưới đây lấy nội dung bài viết từ nguồn cấp:

<script>//<![CDATA[
function get_data(data) {
  if (data.feed.entry) {
    for (var t = 0; t < data.feed.entry.length; t++) {
      var entry = data.feed.entry[t]
      // Liên kết
      for (var a = 0; a < entry.link.length; a++) {
        if (entry.link[a].rel == 'alternate') {
          var entry_alternate = entry.link[a].href
          break
        }
      }
      // Liên kết tiêu đề
      for(var b = 0; b < entry.link.length; b++)
        if(entry.link[b].rel == 'related'){
          var entry_related = entry.link[b].href
          break
        }
      }
      // Liên kết đính kèm
      var entry_enclosure = ''
      for (var c = 0; c < entry.link.length; c++) {
        if(entry.link[c].rel == 'enclosure'){
          entry_enclosure = entry.link[c].href
        }
      }
      // Tiêu đề
      var entry_title = entry.title.$t
      // Link ảnh
      if ('media$thumbnail' in entry) {
        // Link ảnh
        var entry_thumb = entry.media$thumbnail.url.replace('s72-c', 's1600')
      } else {
        var st = entry.content.$t,
          at = st.indexOf("<img"),
          bt = st.indexOf('src="', at),
          ct = st.indexOf('"', bt + 5),
          dt = st.substr(bt + 5, ct - bt - 5)
        if (at != -1 && bt != -1 && ct != -1 && dt != "") {
          entry_thumb = dt
        } else {
          // Link ảnh thay thế nếu bài viết không có ảnh
          entry_thumb = 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDCQEJLNSjdH72adB-jqpwZgpHO6y2n2TclnA0zQ_QTIStsTqoyDS_JbiAhFYgagHd9SxrvA7OL1DvtxTboBVjt_IMbI0iBUcn9zErpSr8taldp_m1YaYuZutfgh0a0Sc2cI-1LHLTc8kp/s1600/safe_image.png'
        }
      }
      // Tác giả
      if ('author' in entry) {
        for (var i = 0; i < entry.author.length; i++) {
          // Tên tác giả
          var entry_author_name = entry.author[i].name.$t,
            entry_author_image = entry.author[i].gd$image.src // Link ảnh tác giả
          // Liên kết hồ sơ
          if (entry.author[i].uri) {
            var entry_author_uri = entry.author[i].uri.$t
          } else {
            entry_author_uri = 'javascript:void(0)'
          }
        }
      }
      // Ngày xuất bản
      var entry_published_date = entry.published.$t.substring(8, 10), // Ngày
      entry_published_month = entry.published.$t.substring(5, 7), // Tháng
      entry_published_year = entry.published.$t.substring(0, 4), // Năm
      entry_published = entry.published.$t.substring(8, 10) + '/' + entry.published.$t.substring(5, 7) + '/' + entry.published.$t.substring(0, 4)
      // Lấy danh sách Nhãn
      if ('category' in entry) {
        var label_name = '',
          label_all=''
        for (var k = 0; k < entry.category.length; k++) {
          // Tên Nhãn cuối
          label_name = entry.category[k].term
          // Tất cả Nhãn
          label_all += entry.category[k].term
        }
      }
      // Lấy đoạn trích tóm tắt
      if ('content' in entry) {
        var post_snippet = entry.content.$t, // Nội dung bài đăng
          snippets = 100,
          summary = '',
          re = /<\S[^>]*>/g,
          post_snippet = post_snippet.replace(re, "")
        if (post_snippet.length < snippets) {
          summary = post_snippet
        } else {
          post_snippet = post_snippet.substring(0, snippets)
          var quoteEnd = post_snippet.lastIndexOf(' '),
            entry_summary = post_snippet.substring(0, quoteEnd)
        }
      } else {
        entry_summary = ''
      }
      // Lấy số bình luận
      if ('thr$total' in entry) {
        var entry_comments = entry.thr$total.$t
      } else {
        entry_comments = 0
      }
      var contents = ''
      $(cate[i]).find('.widet-content').append(contents)
    }
  }
}
//]]></script>

Công việc của bạn chỉ đơn giản ráp vào đoạn var contents = '', ví dụ

var contents = '<div class="item"><div class="item-thumbnail"><a href='+ entry_alternate +' title="'+ entry_title +'"><img alt="'+ entry_title +'" src='+ entry_thumb +'></a></div><div class="item-title"><a href='+ entry_alternate +' title="'+ entry_title +'">'+entry_title+'</a></div><div class="item-meta"><span class="item-date">'+ entry_published +'</span><span class="item-label"><a class="label-name" href="/search/label/' + label_name + '" title="' + label_name + '">'+ label_name +'</a></span></div><div class="item-snippet"><p>'+entry_summary+'</p></div></div>'

Bài này mình viết tiếp theo bài Làm thế nào để tối ưu trang tải nhanh khi tải URL nguồn cấp? do đó các bạn cần đọc kỹ và làm theo bài viết đó kết hợp với bài này để trích xuất nội dung bài viết từ nguồn cấp blog.


Liên hệ Zalo