BlogSpot cải thiện tính năng SEO cho blog

Blogger hôm nay đã cập nhật nhiều tính năng SEO mới cho Blogger. Phải tranh thủ xem qua mới rõ hết được, có lẽ giao diện blog cũ sẽ không được nâng cấp thêm. Các bạn hãy vào giao diện Blog mới để thiết kế tuỳ chỉnh. Địa chỉ giao diện mới tại đây.
Một số điểm mới có thể kể ở đây, cụ thể là :
 1. Thẻ mô tả 

   - Tuy đã được hỗ trợ trong phần cài đặt chính nhưng nó vẫn được gom nhóm vào phần tìm kiếm chung cho blog của bạn. Hãy bật nó lên lần nữa nhé.
 2. Lỗi và chuyển hướng
    -  Bạn đã có thể tạo thông báo lỗi bằng các đoạn mã, hay ảnh hiển thị.
    -  Tính năng chuyển hướng mới đã được cải thiện, giờ bạn có thể dùng javascript để tạo thêm các link cho mình. Một các hack tag SEO cho blog, mình sẽ sớm công bố tiện ích này, gộp chung nó vào phần tìm kiếm theo tag, keywords của từ khoá.


   -  Mọi người có thể check thử link sau : .. sieuluoi, bạn sẽ nhận được thông báo Rất tiếc, trang bạn đang tìm trong blog này không tồn tại. Nhưng với vài thủ thuật nhỏ ta sẽ biến nó thành một phần của Blog, như một Website hoàn thiện, hay đúng hơn là hoàn thiện.


3. Robots.txt và tuỳ chỉnh tìm kiếm của Robots.txt.

  - Với dự án mở của Blogger này ta có thể mở phần /search bị đóng lâu nay của Blogger.

User-agent: * Disallow: /search == > Allow: /search
Allow: /
 -  Chưa biết có thăng thêm index lên Google không nhưng mình tin là có.
-  Tuỳ chỉnh các thẻ meta robots mà không cần mó tay vào code temp blog.
Kết chung lại,  blogger đang càng ngày càng thân thiện với người dùng, trong năm tới và kể cả ngay về sau này nó còn tiếp tục miễn phí không thì mình không đoán được. Chỉ biết bay giờ mình yêu BlogSpot, một thứ ngon bổ rẻ.

SEO với Description Meta Tag cho Blogspot

Description Meta Tag
Một trong những cách hiệu quả để cải thiện SEO cho blog là add thêm các thẻ meta như DescriptionKeyword. Description Tag giúp Search Engine biết được trang web nói về chủ đề gì, còn Keyword Tag là các từ khóa liên quan đến nội dung blog.


Thông thường chúng ta chèn các thẻ Meta bên dưới <head> như thế này:
<meta content='Chủ đề' name='description'/>
<meta content='Từ khóa' name='keywords'/>

Vấn đề chính là ở đây, nếu chèn như trên thì tất cả các bài đăng trên blog sẽ có cùng Description Meta Tag, điều này rất là không tốt cho SEO bởi vì:

   -  Google sử dụng Meta Description của blog như là một đoạn mô tả trong trang kết quả tìm kiếm (Google SERP), nếu tất cả các bài đăng của bạn đều có phần mô tả giống nhau sẽ khiến Google nhầm lẫn. Ví dụ bạn đăng một thủ thuật về SEO nhưng nó lại có cùng Description với một bài đăng khác về jQuery, kết quả là chẳng bài đăng nào được ưu tiên trên Google cả.

   -  Google sẽ liệt kê blog của bạn vào loại duplicate contents (trùng lặp nội dung). Webmaster Tools cũng sẽ đưa ra cảnh báo.

Chúng ta giải quyết vấn đề này bằng cách add từng Description cho mỗi bài đăng, nhưng cách này hơi bất tiện nếu blog có quá nhiều bài và khiến template trở nên nặng nề rối rắm. Cách khả thi hơn là giới hạn Description Meta Tag chỉ xuất hiện ở trang chủ, như vậy Google sẽ liệt kê phần nội dung của bài đăng thành kết quả tìm kiếm. Edit template HTML rồi thay đổi các Meta Tag như sau:
<b:include data='blog' name='all-head-content'/>
<meta content='Các từ khóa' name='keywords'/>
<b:if cond='data:blog.pageType == &quot;index&quot;'>
<meta content='Chủ đề' name='description'/>
</b:if>

Ngoài ra, ta có thể add thêm Description Meta Tag cho các Static Pages của blog để tăng khả năng có Sitelinks.

Description Meta Tag

dùng đoạn mã sau:
<b:if cond='data:blog.url == "Static Page URL"'>
  <meta name='description' content='Giới thiệu'/>
</b:if>

Hy vọng thủ thuật SEO này có ích cho các thần dân Blogger.

jQuery là gì ?

jQuery
Nếu để ý bạn sẽ nhận ra trên blog này có rất nhiều thủ thuật sử dụng jQuery, vậy thực chất jQuery là cái gì và tại sao Noct lại "nghiện" nó đến vậy ?

jQuery là một Javascript Framework, một thư viện kiểu mới của Javascript hỗ trợ các nhà lập trình web tạo ra các tương tác động trên website. jQuery được khởi xướng bởi John Resig vào năm 2006 (ông này hiện đang làm trưởng dự án cho Mozzila), jQuery có mã nguồn mở và hoàn toàn miễn phí cho mọi người sử dụng. Thư viện javascript này phát triển rất nhanh, có một cộng đồng sử dụng đông đảo và được rất nhiều lập trình viên trên thế giới tham gia hoàn thiện, phát triển và viết Plugin cho nó.
Tại sao dùng jQuery ?
jQuery đơn giản hóa cách viết Javascript và tăng tốc độ xử lý các sự kiện trên trang web, giúp tiết kiệm thời gian và công sức rất nhiều so với việc ngồi viết javascript theo cách thông thường. Đúng như khẩu hiệu của nó "Viết ít hơn, làm nhiều hơn", nếu không dùng jQuery thì một chuyên gia cũng phải viết mất vài trang giấy mới làm được một nút Back to Top với hiệu ứng trượt, trong khi đó dân nghiệp dư chỉ cần vài dòng code ngắn ngủi + jQuery là đã có thể "múa rìu qua mắt thợ". Bên cạnh đó, việc sử dụng jQuery giúp giải quyết tốt vấn đề xung đột giữa các trình duyệt web.

