Hiển thị tên Nhãn trong bài viết theo vòng lặp

Vấn đề này đôi khi bạn thấy nó thật bình thường bởi vì bạn làm đúng nhưng đôi khi bạn làm không đúng cho dù cố gắng đến mấy cũng không hiển thị được tên Nhãn trong bài viết. Trông có vẻ tầm thường nhưng thật ra nó lại hết sức phức tạp không như bạn tưởng. Một điều lưu ý khi bạn nâng cấp widget Blog1 lên v2 có một số điều kiện của v1 không sử dụng được cho v2 nhưng ngược lại thì có. Cho nên bạn thật lưu ý phần này.


Trong bài này mình sẽ đưa ra quy tắc chung hiển thị tên Nhãn trong bài viết theo vòng lặp áp dụng cho tất cả phiên bản Blogger (1,2,3) và được áp dụng cho widget Blog1 (Bài đăng trên Blog) v1 và v2.

Bây giờ mình sẽ nêu ra các kiểu hiển thị kèm với ví dụ minh họa cho các bạn thấy rõ hơn

Điều quan trọng không thể thiếu đó là tạo vòng lặp Nhãn bài viết trước rồi hãy làm gì thì làm, vòng lặp có dạng sau:

<b:loop values='data:post.labels' var='label'>
  // Điều kiện hiển thị tên Nhãn bài viết.
</b:loop>

Sau đây là các ví dụ minh họa: Lưu ý tên Nhãn được sắp xếp từ trái qua phải theo bảng chữ cái A,B,C..

1. Lọc lấy tất cả Nhãn

<b:loop values='data:post.labels' var='label'>
  <a expr:href='data:label.name' expr:title='data:label.name'>
    <data:label.name/>
  </a>
</b:loop>

Trong bài viết có Nhãn nào được show ra hết

2. Lọc lấy Nhãn cuối

<b:loop values='data:post.labels.length - 1' var='label'>
  <a expr:href='data:post.labels[label].url' expr:title='data:post.labels[label].name'>
    <b:eval expr='data:post.labels[label].name'/>
  </a>
</b:loop>

Trong đó data:post.labels.length được hiển thị bằng số Nhãn có trong bài viết, như vậy không cần biết bài viết có mấy Nhãn nhưng chỉ hiển thị Nhãn cuối cùng.

3. Lọc lấy Nhãn đầu:

<b:loop index='item' values='data:post.labels' var='label'>
  <b:if cond='data:item lte 0'>
    <a expr:href='data:post.labels[0].url' expr:title='data:post.labels[0].name'>
      <b:eval expr='data:post.labels[0].name'/>
    </a>
  </b:if>
</b:loop>

Trong đó item là một giá trị tự đặt sau đó đặt điều kiện cho giá trị này bé hơn hoặc bằng 0 (sử dụng phép toán so sánh),  như vậy khi sử dụng điều kiện này không cần biết bài viết có mấy Nhãn nhưng chỉ hiển thị Nhãn đầu tiên.

4. Đảo ngược các Nhãn

Ví dụ bình thường tên các Nhãn được sắp xếp theo thứ tự Nhãn A, Nhãn B, Nhãn C, Nhãn D..., tuy nhiên chúng ta có thể hiển thị ngược thành Nhãn D, Nhãn C, Nhãn B, Nhãn A..., có nghĩa hiển thị từ Nhãn cuối tới Nhãn đầu tiên, chúng ta có 2 cách

<b:loop values='data:post.labels.length - 1 to 0' var='label'>
  <a expr:href='data:post.labels[label].url' expr:title='data:post.labels[label].name'>
    <b:eval expr='data:post.labels[label].name'/>
  </a>
</b:loop>

Hoặc có thể sử dụng

<b:loop reverse='true' values='data:post.labels' var='label'>
  <a expr:href='data:label.url' expr:title='data:label.name'>
    <data:label.name/>
  </a>
</b:loop>

Với reverse='true' là giá trị mặc định nếu bằng true đảo ngược Nhãn, bằng false theo thứ tự từ trái qua và mặc định không ghi.

5. Hiển thị tên một Nhãn của bài viết đầu tiên cho tất cả các bài viết tiếp cho dù các bài viết tiếp theo không có trong Nhãn đó và không sử dụng vòng lặp.

<a expr:href='data:posts[1].labels[0].url' expr:title='data:posts[1].labels[0].name'>
  <b:eval expr='data:posts[1].labels[0].name' />
</a>

Còn tiếp...
Bài đăng mới hơn Bài đăng cũ hơn
Bài viết này có hữu ích không?