Không hiển thị label cuối hoặc không thêm ký tự đằng sau label cuối
Khi xây dựng bố cục bài viết bạn cần nắm những nguyên tắc cơ bản về điều kiện hiển thị label (Nhãn) trong vòng lặp của một bài viết. Từ những Nhãn bạn đã thêm trong bài viết, bạn có thể tùy chọn lọc hiển thị những Nhãn này trong bài viết.
Mình đã viết một bài rất chi tiết về Điều kiện và các tùy chọn hiển thị Label bài viết trong vòng lặp, các bạn đọc tham khảo để biết rõ hơn. Bài này mình chỉ mở rộng với điều kiện loại bỏ không hiển thị Nhãn cuối hoặc không thêm ký tự đằng sau Nhãn cuối.
Để làm được, bạn cần thêm một quy tắc lọc với vòng lặp <b:with> nằm trên vòng lặp <b:loop> của label và từ vòng lặp <b:with> này bạn mới đặt được điều kiện <b:if> không hiển thị label cuối hoặc không thêm ký tự đằng sau label cuối.
Lọc không hiển thị label cuối
<b:with value='data:post.labels' var='filter'>
<b:loop index='i' values='data:filter' var='label'>
<b:if cond='data:filter.size neq data:i + 1'>
<data:label.name/>
<!-- Hiển thị tất cả tên nhãn trong bài viết nhưng không hiển thị tên nhãn cuối -->
</b:if>
</b:loop>
</b:with>
Không thêm ký tự đằng sau label cuối
Khi soạn thảo hay chỉnh sửa bài đăng, nếu bạn để ý trong mục Nhãn có các dấu ", " giữa các nhãn và nó cũng xuất hiện trong Nhãn cuối.
Do vậy, để loại bỏ dấu ", " của Nhãn cuối bạn sẽ thêm quy tắc lọc như sau:
<b:with value='data:post.labels' var='filter'>
<b:loop index='i' values='data:filter' var='label'>
<data:label.name/>
<b:if cond='data:filter.size neq data:i + 1'>, </b:if>
<!-- Thêm dấu ", " đằng sau tất cả các nhãn nhưng không thêm dấu ", " đằng sau nhãn cuối -->
</b:loop>
</b:with>
Một ví dụ khi thêm dữ liệu có cấu trúc breadcrumb trong bài viết bằng mã JSON-LD
<b:if cond='data:view.isPost'>
<script type='application/ld+json'>
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{<b:with value='data:post.labels' var='filter'><b:loop index='i' values='data:filter' var='label'>
"@type": "ListItem",
"position": <b:eval expr='data:i + 1'/>,
"name": "<data:label.name/>",
"item": "<data:label.url/>"
<b:if cond='data:filter.size neq data:i + 1'>},{</b:if></b:loop></b:with>}]
}
</script>
</b:if>
Điều kiện thêm ký tự "},{" cho mỗi ListItem không phải là ListItem cuối.