Ngoài jQuery còn có các thư viện javascript nổi tiếng khác như mooTools, Prototype, Dojo... thế nhưng jQuery có vẻ thu hút các web designer hơn là vì nó có các ưu điểm:
- Hỗ trợ tốt việc xử lí các vấn đề thường gặp (DOM, AJAX...)
- Tương thích nhiều trình duyệt web phổ biến.
- Nhỏ gọn, dễ dùng, có nhiều tài liệu hướng dẫn sử dụng chi tiết.
- Ít xung khắc với các thư viện Javascript khác.
- Có rất nhiều Plugin.
- Nếu nắm vững CSS thì bạn có thể học nó trong một tiếng !

jQuery có thể làm được những gì ?
Hướng tới các thành phần trong HTML: nếu không sử dụng thư viện Javascript này, bạn phải viết rất nhiều dòng code mới có thể đạt được mục tiêu là di chuyển trong cấu trúc cây (Document Object Model) của một tài liệu HTML và chọn ra các thành phần liên quan. jQuery cho phép bạn chọn bất cứ thành phần nào của tài liệu để "vọc" một cách dễ dàng như sử dụng CSS.

Thay đổi giao diện của một trang web: CSS là công cụ rất mạnh để định dạng một trang web nhưng nó có một nhược điểm là không phải tất cả các trình duyệt đều hiển thị giống nhau. Cho nên jQuery ra đời để lấp chỗ trống này, vì vậy bạn có thể sử dụng nó để giúp trang web có thể hiển thị tốt trên hầu hết các trình duyệt. Hơn nữa jquery cũng có thể thay đổi class hoặc những định dạng CSS đã được áp dụng lên bất cứ thành phần nào của HTML ngay cả khi trang web đó đã được trình duyệt load thành công.

Thay đổi nội dung của tài liệu: jQuery không chỉ có thể thay đổi bề ngoài của trang web, nó cũng có thể thay đổi nội dung của chính tài liệu đó chỉ với vài dòng code. Nó có thể thêm hoặc bớt nội dung trên trang, hình ảnh có thể được thêm vào hoặc đổi sang hình khác, danh sách có thể được sắp xếp lại hoặc thậm chí cả cấu trúc HTML của một trang web cũng có thể được viết lại và mở rộng. Tất cả những điều này bạn hoàn toàn có thể làm được nhờ sự giúp đỡ của API (Giao diện lập trình ứng dụng).

Tương tác với người dùng: cho dù công cụ bạn dùng có mạnh mẽ đến mấy, nhưng nếu bạn không có quyền quyết định khi nào nó được sử dụng thì công cụ đó cũng coi như bỏ. Với thư viện javascript như jQuery, nó cho bạn nhiều cách để tương tác với người dùng ví dụ như khi người dùng nhấp chuột vào đường link thì sẽ có gì xảy ra. Nhưng cái hay của nó là không làm cho code HTML của bạn rối tung lên chính là nhờ các Event Handler.

Tạo hiệu ứng động cho những thay đổi của tài liệu: để tương tác tốt với người dùng, các web designer phải cho người dùng thấy được hiệu ứng gì sẽ xảy ra khi họ làm một tác vụ nào đó. jQuery cho phép bạn sử dụng rất nhiều hiệu ứng động như mờ dần, chạy dọc chạy ngang v.v.. và nếu vẫn chưa đủ, nó còn cho phép bạn tự tạo ra các hiệu ứng của riêng mình.

Lấy thông tin từ server mà không cần tải lại trang web: đây chính là công nghệ ngày càng trở nên phổ biến Asynchronous JavaScript And XML (AJAX), nó giúp người thiết kế web tạo ra những trang web tương tác cực tốt và nhiều tính năng. Thư viện jQuery loại bỏ sự phức tạp của trình duyệt trong quá trình này và cho phép người phát triển web có thể tập trung vào các tính năng đầu cuối, đơn giản hoá các tác vụ javascript. Ngoài những tính năng như đã nêu ở trên, jQuery còn cho phép các nhà phát triển web viết code javascript đơn giản hơn nhiều so với cách truyền thống như là các vòng lặp và điều khiển mảng.


Nếu trước đây khi chưa có nhiều Javascript Framework mạnh như jQuery, các trang web đa phần là tĩnh, tính tương tác rất kém. Việc tự phát triển mã nguồn cho trang web khá phức tạp và mất nhiều thời gian. Có thể dùng Flash để bù đắp khiếm khuyết đó, thế nhưng Flash lại không có chút giá trị nào về SEO. Chính vì vậy các thư viện javascript mở như jQuery đang rất được chú ý. Đơn cử như việc Blogger sử dụng jQuery cho tính năng Dynamic View mới ra gần đây.

Ngay trên blog này sử dụng đến 6 hiệu ứng + 2 Plugin của jQuery (đang định bổ sung vài cái nữa), tất cả đều hoạt động rất mượt và ổn định. Mình hoàn toàn có thể bỏ bớt jQuery effect để đạt được tốc độ tối ưu cho blog, nhưng nếu như vậy thì Noct Blog chẳng khác gì các trang web tĩnh chán ngắt khác và chắc là sẽ không được nhiều người chú ý.

Bạn e ngại việc sử dụng thư viện jQuery khiến giảm tốc độ tải trang web ? Đúng, jQuery khiến trang web load chậm hơn một chút nhưng mình khẳng định là nhanh hơn nhiều so với đoạn code Recent Posts mà bạn vẫn thường dùng (tải feed về, xử lí feed, hiển thị...). Nếu vẫn cảm thấy chậm, bạn cần nâng cấp phiên bản mới của trình duyệt web hoặc tốt hơn hết là thay mới cỗ PC già cỗi của mình. Khi sử dụng jQuery thì bạn được nhiều hơn là mất, trang web của bạn trông sẽ chuyên nghiệp hơn, load chậm hơn một chút nhưng sẽ có nhiều visitor hơn. Cũng giống như là bạn đi tới cơ quan của mình bằng một chiếc xe xịn, bạn được nhiều người hâm mộ, bạn cảm thấy hài lòng mặc dù biết nó tốn xăng.

