Tổng hợp cấu trúc dữ liệu Blogger – Blogger Template Cheat Sheet

Blogger template cheat sheet

data:widget

data:widgetOBJECT chứa các thông tin của một Widget đơn lẻ. Cấu trúc như sau:

"data": {
  "widget": {
    "instanceId": string,
    "sectionId": string,
    "quickEditUrl": string,
    "type": string,
    "version": number
  }
}

Cú khai báo và trích xuất:

<b:widget id='widgetID' title='' type='widgetType'>
  <b:includable id='main'>

    <data:widget.instanceId/>
    <data:widget.sectionId/>
    <data:widget.quickEditUrl/>
    <data:widget.type/>
    <data:widget.version/>

  </b:includable>
</b:widget>

data:widgets

data:widgets thuộc loại ARRAY[OBJECT], chứa dữ liệu về các widget cài đặt trong Blog của bạn. Cấu trúc dữ liệu này chỉ xuất hiện trong Blogger Layout version 3

"data": {
  "widgets": [{
    "title": string,
    "type": string,
    "sectionId": string,
    "id": string,
    "postId": number,
    "posts": [{
      "id": number,
      "title": string,
      "featuredImage": image,
      "showInlineAds": boolean
    }],
    "headerByline": {
      "regionName": string,
      "items": [{
        "name": string,
        "label": string
      }]
    },
    "footerBylines": [{
      "regionName": string,
      "items": [{
        "name": string,
        "label": string
      }]
    }],
    "allBylineItems": [{
      "name": string,
      "label": string
    }]
  }]
}

Để trích xuất dữ liệu từ các widget, các bạn có thể tham khảo cú pháp <b:loop> sau:

<b:loop values='data:widgets' var='w'>

  <!-- ALL VISIBLE WIDGETS -->
  <data:w.title/>
  <data:w.type/>
  <data:w.sectionId/>
  <data:w.id/>

  <!-- FEATUREDPOST ONLY -->
  <b:if cond='data:w.type == "FeaturedPost"'>
    <data:w.postId/>
  </b:if>

  <!-- BLOG AND POPULARPOSTS ONLY -->
  <b:if cond='data:w.type in ["Blog","PopularPosts"]'>
    <b:loop values='data:w.posts' var='p'>

      <data:p.id/>
      <data:p.title/>

      <!-- BLOG ONLY -->
      <b:if cond='data:w.type == "Blog"'>
        <data:p.featuredImage/>
        <data:p.showInlineAds/>
      </b:if>

    </b:loop>
  </b:if>

  <!-- BLOG ONLY -->
  <b:if cond='data:w.type == "Blog"'>

    <data:w.headerByline.regionName/>
    <b:loop values='data:w.items' var='it'>
      <data:it.name/>
      <data:it.label/>
    </b:loop>
    <b:loop values='data:w.footerBylines' var='footerByline'>
      <data:footerByline.regionName/>
      <b:loop values='data:footerByline.items' var='it'>
        <data:it.name/>
        <data:it.label/>
      </b:loop>
    </b:loop>
    <data:w.headerByline.regionName/>
    <b:loop values='data:w.allBylineItems' var='it'>
      <data:it.name/>
      <data:it.label/>
    </b:loop>

  </b:if>

</b:loop>

Ngoài ra, để thuận tiện trích xuất dữ liệu từ các widgets, chúng ta có thể áp dụng bộ lọc widget theo định dạng như sau:

<b:loop values='data:widgets.WIDGET_TYPE' var='widget'>

</b:loop>

Hãy thay WIDGET_TYPE bằng loại wiget bạn muốn lọc là được. Nếu có nhiều widget cùng loại, bạn cũng có thể áp dụng thuộc tính first hoặc last.

<b:loop values='data:widgets.Blog' var='widget'>

</b:loop>

<!-- AN ITEM FROM THE FIRST SET -->
<data:widgets.first.ITEM_NAME/>

<!-- AN ITEM FROM THE LAST SET -->
<data:widgets.last.ITEM_NAME/>

<!-- THE FIRST GADGET OF ITS KIND -->
<data:widgets.WIDGET_TYPE.first.ITEM_NAME/>

<!-- THE LATEST GADGET OF THIS TYPE -->
<data:widgets.WIDGET_TYPE.last.ITEM_NAME/>