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.

    4.4/5 - (2 bình chọn)

    1 Nhận xét
    1. có thể lấy được text của 1 class trong nội dung bài viết không a?

      Trả lờiXóa