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