Phiên bản mới nhất của jQuery1.6 được cung cấp free tại địa chỉ https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js bởi các server cực mạnh của Google, bạn có thể sử dụng các phiên bản cũ hơn nếu thích. Cú pháp để chèn jQuery vào trong template là như thế này:
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js' type='text/javascript'/>
Đừng chần chừ e ngại, hãy trải nghiệm jQuery bằng các thủ thuật đơn giản trên blog này, có thể bạn sẽ mê nó ngay.

Tất cả các hiệu ứng của jQuery chỉ cần dùng chung một liên kết đến jquery.js là đủ, và hãy đảm bảo là nó ở vị trí trên cùng.
Ví dụ:
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js' type='text/javascript'/>
<Code thủ thuật 1>
............................
<Code thủ thuật 2>
............................

Bài viết có sử dụng tư liệu của izwebz.com

Tạo tiêu đề trang đúng theo chuẩn Google SEO 2010

Thẻ tiêu đề (Title Tag) là một thành phần HTML quan trọng đối với SEO và kinh nghiệm người dùng, được sử dụng để mô tả ngắn gọn và chính xác chủ đề của một tài liệu web. Khi bắt đầu xúc tiến SEO cho blogspot của bạn, vấn đề cơ bản đầu tiên cần xem xét đến chính là thẻ tiêu đề. Chúng tôi sẽ giúp bạn từng bước hiểu rõ căn bản về tầm quan trọng của thẻ tiêu đề theo chuẩn Google SEO 2010.

Trình bày tiêu đề trang bằng cách sử dụng các thẻ tiêu đề

Nội dung tiêu đề trang được hiển thị ở các kết quả tìm kiếm. Thẻ tiêu đề cho người dùng và công cụ tìm kiếm biết chủ đề của trang cụ thể là gì. Thẻ <title> phải được đặt trong thẻ </head> của tài liệu HTML (1). Tốt nhất là bạn nên tạo tiêu đề duy nhất cho mỗi trang trên trang web của bạn.



(1) Tiêu đề trang chủ của trang web thẻ bóng chày của chúng tôi liệt kê tên doanh nghiệp và ba lĩnh vực hoạt động chính

Nếu tài liệu của bạn xuất hiện trong trang kết quả tìm kiếm, nội dung của thẻ tiêu đề thường sẽ xuất hiện tại dòng đầu tiên của các kết quả (nếu bạn không quen với các phần khác nhau của kết quả tìm kiếm của Google, bạn có thể muốn xem video cơ chế mổ xẻ kết quả tìm kiếm của Matt Cutts, một kỹ sư của Google và biểu đồ trang kết quả tìm kiếm của Google hữu ích này). Các từ trong tiêu đề được in đậm nếu chúng xuất hiện trong truy vấn tìm kiếm của người dùng. Điều này có thể giúp người dùng nhận ra nếu trang liên quan đến tìm kiếm của họ (2).



(2) Người dùng thực hiện truy vấn [baseball cards]. Trang chủ của chúng tôi hiển thị dưới dạng kết quả tìm kiếm với tiêu đề được liệt kê tại dòng đầu tiên (lưu ý rằng các cụm từ truy vấn người dùng đã tìm kiếm xuất hiện bằng chữ in đậm)



Nếu người dùng nhấp vào kết quả và truy cập trang, tiêu đề trang sẽ xuất hiện ở phía trên cùng của trình duyệt

Tiêu đề trang chủ của bạn có thể liệt kê tên trang web/doanh nghiệp và có thể có một số thông tin quan trọng như vị trí thực của doanh nghiệp hoặc có thể là một vài lĩnh vực hoạt động chính hoặc các mặt hàng được chào bán của doanh nghiệp (3).



(3) Người dùng thực hiện truy vấn [rarest baseball cards]. Trang liên quan, sâu hơn (tiêu đề của trang là duy nhất đối với nội dung của trang) trên trang web của chúng tôi xuất hiện dưới dạng kết quả


Các biện pháp tốt cho các thẻ tiêu đề trang 

1. Mô tả chính xác nội dung trang: Chọn tiêu đề truyền đạt hiệu quả chủ đề nội dung trang. Bạn cần tránh:
  • Chọn tiêu đề không liên quan đến nội dung trang
  • Sử dụng các tiêu đề mặc định hoặc không rõ ràng như "Untitled" hoặc "New Page 1"
2. Tạo thẻ tiêu đề duy nhất cho mỗi trang: Mỗi trang của bạn tốt nhất nên có thẻ tiêu đề duy nhất, thẻ này giúp Google biết trang này không giống như các trang khác trên trang web của bạn ở điểm nào. Bạn cần tránh:
  • Sử dụng thẻ tiêu đề duy nhất cho tất cả các trang web của bạn hoặc nhóm lớn các trang
3. Sử dụng các tiêu đề ngắn gọn, nhưng mang tính mô tả: Tiêu đề có thể vừa ngắn gọn và giàu thông tin. Nếu tiêu đề quá dài, Google sẽ chỉ hiển thị một phần tiêu đề trong kết quả tìm kiếm. Bạn cần tránh:
  • Sử dụng các tiêu đề quá dài không có ích cho người dùng
  • Bổ sung các từ khoá không cần thiết trong các thẻ tiêu đề của bạn.
Sau khi tìm hiểu kiến thức cơ bản về thẻ tiêu đề, vậy chúng ta áp dụng vào blogspot như thế nào?

Vấn đề quan trọng nhất ở đây là làm sao để tạo thẻ tiêu đề duy nhất cho mỗi trang blogspot. Để làm được như vậy bạn sử dụng code như thế này:
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<title><data:blog.title/></title>
<b:else/>
<title><data:blog.pageName/> | <data:blog.title/></title>
</b:if>

