- Affected version
- 2.3.7
Files:
Issue 1 —
GSC: "Either text, image, or video must be specified."
Posts whose body is only smilies, only an attachment image, or only an embed render with an empty
Fix: When the rendered message has no plain-text content, emit a
Issue 2 — JSON-LD on page 2+ omits
GSC: "Either text, image, or video must be specified."
In
https://www.hiveworkshop.com/threads/mortar-team-and-derivatives.295866/ vs. https://www.hiveworkshop.com/threads/mortar-team-and-derivatives.295866/page-2.
Fix: Drop the
Issue 3 —
GSC: "Missing field 'author'."
Each comment emits
missing
Fix: Replace
On any active forum, most thread URLs trip at least one issue: Issue 2 affects every multi-page thread; Issue 3 affects every thread page; Issue 1 affects all image/smilie-only replies. Combined, this disqualifies a large share of thread pages from rich results.
XF\ThreadType\AbstractHandler, message_macrosIssue 1 — itemprop="text" empty for image/smilie/embed-only posts
GSC: "Either text, image, or video must be specified."
Posts whose body is only smilies, only an attachment image, or only an embed render with an empty
<div itemprop="text"> and no itemprop="image" on the inline images. Live example: post #10 of https://www.hiveworkshop.com/threads/darkhan-drathir.356815/ (three :100: smilies, no text node). Fix: When the rendered message has no plain-text content, emit a
<meta itemprop="image" content="..."> (first attachment) or <meta itemprop="text" content=":100: :100: :100:"> (smilie alt-text fallback) inside the existing wrapper. Issue 2 — JSON-LD on page 2+ omits text/image/dateModified
GSC: "Either text, image, or video must be specified."
In
AbstractHandler::getLdStructuredData() the assignment of text/image/dateModified is gated behind if ($page === 1), so every paginated URL after page 1 emits an incomplete entity. GSC validates each URL independently. Compare https://www.hiveworkshop.com/threads/mortar-team-and-derivatives.295866/ vs. https://www.hiveworkshop.com/threads/mortar-team-and-derivatives.295866/page-2.
Fix: Drop the
$page === 1 gate around text/image/dateModified (the LikeAction counter can stay page-1 only). These fields describe the first post and are page-invariant. Issue 3 — parentItem declares an empty implicit item
GSC: "Missing field 'author'."
Each comment emits
<meta itemprop="parentItem" itemscope itemid="<thread-URL>">. Per the HTML microdata spec, itemscope declares a new item — empty, no itemtype, no properties. Google infers this is the parent DiscussionForumPosting and reports it asmissing
author, even though both the page-level JSON-LD and every visible Comment have valid authors. Live example: https://www.hiveworkshop.com/threads/mortar-team-and-derivatives.295866/page-2.Fix: Replace
<meta itemprop="parentItem" itemscope itemid="..."> with <link itemprop="parentItem" href="..."> — references the parent by URL without creating a new item. Impact
On any active forum, most thread URLs trip at least one issue: Issue 2 affects every multi-page thread; Issue 3 affects every thread page; Issue 1 affects all image/smilie-only replies. Combined, this disqualifies a large share of thread pages from rich results.