Đọc qua cái tiêu đề thôi đã nghe có vẻ hấp dẫn rồi phải không các bạn. Nếu bạn lại đang sử dụng template có liên quan đến nguồn cấp nữa thì bạn đừng nên bỏ qua bài viết này nhé. Tại vì nó là một trong những yếu tố rất quan trọng xây dựng thành bài viết có được seo tốt hay không. Bài viết cần có Label (Nhãn), bài viết mà không có label giống như ăn cơm không có canh, nó khô khan lắm, với lại bài viết không có label sẽ không phân loại được bài viết vào nhóm nào.
![Cách lấy danh sách Label bài viết từ nguồn cấp feeds](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkJwq6VNugFqB8eIAYysqxvvfEtJd62lx6WigAx_AZqvhQxoz14X0VgWUF667I9pTt-StdC4GuwPyJ3v9JgTkBVvz3xX_BAZTwudySa5FDZu7WXG7-anDmSYtD1RfeX87jutTbnHUxLfAC/s1600/category-term.png)
Khi tạo bài viết mới tất nhiên bạn sẽ thêm label ít nhất cũng được một label cụ thể để đưa bài viết vào nhóm label đó. Trong chủ đề xml, tên của Nhãn được đặt là label còn trong nguồn cấp tên của nhãn được đặt thành category.
Nếu mỗi bài viết bạn chỉ thêm một nhãn thì vấn đề không cần phải bàn làm gì vì nó quá đơn giản rồi, nhưng với mỗi bài viết bạn thêm nhiều nhãn khác nhau thì bài đó sẽ có một danh sách nhãn giống như là bạn phân loại bài viết đó đưa vào nhãn A, rồi bài đó bạn cũng đưa vào nhãn B, tương tự là nhãn C, D...
Ở đây sẽ do cách bạn nghĩ nếu bạn nghĩ label nó đơn giản chỉ là thẻ tag thông thường thì sao cũng được nhưng nếu bạn muốn tạo các chuyên mục bao gồm chuyên mục chính và các chuyên mục con có đường dẫn rõ ràng thì bạn nên chú ý mà đặt tên label cho hợp lý. Danh sách label của bài viết khi hiển thị luôn được sắp xếp theo bảng chữ cái từ trái qua phải, ký tự đặc biệt đến số xong đến chữ cái, danh sách label trong nguồn cấp cũng được sắp xếp như vậy.
Trọng tâm của bài viết sẽ bắt đầu từ đây, trước tiên muốn làm gì thì làm chúng ta phải tải cái url của nguồn cấp để lấy dữ liệu trước rồi mới làm gì thì làm. Nhưng trước tiên bạn phải đảm bảo Blog đó không được tắt nguồn cấp bằng cách truy cập phần Cài đặt > Khác > Cho phép nguồn cấp dữ liệu blog > tại đây có các tùy chọn: chọn Đầy đủ để cung cấp toàn bộ nội dung bài đăng của bạn, chọn Cho đến dấu ngắt để hiển thị tất cả nội dung bài đăng trước dấu nhảy ngắt đoạn, chọn Ngắn để cung cấp khoảng 400 ký tự đầu tiên. Nếu chọn Không, blog của bạn sẽ không được cung cấp và nội dung blog sẽ không được Google Blog Search lập chỉ mục.
Có vài cách tải url nguồn cấp như tải trực tiếp sử dụng callback, ví dụ
+ Nếu bạn chọn Đầy đủ
<script src='/feeds/posts/default?alt=json-in-script&callback=labelfeeds'></script>
+ Nếu bạn chọn Cho đến dấu ngắt
<script src='/feeds/posts/summary?alt=json-in-script&callback=labelfeeds'></script>
Ngoài ra bạn có thể tải url nguồn cấp của một label cụ thể, ví dụ:
<script src='/feeds/posts/default/-/tên label?alt=json-in-script&callback=labelfeeds'></script>
Mặc định nếu bạn sử dụng url nguồn cấp như trên sẽ chỉ tải được tối đa 25 bài viết đã được xuất bản mới nhất, nếu bạn muốn tải nhiều hơn con số 25 nhưng tối đa không được quá 150 bài viết cho mỗi feeds, bạn thêm tham số max-results=<số bài>, ví dụ:
<script src='/feeds/posts/default?alt=json-in-script&max-resulls=150&callback=labelfeeds'></script>
Nếu bạn muốn tải hơn con số 150, bạn cần thêm tham số start-index=<bài bắt đầu> trong url nguồn cấp, ví dụ:
<script src='/feeds/posts/default?alt=json-in-script&max-resulls=150&callback=labelfeeds'></script>
<script src='/feeds/posts/default?alt=json-in-script&start-index=151&max-resulls=150&callback=labelfeeds'></script>
Ngoài cách tải trực tiếp url nguồn cấp, bạn có thể sử dụng các phương pháp khác như sử dụng ajax, document.write,...các bạn tìm hiểu thêm trên mạng nhé.
Khi đã tải xong nguồn cấp, tiếp theo chúng ta sẽ viết script lấy dữ liệu hiển thị, đoạn script này phải được đặt trên url nguồn cấp như sau:
<script>//<![CDATA[
function labelfeeds(e) {
if (e.feed.entry) { // Nếu nguồn cấp có bài viết
for (var t = 0; t < e.feed.entry.length; t++) { // Vòng lặp của một bài viết
var entry = e.feed.entry[t];
if ('category' in entry) { // Nếu bài viết có label
var strlist = '';
for (var k = 0; k < entry.category.length; k++) { // Vòng lặp của label trong một bài viết
// Viết script lấy danh sách label tại đây
}
}
}
}
}
//]]></script>
<script src='/feeds/posts/summary?alt=json-in-script&callback=labelfeeds'></script>
Bây giờ sẽ viết script lấy danh sách (chuỗi) label
+ Số label có trong một bài
var str = entry.category.length;
+ Lấy tất cả label
strlist += entry.category[k].term;
+ Lọc lấy tất cả label nhưng bỏ label đầu
Thay k = 0 thành k = 1
+ Lọc lấy tất cả label nhưng bắt đầu bằng ví trí n
Thay k = 0 thành k = n (ví dụ k = 2, lấy danh sách label thứ 3 trở đi)
+ Lọc lấy tất cả label nhưng bỏ label cuối
Thay entry.category.length thành entry.category.length - 1
+ Lọc lấy label đầu
var str0 = entry.category[0].term;
+ Lọc lấy label cuối
var strlast = entry.category[k].term;
+ Lọc lấy label theo vị trí n
if (str >= n) {
var strn = entry.category[n].term;
}
+ Lọc lấy một label bất kỳ trong danh sách label
var strn = 'selling'; // Tên label cần tìm
var strsp = listlabel.indexOf(strn); // Tìm vị trí (ký tự của chuỗi) label sắp xếp trong danh sách
var strstring = Number(strsp) + strn.length; // tổng số ký tự của chuỗi
var strk = listlabel.slice(strsp, strstring); // Lọc lấy label
Giải thích phần này cho các bạn dễ hiểu: Khi bạn trích xuất lấy ra danh sách một chuỗi label thì chuỗi đó được đếm ký tự bắt đầu bằng 0, giả sử chuỗi đó có độ dài bằng 55, khi bạn sử dụng hàm indexOf tìm kiếm label trong chuỗi đó bạn đang đi tìm vị trí xuất hiện bắt đầu của label đó ví dụ vị trí của label đó bắt đầu bằng 18. Tiếp theo bạn cần đếm số ký tự từ vị trí bắt đầu là 0 đến vị trí xuất hiện label đó, ta có Number(strsp) và độ dài của label cần lấy ta có strn.length. Cuối cùng ta sẽ cắt từ số ký tự từ vị trí bắt đầu là 0 đến vị trí xuất hiện và độ dài của label cần lấy => Cho ra tên label cần lấy.