We have a paginated category page. We are not clear how to go about the schemas in pagination, especially for the 2nd and subsequent pages.
Below is what we currently defined. The 1st page has the CollectionPage
schema:
{
"@context":"http://schema.org",
"@type":"CollectionPage",
"@id":"https://www.example.com/cat?pg=1",
"url":"https://www.example.com/cat?pg=1",
"breadcrumb":{...},
}
And, the 1st page's ItemList
schema:
{
"@context":"https://schema.org",
"@type":"ItemList",
"@id":"https://www.example.com/cat?pg=1#cat-page", // 1st pg URL, with hash URI
"url":"https://www.example.com/cat?pg=1", // 1st pg URL
"name":"Running Shoes",
"numberOfItems":"490",
"mainEntityOfPage":"https://www.example.com/cat?pg=1", // 1st pg URL
"itemListElement":[
{
"@type":"ListItem",
"position":"1",
"url":"..."
},{
...
},{
"@type":"ListItem",
"position":"50", // 50 items per page
"url":"..."
}
]
}
On 2nd and subsequent pages, we have only an ItemList
, as below:
{
"@context":"https://schema.org",
"@type":"ItemList",
"@id":"https://www.example.com/cat?pg=1#cat-page", // 1st pg URL, with hash URI
"url":"https://www.example.com/cat?pg=1", // 1st pg URL
"name":"Running Shoes",
"numberOfItems":"490",
"mainEntityOfPage":"https://www.example.com/cat?pg=1", // 1st pg URL (CollectionPage there)
"itemListElement":[
{
"@type":"ListItem",
"position":"51",
"url":"..."
},{
...
},{
"@type":"ListItem",
"position":"100", // 50 items per page
"url":"..."
}
]
}
NOTE that the 2nd page's ItemList
has it's @id
, url
and mainEntityOfPage
all use the URL of the 1st page, and 2nd page's URL is no where used. It's only the itemListElement
array that changed compared to it's 1st page declaration.
Google says (point 1, last figure) that for HTML data, it collates paginated listing and builds a single page digest. For schema, ItemList's numberOfItems
is defined to hold the total count of items across pages. So, it expects consumers to concatenate splitted instances of ItemList
. Though HTML and Schema are different entities, I assume consumers like Google and others will handle paginated schema ItemList.
However, what is not clear is how to declare the @id
, url
and mainEntityOfPage
for the paginated ItemList
. I set them up to point to the first instance of it on the 1st page.
The query is: is this the right way to do the schemas for paginated category pages? Or, there's something we are missing or possibly a better method?