(Trong Template của blogspot, bạn hãy đặt đoạn code trên trước dòng <b:skin><![CDATA[/*)

Đoạn code trên nói rằng, đối với kiểu trang chủ thì thẻ tiêu đề chính là tiêu đề blog (tên blog), còn đối với các kiểu trang còn lại sẽ gồm tên trang và tiêu đề blog; tức là các trang nhãn, trang tĩnh, trang lưu trữ, trang item đều có tên trang riêng nên sẽ tạo tính duy nhất cho thẻ tiêu đề của từng trang. Đối với trang nhãn, tên trang chính là tên nhãn. Đối với trang lưu trữ, tên trang là tháng lưu trữ> Đối với trang tĩnh và trang item thì tên trang là tiêu đề bài viết, do đó tất nhiên sẽ tạo tính duy nhất cho thẻ tiêu đề của từng trang.

Kế đến, bạn sử dụng các tiêu đề ngắn gọn, nhưng mang tính mô tả như thế nào?

Tiêu đề bài viết không nên quá dài hoặc quá ngắn. Tiêu đề bài viết chứa dưới 70 ký tự là chuẩn cho SEO. Bạn cần đặt tiêu đề bài viết có độ dài vừa phải đảm bảo sự chính xác trong việc mô tả chủ đề của bài viết, vì các công cụ tìm kiếm sẽ cắt bớt những tiêu đề quá dài.



Bạn có thể sử dụng các con số trong tiêu đề bài viết để tăng tính mô tả. Ví dụ: 10 cách để tìm nhà quảng cáo cho blog của bạn. Với một tiêu đề như vậy, trước khi người đọc lướt qua nội dung bài viết thì phần nào sẽ cảm thấy sự quan tâm và tò mò muốn đọc bài viết khi nhìn thấy một tiêu đề như vậy.

Sử dụng các từ gây chú ý cho tiêu đề bài viết để thu hút sự chú ý của người đọc. Bạn có thể sử dụng những từ như: tốt nhất, tối ưu, hiệu quả, thiết yếu, độc đáo, đỉnh, hàng đầu, miễn phí, bí quyết, thủ thuật…

Phân tích các thẻ dữ liệu trong bố cục Template

Trong cấu trúc bố cục XML của Blogger Template, có nhiều thẻ khác nhau bạn có thể sử dụng để gộp các mảng dữ liệu riêng biệt trong Template. Tất cả chúng được định dạng là <data:name/> hoặc <data:name1.name2/>, trong đó name là tên của mảng dữ liệu riêng biệt mà bạn muốn sử dụng. Trong ví dụ name1.name2, thì name2 là một hạng mục riêng trong một bộ dữ liệu được gọi là name1, ví dụ trong thẻ <data:post.body/> thì body là phần nói về thân chứa của bài viết.

Dưới đây là danh sách các dữ liệu được chia thành các phần theo thành phần trang, do các kiểu tiện ích khác nhau thì sử dụng các dữ liệu khác nhau:

1. Dữ liệu tổng thể

Thông tin này áp dụng cho toàn bộ trang vì thế bạn có thể sử dụng nó ở bất cứ đâu, không giống như các dữ liệu khác chỉ có thể được dùng trong một tiện ích riêng biệt. Dưới đây là danh sách các thẻ dữ liệu tổng thể:
  • <data:blog.title/>: tiêu đề blog
  • <data:pageType/>: kiểu trang hiện hành, như các kiểu trang 'item', 'archive', 'index'.
  • <data:blog.pageName/>: tên trang
  • <data:blog.pageTitle/>: tiêu đề trang hiện hành
  • data:blog.url: URL của trang hiện hành
  • data:blog.homepageUrl: trang chủ của blog
  • <data:blog.encoding/>: mã hóa để sử dụng cho blog, ví dụ UTF-8
  • data:blog.languageDirection: định dạng ngôn ngữ từ trái sang phải (ltr) hoặc từ phải sang trái (rtl)
  • <data:blog.feedLinks/>: các đường dẫn nguồn cấp tự phát hiện cho tiêu đề trang.

2. Tiện ích Tiêu đề đầu trang

Tiêu đề đầu trang là một tiện ích đơn giản chỉ với hai mảng dữ liệu chính, đó là:
  • <data:title/>: tiêu đề blog
  • <data:description/>: phần mô tả blog

3. Tiện ích Bài đăng Blog

Đây là phần trung tâm của blog và là phần phức tạp nhất. Dưới đây là danh sách các dữ liệu trong tiện ích này:
  • data:feedLinks: Danh sách nguồn cấp cho trang. Trên trang chính, nó chứa nguồn cấp cho cả blog; trên các trang item, nó chứa các nguồn cấp nhận xét. Mỗi hạng mục chứa các phần sau:
    • data:feedLinks.url: URL của nguồn cấp
    • <data:feedLinks.name/>: tên nguồn cấp (ví dụ 'Posts' hoặc 'Comments').
    • <data:feedLinks.feedType/>: kiểu nguồn cấp (Atom hay RSS).
    • <data:feedLinks.mimeType/>: kiểu biểu thị nguồn cấp
  • data:olderPageUrl: nếu có các bài đăng cũ hơn so với trang hiện hành thì đây là URL đến các bài đăng đó (không phải trang nào cũng có đường dẫn này)
  • <data:olderPageTitle/>: tiêu đề đường dẫn đến trang các bài đăng cũ hơn
  • data:newerPageUrl: nếu có các bài đăng mới hơn so với trang hiện hành thì đây là URL dẫn đến các bài đăng đó
  • <data:newerPageTitle/>: tiêu đề đường dẫn đến trang cái bài đăng mới hơn
  • <data:homeMsg/>: dòng text liên kết đến trang chủ (Home)
  • <data:commentLabel/>: thẻ dùng để hiển thị số nhận xét (Comments)
  • <data:authorLabel/>: thẻ dùng để chỉ người viết bài (Posted by)
  • <data:timestampLabel/>: thẻ dùng để chỉ thời gian bài được đăng (posted at)
  • <data:postLabelsLabel/>: thẻ để giới thiệu danh sách các nhãn bài viết (labels for this post)
  • <data:backlinksLabel/>: thẻ để mô tả liên kết ngược đến bài viết (links to this post)
  • data:posts: danh mục tất cả bài viết trong trang. Mỗi bài viết chứa các phần sau đây:
    • <data:post.dateHeader/>: ngày tháng xuất bản bài viết, chỉ có mặt nếu bài đầu tiên trong danh sách được đăng trong ngày hiện hành
    • <data:post.id/>: chuỗi số ID cho bài viết
    • <data:post.title/>: tiêu đề bài viết
    • <data:post.body/>: nội dung bài viết
    • <data:post.author/>: tên hiển thị tác giả bài viết
    • data:post.url: liên kết cố định của bài viết
    • <data:post.timestamp/>: định dạng thời gian bài viết, tồn tại ở mọi bài viết
    • data:post.labels: danh mục các nhãn cho bài viết. Mỗi nhãn chứa các phần sau đây:
      •  <data:label.name/>: dòng text biểu thị tên nhãn
      •  data:label.url: URL của trang liệt kê tất cả các bài viết trong blog thuộc nhãn hiện hành
      •  data:lable.isLast: true hoặc false/ chỉ định nhãn có phải là nhãn cuối cùng trong danh mục (sử dụng các dấu phẩy giữa các nhãn)
    • <data:post.allowComments/>: dùng 'True' nếu bài viết cho phép các nhận xét
    • <data:post.numComments/>: số nhận xét trên bài viết
    • <data:post.showBacklinks/>: có hay không hiển thị liên kết ngược đến bài viết
    • <data:post.numBacklinks/>: số liên kết ngược cho bài viết
    • data:post.addCommentUrl: URL của dòng 'add a comment' cho bài viết
    • data:post.emailPostUrl: URL của dòng 'email this post' cho bài viết
    • data:post.editUrl: URL cho liên kết chỉnh sửa nhanh bài viết
    • <data:post.feedLinks/>: danh mục các nguồn cấp riêng biệt cho bài viết (khác với nguồn cấp chung cho cả blog), có thể chứa cả nguồn cấp cho phần nhận xét của bài viết. Mỗi nguồn cấp chứa các phần sau đây:
      • data:f.url: URL nguồn cấp
      • <data:f.name/>: tên nguồn cấp ('Posts' hay 'Comments')
      • <data:f.feedType/>: kiểu nguồn cấp (Atom hay RSS)
      • <data:f.mimeType/>: kiểu biểu thị nguồn cấp
    • <data:post.comments/>: danh mục tất cả các nhận xét trong bài viết (chỉ trên các trang item). Mỗi nhận xét chứa các phần sau đây:
      • <data:comment.id/>: số ID của nhận xét
      • <data:comment.body/>: phần nội dung nhận xét
      • <data:comment.timestamp/>: thời gian tạo nhận xét
      • <data:comment.author/>: tên hiển thị tác giả nhận xét
      • data:comment.authorUrl: URL đến trang hồ sở của tác giả nhận xét, nếu nhận xét không phải nặc danh
      • data:comment.deleteUrl: URL để xóa nhận xét
      • data:comment.isDeleted: liệu nhận xét đã bị xóa hay chưa

4. Tiện ích Lưu trữ Blog

Tiện ích này gồm một số thẻ dữ liệu chính như sau:
  • <data:title/>: tiêu đề tiện ích
  • data:style: kiểu bố trí liệt kê các bài viết lưu trữ theo dạng 'MENU', 'FLAT', hoặc 'HIERARCHY'.
  • data:data: danh mục của mỗi đơn vị lưu trữ, chứa các phần sau:
    • <data:i.name/>: tên của các khoảng thời gian lưu trữ (ví dụ "August 2010"
    • data:i.url: đường dẫn đến trang chứa các bài viết từ khoảng thời gian lưu trữ
    • <data:i.post-count/>: bao nhiều bài viết có trong khoảng thời gian lưu trữ

5. Tiện ích Hồ sơ

Đối với blog chỉ có một tác giả thì tiện ích Hồ sơ chứa những thông tin sau đây.

  • <data:title/>: tiêu đề tiện ích
  • data:userUrl: URL đến hồ sơ của tác giả
  • data:location: vị trí từ hồ sơ của tác giả
  • data:aboutme: thông tin "About Me" từ hồ sơ
  • <data:displayname/>: tên hiển thị tác giả
  • data:photo: ảnh hồ sơ người dùng, gồm tác phần sau đây
    • data:photo.url: URL đến ảnh
    • data:photo.width: chiều rộng ảnh (đơn vị pixel)
    • data:photo.height: chiều cao ảnh (đơn vị pixel)
    • data:photo.alt: dòng text chỉ thuộc tính "alt" cho ảnh

Đối với các blog nhóm (team blogs), tiện ích hồ sơ chứa ít thông tin hơn về các tác giả, như sau:
  • <data:title/>: tiêu đề tiện ích
  • data:authors: danh sách các tác giả, mỗi tác giả chứa các phần sau đây:
    • data:displayname: tên hiển thị tác giả
    • data:userURL: URL đến trang hồ sơ của tác giả

Nếu bạn muốn thiết kế Template dùng cho cả blog một tác giả và blog nhiều tác giả thì bạn có thể sử dụng biến data:team để phân biệt giữa hai trường hợp. Ví dụ:
<b:if cond='data:team == "true"'> <!-- team blog profile -->
<ul><b:loop values='data:authors' var='i'> <li><a expr:href='data:i.userUrl'><data:i.display-name/></ a></li> </b:loop></ul>
<b:else/> <!-- normal blog profile -->
<b:if cond='data:photo.url != ""'><a expr:href='data:userUrl'><img class='profile-img' expr:alt='data:photo.alt' expr:height='data:photo.height' expr:src='data:photo.url' expr:width='data:photo.width'/></a></b:if>
<dl class='profile-datablock'> <dt class='profile-data'><data:displayname/></dt>
<b:if cond='data:showlocation == "true"'> <dd class='profile-data'><data:location/></dd> </b:if>
<b:if cond='data:aboutme != ""'><dd class='profile- textblock'><data:aboutme/></dd></b:if> </dl>
<a class='profile-link' expr:href='data:userUrl'><data:viewProfileMsg/></a>
</b:if>
6. Tiện ích Text / HTML / JavaScript

Tiện ích Text và tiện ích HTML/JavaScript hoạt động giống nhau và có cùng hai mảng dữ liệu:
  • <data:title/>: tiêu đề tiện ích
  • <data:content/>: nội dung tiện ích

7. Tiện ích Nguồn cấp

Nội dung tiện ích nguồn cấp được load bằng cách sử dụng Google AJAX API sau khi blog được trình diễn trong công cụ trình duyệt. Bạn chỉ có thể định dạng nó bằng cách sử dụng CSS. Tiện ích này gồm 2 mảng dữ liệu sau:

  • <data:title/>: tiêu đề tiện ích
  • data:feedUrl: URL của nguồn cấp

8. Tiện ích Ảnh

Một tiện ích ảnh chứa một ảnh riêng biệt, cung cấp tất cả các dữ liệu liên quan đến ảnh này.
  • <data:title/>: tiêu đề tiện ích
  • data:sourceUrl: URL nguồn ảnh
  • data:width: bề rộng của ảnh (đơn vị pixel)
  • data:height: chiều cao ảnh (đơn vị pixel)
  • data:caption: chú thích ảnh

9. Tiện ích Nhãn

Tiện ích Nhãn gồm danh mục tất cả các nhãn được sử dụng trong blog. Gồm các mảng dữ liệu sau đây:
  • <data:title/>: tiêu đề tiện ích
  • data:labels: danh mục các nhãn, mỗi nhãn chứa các phần sau:
    • <data:label.name/>: text biểu thị tên nhãn
    • <data:label.count/>: số bài viết có trong nhãn
    • data:label.url: đường dẫn đến trang hiển thị tất các các bài viết trong nhãn

10. Tiện ích Danh sách blog

Tiện ích này chứa danh sách các hạng mục chỉ là các URL riêng biệt.

  • <data:title/>: tiêu đề tiện ích
  • data:items: danh sách các hạng mục, gồm các phần sau đây:
    • data:displayStyle: định dạng hiển thị là display:block
    • <data:timePeriodSinceLastUpdate/>: khoảng cách thời gian kể từ lúc cập nhật bài viết mới
    • <data:blogTitle/>: tiêu đề blog
    • data:blogUrl: URL đến blog
    • data:blogIconUrl: URL đến favicon của blog
    • <data:itemTitle/>: tiêu đề bài viết
    • <data:itemSnippet/>: đoạn trích dẫn bài viết
    • data:itemUrl: URL đến bài viết
    • data:itemThumbnail: ảnh đại diện bài viết
    • data:itemThumbnail.height: chiều cao ảnh đại diện
    • data:itemThumbnail.width: chiều rộng ảnh đại diện
    • data:itemThumbnail.url: URL của ảnh đại diện

11. Tiện ích Danh sách liên kết

Tiện ích này gồm danh sách các liên kết, mỗi liên kết có hai phần: text và link.

  • <data:title/>: tiêu đề tiện ích
  • data:links: danh mục các liên kết, mỗi liên kết chứa các phần sau:
    • <data:link.name/>: dòng text biểu thị liên kết
    • data:link.target: URL của liên kết

12. Tiện ích Logo

Tiện ích này đơn giản nhất, chỉ có một mảng dữ liệu:
  • data:fullButton: URL của nút Blogger mà bạn chọn.

Toàn bộ cấu trúc XML của nút Blogger như thế này:
<b:widget id='BloggerButton1' locked='false' title='' type='BloggerButton'>
<b:includable id='main'>
<div class='widget-content'>
<a href='http://www.blogger.com'><img alt='Powered By Blogger' expr:src='data:fullButton'/></a>
<b:include name='quickedit'/>
</div>
</b:includable>
</b:widget>

Hy vọng với phân tích chi tiết về các thẻ dữ liệu trong bố cục Template, bạn sẽ hiểu sâu hơn về cấu trúc XML của Blogger Template, hỗ trợ thêm cho bạn kiến thức về thiết kế Template.

Thêm 1 số mẫu trình bày code đẹp cho blog.

Trước đây thủ thuật blogger đã đưa ra một số mẫu trình bày code khá đẹp và hôm nay mình cũng muốn đóng góp thêm 1 số mẫu trình bày code khác khá bắt mắt.


Bắt đầu vào vấn đề chính đây.

Chèn đoạn code bạn chọn vào trước thẻ ]]></b:skin>
Mẫu 1
.code {
border-radius:20px 0;
max-height:250px;
min-height:50px;
margin : 10px;
padding : 10px;
clear : both;
list-style-type : none;
overflow:auto;
color:#FFF;
text-shadow: 0 -1px 1px #a52676;
border:none;
background:#de45a6;
background: -moz-linear-gradient(top, #e54aac, #f374c5 95%, #d3469f);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #e54aac), color-stop(.9, #f374c5), to(#d3469f));
filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#d3469f', EndColorStr='#f374c5'); /* IE6,IE7 only */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#d3469f', EndColorStr='#f374c5')"; /* IE8 only */
box-shadow: inset 5px 5px 5px #9d2a6e, 0 1px 0px #fad1e9;
-webkit-box-shadow: inset 5px 5px 5px #9d2a6e, 0 1px 0px #fad1e9;
-moz-box-shadow: inset 5px 5px 5px #9d2a6e, 0 1px 0px #fad1e9;
}

Mẫu 2
.code {
border-radius:20px 0;
max-height:250px;
min-height:50px;
margin : 10px;
padding : 10px;
clear : both;
list-style-type : none;
overflow:auto;
background: #E6E6E6;
background: -moz-linear-gradient(top, #FFF, #f5f5f5 5%, #e2e2e2 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FFF), color-stop(.03, #f5f5f5), to(#e2e2e2));
filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#f5f5f5', EndColorStr='#e2e2e2'); /* IE6,IE7 only */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#f5f5f5', EndColorStr='#e2e2e2')"; /* IE8 only */
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border:1px solid #d0d0d0;
border-bottom:1px solid #b5b5b5;
color:#5e5e5e;
text-shadow: 1px 1px 1px #FFF}

Mẫu 3
.code {
border-radius:20px 0;
max-height:250px;
min-height:50px;
margin : 10px;
padding : 10px;
clear : both;
list-style-type : none;
overflow:auto;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
color:#FFF;
text-shadow: 0 1px 1px #0f739d;
background: #40addb;
background: -moz-linear-gradient(top, #d1edfa, #73cef5 5%, #49acd6);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #d1edfa), color-stop(0.03, #73cef5), to(#49acd6));
filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#73cef5', EndColorStr='#49acd6'); /* IE6,IE7 only */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#73cef5', EndColorStr='#49acd6')"; /* IE8 only */
border-bottom:1px solid #2581a8;}

Mẫu 4
.code {
border-radius:20px 0;
max-height:250px;
min-height:50px;
margin : 10px;
padding : 10px;
clear : both;
list-style-type : none;
overflow:auto;
color:#FFF;
text-shadow: 0 -1px 1px #0d3474;
border:none;
background: #3675da;
background: -moz-linear-gradient(top, #4986e8, #76b8fc 95%, #4986e8);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #4986e8), color-stop(.9, #76b8fc), to(#4986e8));
filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#4986e8', EndColorStr='#76b8fc'); /* IE6,IE7 only */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#4986e8', EndColorStr='#76b8fc')"; /* IE8 only */
box-shadow: inset 0px 2px 5px #1c4c7d, 0 1px 0px #c9d5e8;
-webkit-box-shadow: inset 0px 2px 5px #1c4c7d, 0 1px 0px #c9d5e8;
-moz-box-shadow: inset 0px 2px 5px #1c4c7d, 0 1px 0px #c9d5e8;}

Save Template lại.
Sau này mỗi lần trình bài code thì bạn đặt đoạn code vào như dạng sau:

<div class="code">
Nội dung đoạn code
</div>

Tạo thanh HotNews sử dụng mootools cho blog

Với việc sử dụng mootools thì thanh HotNews sẽ trở nên pro hơn nhiều, mặc định các bài viết sẽ tự động luân chuyển trong 1 khoảng thời gian xác định trước, ngoài ra còn có thêm button để điều chỉnh việc hiển thị các bài viết trên thanh hotnews.
Xem demo : LIVE DEMOHình ảnh minh họa:


>> ..Hướng dẫn đổi tên miền Blogger [video]
☼ Các bước thực hiện:
1. vào bố cục
2. vào chỉnh sửa code HTML
3. chèn đoạn code bên dưới vào trước thẻ đóng </head>
<script src='http://fandung.110mb.com/Hotnews-mootools/mootools.js' type='text/javascript'/> <script src='http://fandung.110mb.com/Hotnews-mootools/engine_compress.js' type='text/javascript'/> <script type='text/javascript'> try {$Gavick;}catch(e){$Gavick = {};}; $Gavick["gk_news_highlighternews-1"] = { "animationType" : 2, "animationSpeed" : 250, "animationInterval" : 5000, "animationFun" : Fx.Transitions.linear, "mouseover" : 1}; </script> <style type='text/css'> #bd { font-family: Arial, Helvetica, sans-serif; line-height: 1.5; color: #000000; margin-top: 5px; font-size: 12px; } .text { color:#98BF2F; margin-left:8px; } /* CSS HotNews */ div#news-1 .gk_news_highlighter{ font-family: Verdana, Arial; font-size: 11px; color: #666; } div#news-1{ width: 960px; height: 24px; border-top: 1px solid #CCCCCC; border-bottom: 1px solid #CCCCCC; background: #c51c99; clear: both; overflow: hidden; } div#news-1 .gk_news_highlighter_wrapper{ float: left; width: 820px; height: 24px; line-height: 24px; overflow: hidden; position: relative; } div#news-1 .gk_news_highlighter_item{ width: auto; height: 24px; padding-left: 20px; display: none; position: absolute; } div#news-1 .nowrap{ white-space: nowrap; } div#news-1 .gk_news_highlighter_title{ padding-left: 5px; } div#news-1 .gk_news_highlighter_desc{ padding-right: 5px; } div#news-1 .gk_news_highlighter_interface{ float: left; width: 120px; height: 24px; text-align: right; line-height: 24px; z-index: 1000; } div#news-1 .gk_news_highlighter_interface .text{ float: left; display: block; width: auto; padding-left: 5px; font-weight: bold;} div#news-1 .gk_news_highlighter_interface div {width: 30px; float: right;} div#news-1 .gk_news_highlighter_interface a.prev, div#news-1 .gk_news_highlighter_interface a.next { cursor: pointer; width: 13px; height: 24px; display: block; background: url('http://i342.photobucket.com/albums/o433/bkprobk/play.png') no-repeat 0 50%; float: left; } div#news-1 .gk_news_highlighter_interface a:hover.prev { background-position: -13px 50%; } div#news-1 a, div#news-1 a:link, div#news-1 a:visited, div#news-1 a:active, div#news-1 a:focus { color: #FFFFFF;} div#news-1 a:hover { } div#news-1 .gk_news_highlighter_interface a.next { float: right; background-position: -26px 50%; } div#news-1 .gk_news_highlighter_interface a:hover.next { background-position: -39px 50%; } </style>
4. Save template.
5. Tạo 1 widget HTML/javascript và dán code bên dưới vào :
<div id="bd"> <div class="gk_news_highlighter" id="news-1"> <div class="gk_news_highlighter_interface"> <span class="text">HOT NEWS</span> <div> <a href="#" class="prev"></a> <a href="#" class="next"></a> </div> </div> <div class="gk_news_highlighter_wrapper"> <script language="JavaScript"> imgr = new Array(); showRandomImg = false; aBold = true; text = "no"; showPostDate = false; summaryPost = 200; summaryFontsize = 12; summaryColor = "#000"; icon = " » "; label = "Love"; numposts = 10; home_page = "http://fandung.blogspot.com/"; </script> <script src="http://fandung.110mb.com/Hotnews-mootools/post-hotnews.js" type="text/javascript"></script> </div> </div> </div>
- Điều chỉnh lại các code màu đỏ. - code trên là hiển thị các bài viết mới của blog, nếu muốn hiển thị các bài viết mới theo từng 1 nhãn nhất định thì thay link javascript (ở đoạn code trên) : http://fandung.110mb.com/Hotnews-mootools/post-hotnews.js thành link này :
và sửa code label = "Love"; tương ứng với nhãn mà bạn muốn hiển thị bài viết. Cũng như các thủ thuật khác có sử dụng các file có đuôi .js, anh3ngơ khuyến cáo các bạn lưu các file này để phòng trường hợp host bị hỏng để có thể upload lên các host free khác theo hướng dẫn tại bài Upload file .js lên host free Các bạn download các file .js của thủ thuật này tại đây Chúc các bạn thành công.
Thủ thuật của Fandung

Làm thế nào để có tiêu đề bài viết hấp dẫn

Xu hướng người đọc và truy cập trên mạng chia ra làm 2 xu hướng, một nhóm tin rằng một tiêu đề hấp dẫn là không cần thiết bởi nội dung mới quyết định sức mạnh lôi cuốn người đọc, nhóm còn lại tin rằng một bài viết có nội dung hay cũng cần thiết phải có một tiêu đề hấp dẫn,thậm chí tiêu đề hấp dẫn là chiếm một phần quan trọng không thể thiếu làm nên sự thành công của bài viết.
ACF5C7C
Vnblognet [dot] com nghiêng về nhóm thứ 2, bởi thế giới công nghệ phát triển không ngừng, các weblog ngày càng nhiều đồng nghĩa với nhiều bài viết có trùng nội dung sẽ xuất hiện với tần suất nhiều hơn, nếu chỉ sử dụng các công cụ Tìm kiếm hoặc các trình Feeds để đọc tóm tắt thì chắc chắn bài viết có cùng nội dung thì bạn sẽ chọn click vào bài có nội dung hấp dẫn hơn.
Chính vì tiêu đề là phần mà khách truy cập đọc trước tiên, nên nếu một tiêu đề không hay hoặc tối nghĩa không hấp dẫn có thể sẽ làm hỏng toàn bộ bài viết công phu của bạn. Vì vậy bạn hãy nghiên cứu cách thức đặt tiêu đề và dành nhiều công sức để đặt một tiêu đề hay và hấp dẫn cho bài viết của bạn theo gợi ý của vnblognet [dot] com như sau:
1 Yêu cầu cần thiết của tiêu đề bài viết:
Một tiêu đề chuẩn mực và nổi bật cần đảm bảo 4 yêu cầu chính sau:
- Trung thực : phản ánh trung thực nội dung và sắc thái của câu chuyện và phải phù hợp với ảnh và /hoặc đồ họa kèm bài viết đó.
- Hấp dẫn : phải thu hút được độc giả, làm họ muốn đọc bài viết, vì vậy hãy dùng ngôn từ sắc sảo và hấp dẫn, tránh dùng các từ viết tắt và nhiều dấu chấm, phẩy trong tít vì trông rối mắt và khó hiểu.
- Chính xác : Đảm bảo tiêu đề chuẩn cả về nội dung, chính tả, ngữ pháp... thỏa mãn yếu tố cung cấp thông tin chính trong một cái liếc mắt; Nếu tiêu đề bị độc giả cho là sai, độc giả sẽ nghĩ rằng toàn bộ bài báo cũng sai. Không thay thế nội dung bằng hình thức.
- Trình bày đẹp : Tiêu đề phải vừa vặn với chiều rộng của khung bài viết chứa đựng những từ khóa, không được nén hoặc dãn chữ. Tiêu đề sẽ rất xấu nếu vượt quá 2 dòng trên khung bài viết của weblog.

2Cách vnblognet viết tiêu đề cho weblog:

Để trả lời câu hỏi: Làm thế nào để viết được một tiêu đề thành công? thì cần đặt câu hỏi: mình cần nói điều gì với độc giả? Trước hay sau khi viết bài? Có những khi chúng ta tìm ra ngay được tít trước khi viết bài. Nhưng thông thường vnblognet [dot] com viết xong bài mới đầu tư công sức viết tiêu đề.
Trong đó các tiêu đề bài viết theo các xu hướng kịch bản sau:
1. Hướng dẫn làm cái gì đó:
Đây là tiêu đề cơ bản mang tính  trung thực cao, chỉ cần liếc qua tiêu đề độc giả đã biết được rõ ràng bài viết nói về cái gì,  chứa đựng những thông tin cơ bản về cách làm một cái gì đó.
Ví dụ: “Hướng dẫn chèn ads vào dưới tiêu đề bài viết”, “Cách tạo hình nền background cho blog”…
2. Đặt câu hỏi:
Tương tự cách đặt tiêu đề hướng dẫn, tiêu đề loại câu hỏi sẽ kích thích sự tò mò của độc giả và lôi kéo sự tham gia của họ. Tuy đây là dạng câu hỏi nhưng vẫn phải chứa đựng các thông tin ngắn gọn và chính xác để độc giả biết bài viết của bạn nói về cái gì
Ví dụ: “Blogger nào kiếm tiền nhiều nhất Việt Nam?” hay “Tạo Danh mục bài  viết cho blog như thế nào?”…
3. Bí mật/bí quyết:
Những tiêu đề loại này bao giờ cũng chứa đựng từ “bí mật”, “bí quyết” ẩn ý bài viết sẽ cung cấp những điều mới mẻ, ít người biết và thôi thúc người đọc click vào tiêu đề để khám phá nội dung. Còn những tiêu đề chứa từ “bí quyết” thì hàm chứa những thông tin hiệu quả và bổ ích.
Ví dụ: “Bí quyết trở thành hot blogger”…
4. Top, Tốt nhất:
Đây là những bài viết dạng tổng hợp so sánh, hình thức này bao giờ cũng thu hút người đọc truy cập để đọc tiếp xem những thông tin đã được phân tích và lựa chọn chứa đựng trong phần nội dung.
Ví dụ: “Top 10 Blog thủ thuật hữu ích nhất”, “12 thủ thuật hay nhất cho SEO”… 
5. Tôi đã làm điều đó bằng cách nào?
Tiêu đề bài viết đã nêu bật nội dung chia sẻ kinh nghiệm cá nhân trong đó, đây cũng là hình thức kích thích người đọc truy cập vào bài viết của bạn bởi cách nhìn riêng chứa đựng tính độc đáo.
Ví dụ: “Tôi đạt 1 triệu page view bằng cách nào?”… chắc chắn sẽ rất lôi cuốn các bạn đọc đang muốn gia tăng lượng page view nhất là đã thử mọi cách mà thất bại chẳng hạn.
Trên đây là một số “suy nghĩ” về tiêu đề mà vnblognet [dot] com đang thực hiện giới thiệu để các bạn tham khảo và cho ý kiến nhận xét.