Thứ Tư, 25 tháng 5, 2011

Update tiện ích recent posts

Từ trước đến giờ đa số các tiện ích recent posts có 1 hạn chế nhỏ mà mọi người dễ dàng thấy, đó là việc hiện thị summary cho bài viết ko được tốt cho lắm. Ở 1 số bài viết, phần summary bị mất chữ, nguyên nhân của việc này là do cách thức ta ngắt phần summary post.



Trước giờ ta hay dùng cách ngắt theo kí tự, tức là chọn 1 số kí tự nhất định để hiển thị ở phần summary. Do đó mà khi đủ số kí tự thì script sẽ ngắt, do đó mà ta sẽ hay gặp trường hợp chữ hiển thị không đủ. Để khắc phục điều này, ta sẽ dùng cách chọn số từ để hiển thị chứ không phải số kí tự. Thực ra nói số từ cũng ko đúng, nếu nói đúng hơn thì là cụm kí tự chứ không phải là "từ". Cụm kí tự ở đây mình nói là các chuỗi kí tự được cách nhau bằng dấu cách (khoảng trắng).
Ví dụ:
"... cũng ko đúng, nếu ..." - ta sẽ có 4 cụm kí tự, và cụm "đúng," không được xem là 1 từ.
Thực ra cách này đã có từ lâu, nhưng chưa có ai để ý để khắc phục cho tiện ích recent posts, thế nên hôm nay mình sẽ hướng dẫn các bạn cách khắc phục điều này.

Trong file js của các tiện ích recent posts ta hay gặp 1 hàm như bên dưới :


function removeHtmlTag(strx,chop){
var s = strx.split("<");
for(var i=0;i<s.length;i++){
if(s[i].indexOf(">")!=-1){
s[i] = s[i].substring(s[i].indexOf(">")+1,s[i].length);
}
}
s = s.join("");
s = s.substring(0,chop-1);
return s;

}

- Hàm này dùng để loại bỏ các thẻ HTML có trong phần nội dung của bài viết trên feed. Đồng thời giúp hiển thị phần rút gọn của bài viết. Giá trị chop ở đây chính là số kí tự sẽ hiển thị ở phần summary.

Các bạn thay hàm ở trên bằng hàm bên dưới:

function removeHtmlTag(s,max){
s=s.replace(/<br.*?>/ig, ' ');
return s.replace(/<.*?>/ig, '').split(/\s+/).slice(0,max-1).join(' ')
}


Và bây giờ các bạn chỉ cần thay giá trị của biến summaryPost lại là được. (đa số các tiện ích recent posts mình hay đặt tên biến để tùy chỉnh số kí tự hiển thị là summaryPost )

- Ví dụ : summaryPost = 30; giá trị 30 chính là số cụm kí tự (cách nhau bằng dấu khoảng trắng) sẽ được hiển thị là 30.

Chúc các bạn thành công.

0 nhận xét:

Đăng nhận xét