Bài viết này Vietrick sẽ tổng hợp lại các loại cơ sở dữ liệu và đối tượng được phép sử dụng trong Blogger khi thiết kế template. Trước đó, ở bài viết về các thẻ điều kiện Blogger, mình chỉ đề cập sơ lược về kiến trúc dữ liệu, nay viết hẳn một bài chi tiết, làm cheat sheet để dùng khi thiết kế.
Bài viết được tham khảo và tổng hợp từ nhiều nguồn trên internet, nếu có thiếu sót, mong các bạn góp ý bên dưới Comment để mình hiệu chỉnh lại.
Phần đầu tiên chúng ta sẽ đề cập đến dữ liệu ở object Blog: data:blog.
data:blog
Các loại dữ liệu và kiến trúc chứa trong object data:blog toàn bộ đều mang thuộc tính Global, có thể sử dụng tại mọi nơi trong template, được liệt kê bên dưới kèm mô tả giản lược:
data:blog
data:blog là dữ liệu loại Object
, chứa hầu hết dữ liệu chính của Blogger.
data:blog.adsenseClientId
data:blog.adsenseClientId là dữ liệu loại STRING
, chứa Adsense ID.
data:blog.adsenseHasAds
data:blog.adsenseHasAds là dữ liệu loại Boolean
, kiểm tra tình trạng Adsense trên Blogger.
data:blog.adsenseHostId
data:blog.adsenseHostId là dữ liệu loại STRING
, trả về URL Adsense.
"data": {
"blog": {
"adsenseHostId": string,
{
"size": number,
"length": number,
"escaped": string,
"jsEscaped": string,
"jsonEscaped": string,
"cssEscaped": string
}
}
}
data:blog.adultContent
data:blog.adultContent là dữ liệu loại Boolean
, trả về kết quả setting “nội dung người lớn”.
data:blog.analyticsAccountNumber
data:blog.analyticsAccountNumber là dữ liệu loại STRING
, trả về ID Google Analytics.
data:blog.bloggerUrl
data:blog.bloggerUrl là dữ liệu loại STRING
, trả về URL của Blogger tại https://www.blogger.com
"data": {
"blog": {
"bloggerUrl": string,
{
"size": number,
"length": number,
"escaped": string,
"jsEscaped": string,
"jsonEscaped": string,
"cssEscaped": string
}
}
}
data:blog.blogId
data:blog.blogId thuộc loại STRING
, trả về giá trị Blog ID.
data:blog.blogspotFaviconUrl
data:blog.blogspotFaviconUrl thuộc loại STRING
, trả về URL favicon.
"data": {
"blog": {
"blogspotFaviconUrl": URL,
{
"canonical": URL,
"http": URL,
"https": URL,
"size": number,
"length": number,
"escaped": string,
"jsEscaped": string,
"jsonEscaped": string,
"cssEscaped": string
}
}
}
Một số cách sử dụng với các thuộc tính như sau:
data:blog.dynamicViewsCommentsSrc
data:blog.dynamicViewsCommentsSrc thuộc loại STRING
, trả về URL chứa cript comment phân cấp.
//www.blogblog.com/dynamicviews/ID_VERSION/js/comments.js
data:blog.dynamicViewsScriptSrc
data:blog.dynamicViewsScriptSrc thuộc loại STRING
, trả về URL script thuộc blogblog.com
. Ví dụ:
Kết quả:
<script src='//www.blogblog.com/dynamicviews/ID_VERSION/js/thirdparty/jquery.js' type='text/javascript'/>
data:blog.enabledCommentProfileImages
data:blog.enabledCommentProfileImages thuộc loại BOOLEAN
, kiểm tra Users comment Profile Image.
data:blog.encoding
data:blog.encoding thuộc loại STRING
, trả về mã Unicode Encode của Blog. Ví dụ:
Kết quả:
data:blog.feedLinks
data:blog.feedLinks thuộc loại STRING
, dùng để tạo feed link trong của Blogger với 4 loại thẻ <link>
. Thường được sử dụng tại <head>
.
<data:blog.feedLinks/>
data:blog.hasCustomDomain
data:blog.hasCustomDomain thuộc loại BOOLEAN
, kiểm tra blog có dùng tên miễn tùy chỉnh hay không.
data:blog.hasCustomJumpLinkMessage
data:blog.hasCustomJumpLinkMessage thuộc loại BOOLEAN
, kiểm tra nội dung của dòng "Read more" có được tùy chỉnh lại hay không.
data:blog.homepageUrl
data:blog.homepageUrl thuộc loại URL
, trả về URL homepage.
data:blog.ieCssRetrofitLinks
data:blog.ieCssRetrofitLinks thuộc loại STRING
, chứa nội dung CSS (của Offical theme) tùy biến cho các phiên bản IE đời cổ. Thẻ này thường được chèn trong nội dung thẻ <head>
. Ví dụ:
data:blog.isMobileRequest
data:blog.isMobileRequest thuộc loại BOOLEAN
, kiểm tra thiết bị truy cập có phải là di động hay không.
data:blog.isPrivate
data:blog.isPrivate thuộc loại BOOLEAN
, kiểm tra trạng thái index của Blog với Search Engine.
data:blog.isPrivateBlog
data:blog.isPrivateBlog thuộc loại BOOLEAN
, kiểm tra tính mở của blog. Trả về true
nếu giới hạn số người đọc, và false
nếu cho phép mọi người xem blog.
data:blog.jumpLinkMessage
data:blog.jumpLinkMessage thuộc loại STRING
, trả về nội dung của JumpLink.
data:blog.languageDirection
data:blog.languageDirection thuộc loại STRING
, trả về chiều đọc của ngôn ngữ, mặc định là từ trái sang phải (ltr).
data:blog.locale
data:blog.locale thuộc loại LOCALE
, là object chứa thông tin mô tẩ về ngôn ngữ của Blog. Giá trị này được thiết lập trong mục Cài đặt > Ngôn ngữ trên Blog của Blogger.
"data": {
"blog": {
"locale": locale,
{
"name": string,
"language": string,
"country": string,
"variant": string,
"script": string,
"languageDirection": string,
"languageAlignment": string,
"size": number,
"length": number,
"escaped": string,
"jsEscaped": string,
"jsonEscaped": string,
"cssEscaped": string
}
}
}
Ngoài ra, giá trị locale còn có thể được thiếp lập thông qua tham số url: hl
.
https://BLOG_URL.blogspot.com?hl=values
Giá trị hợp lệ của tham số hl
có thể tham khảo một số ví dụ ở bảng sau:
Language | Value |
---|---|
French (France) | fr |
French (Canada) | fr-CA |
English (United States) | en |
English (United Kingdom) | en-UK |
Spanish (Latin America) | es-419 |
Spanish (Spain) | es |
Portuguese (Brazil) | pt-BR |
Portuguese (Portugal) | pt-PT |
Indonesian | id |
Vietnamese | vi |
data:blog.metaDescription
data:blog.metaDescription thuộc loại STRING
, chưa thẻ meta mô tả cho Blog, bài viết và trang. Thẻ này thường được dùng trong thẻ <head>
. Giá trị của thẻ metaDescription sẽ thay đổi tùy theo nội dung của trang hiển thị như bảng sau:
Description | Article | Page | Index | Archive | Error |
---|---|---|---|---|---|
Blog | ✔ | ✔ | ✔ | ||
Article | ✔ | ||||
Page | ✔ |
Ngoài ra chúng ta còn có thể sử dụng hàm snippet để giới hạn số lượng ký tự của thẻ metaDescription như sau:
data:blog.mobileClass
data:blog.mobileClass thuộc loại STRING
, thẻ này chưa class name theo các biến thể của các theme mặc định trong Blogger. Tham khảo bảng sau để biết giá trị hợp lệ của thẻ này:
Themes | Biến thể | Web version value | Mobile version value |
---|---|---|---|
Simple | Blade | variant-pale | mobile variant-pale |
Bold | variant-bold | mobile variant-bold | |
Dark | variant-dark | mobile variant-dark | |
Deep | variant-deep | mobile variant-deep | |
Literate | variant-literate | mobile variant-literate | |
Wide | variant-wide | mobile variant-wide | |
Simply Simple | variant-simplysimple | mobile variant-simplysimple | |
Picture Window | Open | variant-open | mobile variant-open |
Shade | variant-shade | mobile variant-shade | |
Screen | variant-screen | mobile variant-screen | |
Awesome Inc. | Dark | variant-dark | mobile variant-dark |
Light | variant-light | mobile variant-light | |
Groovy | variant-groovy | mobile variant-groovy | |
Renewable | variant-renewable | mobile variant-renewable | |
Artsy | variant-artsy | mobile variant-artsy | |
Icy | variant-icy | mobile variant-icy | |
Watermark | Birds | variant-birds | mobile variant-birds |
Navigator | variant-navigator | mobile variant-navigator | |
Flower | variant-flower | mobile variant-flower | |
Bubblegum | variant-bubblegum | mobile variant-bubblegum | |
Ethereal | Hummingbirds 2 | variant-hummingBirds2 | mobile variant-hummingBirds2 |
Blossoms 1 Blue | variant-blossoms1Blue | mobile variant-blossoms1Blue | |
Leaves 1 | variant-leaves1 | mobile variant-leaves1 | |
Travel | Studio | variant-studio | mobile variant-studio |
Flight | variant-flight | mobile variant-flight | |
Beach | variant-beach | mobile variant-beach | |
Road | variant-road | mobile variant-road | |
Dynamic | Classic | variant-classic | variant-classic |
Flipcard | variant-flipcard | variant-flipcard | |
Snapshot | variant-snapshot | variant-snapshot | |
Timeslide | variant-timeslide | variant-timeslide | |
Magazine | variant-magazine | variant-magazine | |
Mosaic | variant-mosaic | variant-mosaic | |
Sidebar | variant-sidebar | variant-sidebar | |
Other themes | mobile |
data:blog.pageName
data:blog.pageName thuộc loại STRING
, trả về giá trị Page name. Page sẽ mang giá trị tùy thuộc vào ngữ cảnh bên dưới:
Page type | Name |
---|---|
Home Index | Empty |
ReverseTimeline Index | Empty |
IndexLabels | {Wording} |
Search Index | Search results for {QUERY} |
Archives | {DATE or PERIOD} |
Article (item) | {TITLE ARTICLE} |
Untitled article (item) | Empty |
Autonomous page | {TITLE FREE PAGE} |
Untitled Standalone Pages | Empty |
Page 404 | Empty |
data:blog.pageTitle
data:blog.pageTitle thuộc lại STRING
, trả về giá trị Title của page view theo ngữ cảnh bên dưới:
Page type | Title composition |
---|---|
Home > Index | {BLOG NAME} |
Reverse > Timeline Index | {BLOG NAME} |
Index > Labels | {BLOG NAME}: {LABELED} |
Search Index > | {BLOG NAME}: Search results for {QUERY} |
Archives | {BLOG NAME:} {DATE or PERIOD} |
Article (item) | {BLOG NAME:} {TITLE ARTICLE} |
Untitled article (item) | {BLOG NAME} |
Autonomous page | {BLOG NAME}: {TITLE STANDALONE PAGE} |
Untitled Standalone Pages | {BLOG NAME} |
Page 404 | {BLOG NAME} |
data:blog.pageType
data:blog.pageType thuộc loại STRING
, trả về giá tị page type của view hiện tại. Giá trị của pageType có thể tham khảo trong bảng sau:
Page type | Value | Mô tả |
---|---|---|
Research | index | Danh sách các items hiển thị theo kết quả tìm kiếm / trang chủ. |
Archives | archive | Danh sách các item hiển thị theo thời gian: tuần / tháng / năm. |
Article | item | Bài viết. |
Autonomous page | static_page | Trang tĩnh. |
Page 404 | error_page | Page not found. Trang thông báo lỗi 404. |
Bên dưới là một ví dụ cách sử dụng dữ liệu này với thẻ <b:switch>
:
data:blog.postImageThumbnailUrl
data:blog.postImageThumbnailUrl thuộc loại STRING
, chứa URL ảnh đại diện của bài viết / Trang. Kích thước ảnh mặc định là 72x72 px (s72-c). Ví dụ:
Kết quả
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhij0-x3LIeXPo86N-2tfKkLd60QijiwGUAxL4FqtjcsVOyVzIJP1X4D9fkKHTvpklrso31m-JIC2eFIJ4wK05Xm1-v_Kgi_aELwFOVpvXkGFkYNvpGONhV_KPjOFKA8ncOKRzOnwalBro/s72-c/3463970.jpg" />
data:blog.postImageUrl
data:blog.postImageUrl thuộc loại STRING
, chứa url ảnh đại diện của bài viết / trang. Khác với data:blog.postImageThumbnailUrl, thẻ này chứ url hình ảnh wor kích thước gốc. Ví dụ:
Kết quả trả về url với kích thước s1600:
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhij0-x3LIeXPo86N-2tfKkLd60QijiwGUAxL4FqtjcsVOyVzIJP1X4D9fkKHTvpklrso31m-JIC2eFIJ4wK05Xm1-v_Kgi_aELwFOVpvXkGFkYNvpGONhV_KPjOFKA8ncOKRzOnwalBro/s1600/3463970.jpg" />
data:blog.searchUrl
data:blog.searchUrl thuộc loại STRING
, chứa search URL của Blog.
https://BLOG_NAME.blogspot.com/search
data:blog.sharing.platforms
data:blog.sharing.platforms thuộc loại ARRAY[OBJECT]
, chứa dữ liệu để tạo nút sharing.
"data": {
"blog": {
"sharing": {
"platforms": [ array ],
{
"size": number,
"length": number,
"empty": boolean,
"notEmpty": boolean,
"any": boolean,
"first": Child type of the array,
"last": Child type of the array
}
}
}
}
Trong array platforms
có thể chứa 6 tập dữ liệu:
- Link
- BlogThis!
Mỗi tập dữ liệu trên có cấu trúc như sau:
[{
"name": string,
"key": string,
"shareMessage": string,
"target": string
}]
Để trích xuất các dữ liệu này, chúng ta có thể sử dụng thẻ <b:loop>
Hoặc sử dụng index
để lấy giá trị:
Ngoài ra, chúng ta còn có thể sử dụng first
hoặc last
để truy xuất dữ liệu đầu hoặc cuối mảng.
data:blog.title
data:blog.title thuộc loại STRING
, chứa Title của Blog.
data:blog.url
data:blog.url thuộc loại STRING
, chứa URL của trang đang xem. Cấu trúc dữ liệu và cách dùng như sau:
data:blog.view
data:blog.view thuộc loại STRING
, chứa tên của view hiện tại. Dữ liệu này nhận giá trị từ tham số URL ?view={view_name}
. Chi tiết liệt kê trong bảng sau:
Value | Typical url |
---|---|
classic | https://BLOG_NAMEblogspot.com/?view=classic |
flipcard | https://BLOG_NAME.blogspot.com/?view=flipcard |
magazine | https://BLOG_NAME.blogspot.com/?view=magazine |
mosaic | https://BLOG_NAME.blogspot.com/?view=mosaic |
sidebar | https://BLOG_NAME.blogspot.com/?view=sidebar |
snapshot | https://BLOG_NAME.blogspot.com/?view=snapshot |
timeslide | https://BLOG_NAME.blogspot.com/?view=timeslide |
Chúng ta có thể vận dụng tham số này để tạo tùy biến nội dung cho template:
Để khớp điều kiện ở trên thì cần truy cập đường dẫn:
https://BLOG_NAME.blogspot.com/?view=dark
Ngoài ra trong phần cấu trúc dữ liệu của data:blog còn một số dữ liệu khác, tuy nhiên những dữ liệu này rất ít được sử dụng trong thực tế nên mình không đề cập trong bài này.
data:view
Tiếp đến phần này sẽ tổng hợp các đối tượng dữ liệu trong cấu trúc data:view.
data:view
data:view thuộc loại OBJECT
, chứa dữ liệu của trang đang xem hiện tại. Cấu trúc như sau:
"data": {
"view": {
"postId" : number,
"pageId" : number,
"type" : string,
"featuredImage" : image,
"title" : string,
"description" : string,
"url" : URL,
"isPost" : boolean,
"isPage" : boolean,
"isHomepage" : boolean,
"isSearch" : boolean,
"isArchive" : boolean,
"isError" : boolean,
"isLabelSearch" : boolean,
"isSingleItem" : boolean,
"isMultipleItems" : boolean,
"isMobile" : boolean,
"isPreview" : boolean,
"isLayoutMode" : boolean,
"search" : {
"resultsMessageHtml" : string,
"resultsMessage" : string,
"query" : string,
"label" : string
},
"archive" : {
"rangeMessage" : string,
"day" : number,
"month" : number,
"year" : number
}
}
}
data:view.archive
data:view.archive thuộc loại OBJECT
, chứa dữ liệu liên quan đến page Archive.
"data": {
"view": {
"archive": {
"rangeMessage" : string,
"day" : number,
"month" : number,
"year" : number
}
}
}
data:view.description
data:view.description thuộc loại STRING
, chứa dữ liệu về phần mô tả của Blog hoặc trang đang xem.
Summary Description | Article | Page | Home | Research | Archive | Error |
---|---|---|---|---|---|---|
Blog description | ✔ | ✔ | ✔ | ✔ | ||
Article Summary | ✔ | |||||
Summary of the standalone page | ✔ |
data:view.featuredImage
data:view.featuredImage thuộc loại IMAGE
, chưa thông tin về url ảnh đại diện của trang đang xem. Cấu trúc dữ liệu như sau:
"data": {
"view": {
"featuredImage": image,
{
"isResizable": boolean,
"isYoutube": boolean,
"youtubeMaxResDefaultUrl": image,
"width": number,
"height": number,
"size": number,
"length": number,
"escaped": string,
"jsEscaped": string,
"jsonEscaped": string,
"cssEscaped": string
}
}
}
Trong đó, nếu giá trị của isResizable
trả về là true
thì chúng ta có thể sử dụng hàm resizeImage
của Picasa để resize ảnh theo kích thước mong muốn. Trong ví dụ bên dưới, ảnh sẽ được resize về 200x200 px.
Ngoài ra thì blogger mắc định cũng hỗ trợ lấy ảnh đại diện từ video Youtube, thuộc tính isYoutube
trả về true
khi sử dụng ảnh đại diện từ video Youtube.
Data:view.is
Ở phần này sẽ là danh sách các thuộc tính BOOLEAN
, dùng để xác định loại trang đang xem:
- data:view.isArchive: true nếu đang xem trang Archive
- data:view.isError: true nếu đang xem trang Error
- data:view.isHomepage: true nếu đang xem trang Home
- data:view.isLabelSearch: true nếu đang xem trang Label
- data:view.isLayoutMode: true nếu đang xem ở chế độ Layout trong setting của Blogger
- data:view.isMobile: true nếu đang xem trang ở chế độ di động
- data:view.isMultipleItems: true nếu đang xem trang nhiều items (Homepage / Search / Label)
- data:view.isSingleItem: true nếu đang xem trang đơn (Post / Page)
- data:view.isPage: true nếu đang xem trang tĩnh (Page)
- data:view.isPost: true nếu đang xem trang bài viết (Post)
- data:view.isPreview: true nếu đang xem trang ở chế độ xem trước
- data:view.isSearch: true nếu đang xem trang kết quả tìm kiếm
data:view.pageId
data:view.pageId thuộc loại NUMBER
, trả về Page Id của trang tĩnh.
data:view.postId
data:view.postId thuộc loại NUMBER
, trả về Post ID của bài viết.
data:view.search
data:view.search thuộc loại OBJECT
, chứa dữ liệu về kết quả tìm kiếm.
"data": {
"view": {
"search": {
"resultsMessageHtml" : string,
"resultsMessage" : string,
"query" : string,
"label" : string
}
}
}
data:view.title
data:view.title thuộc loại STRING
, trả về tiêu đề của trang đang xem. Nội dung của tiêu đề tùy thuộc vào loại trang như sau:
Title | Article | Page | Home | Research | Archive | Error |
---|---|---|---|---|---|---|
Blog title | ✔ | ✔ | ✔ | ✔ | ||
Article title | ✔ | |||||
Title of the standalone page | ✔ |
data:view.url
data:view.url thuộc loại URL
, trả về đường dẫn url của trang đang xem.
data:skin
Section này Blogger dùng để chứa dữ liệu liên quan đến <b:skin>
đang sử dụng.
"data": {
"skin": {
"override": string,
"vars": {object}
}
}
data:skin.override
data:skin.override thuộc loại STRING
, chứa liên kết đến tệp CSS của Theme, được khai báo trong Theme Designer.
data:skin.vars
data:skin.vars thuộc loại OBJECT
, chứa các biến liên quan đến template.
Đối với các template tùy chỉnh, chúng ta có thể dễ dàng khai báo thêm các biến trong thẻ <b:skin>
với cú pháp sau:
<b:skin version='1.0.0'><![CDATA[
/*
<!-- Variable definitions -->
<Variable name="keycolor" description="Main Color" type="color" default="#007AFF" value="#007AFF"/>
<Group description="Theme Options">
<Variable name="sidebar" description="Left Sidebar" type="length" default="0px" min="0px" max="1px" value="0px"/>
<Variable name="fixedmenu" description="Fixed Menu" type="length" default="1px" min="0px" max="1px" value="0px"/>
</Group>
<!-- Additional Variables -->
<Variable name="body.background.color" description="Comments Background" hideEditor="true" type="color" default="transparent" value="transparent"/>
*/
</b:template-skin>
Để sử dụng biến keycolor
đã khai báo trong phần CSS, hãy dùng cú pháp sau:
Ngoài việc sử dụng trong CSS ra thì chúng ta cũng có thể trích xuất các biến này để sử dụng trong meta header.
data:template
Phần này chứ dữ liệu liên quan đến template mặc định của Blogger.
"data": {
"template": {
"name": string,
"localizedName": string,
"variant": string,
"variantId": string,
"isResponsive": boolean,
"isCustom": boolean,
"isAlternateRendering": boolean
}
}
data:messages
data:messages sẽ chứa dữ liệu liên quan đến keyword đã được dịch theo ngôn ngữ địa phương của Blogger. Đây là nỗ lực của Blogger trong việc hỗ trợ các template đa ngôn ngữ.
"data": {
"messages": {
"adsGoHere": message,
"archive": message,
"at": message,
"authorSaid": message,
"authorSaidWithLink": message,
"blogArchive": message,
"blogAuthors": message,
"by": message,
"byAuthor": message,
"byAuthorLink": message,
"comments": message,
"configurationRequired": message,
"copy": message,
"copyToClipboard ": message,
"deleteComment": message,
"dynamicViewsNotAvailable": message,
"edit": message,
"emailAddress": message,
"emailPost": message,
"euCookieNotice2018": message,
"euCookieResponsibility2018": message,
"featured": message,
"getEmailNotifications": message,
"gotIt": message,
"hidden": message,
"home": message,
"image": message,
"joinTheConversation": message,
"keepReading": message,
"labels": message,
"latestPosts": message,
"learnMore": message,
"linkCopiedToClipboard": message,
"loadMorePosts": message,
"loading": message,
"manageComments": message,
"moreEllipsis": message,
"morePosts": message,
"myBlogList": message,
"myFavoriteSites": message,
"myPhoto": message,
"newer": message,
"newerPosts": message,
"newest": message,
"noResultsFound": message,
"noTitle": message,
"numberOfComments": message,
"ok": message,
"older": message,
"olderPosts": message,
"oldest": message,
"onlyTeamMembersCanComment": message,
"on": message,
"photo": message,
"popularPosts": message,
"popularPostsFromThisBlog": message,
"postAComment": message,
"postLink": message,
"postedBy": message,
"postedByAuthor": message,
"postedByAuthorLink": message,
"posts": message,
"poweredByBlogger": message,
"poweredByBloggerLink": message,
"readMore": message,
"recentPosts": message,
"reportAbuse": message,
"search": message,
"searchBlog": message,
"searchThisBlog": message,
"share": message,
"shareOtherApps": message,
"shareToOtherApps": message,
"showAll": message,
"showLess": message,
"showMore": message,
"skipToMainContent": message,
"someOfMyFavoriteSites": message,
"subscribe": message,
"subscribeTo": message,
"subscribeToThisBlog": message,
"templateImagesBy": message,
"templateImagesByLink": message,
"theresNothingHere": message,
"title": message,
"viewAll": message,
"viewMyCompleteProfile": message,
"visible": message,
"visitProfile": message,
"visitSite": message,
"widget": message,
"widgetNotAvailableInPreview": message,
"widgetNotAvailableOnHttps": message,
"youMayLikeThesePosts": message
}
}
Các loại dữ liệu này có thể được trích xuất thông quả thẻ <b:mesage>
data:widget
data:widget là OBJECT
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:
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:
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:
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
.
Credit : viettrick