A Flarum extension. Replaces the author avatar in the discussion list with the first image found in the discussion's opening post.
https://cdn.discuss.flarum.org/2026-02-25/1771984263-288896-fof-discussion-thumbnail.mp4
When the discussion list is rendered, each discussion's author avatar is replaced with a thumbnail of the first <img> found in the HTML of the first post. If the first post contains no image, the normal user avatar is shown instead.
Backend: AddDiscussionThumbnail is registered as an API serializer attribute on BasicDiscussionSerializer. For each discussion it:
- Loads the first post and calls
formatContent()to render the full HTML - Extracts the
srcof the first<img>tag via regex - Caches the result forever against the post ID, keyed as
fof:discussion-thumbnail:discussion:{id} - Returns the URL as the
customThumbnailattribute on the discussion
The cache is invalidated when the post's edited_at timestamp is newer than the cached date, so editing the first post to change its image is reflected on next load.
Frontend: The customThumbnail attribute is read in a contentItems extension on DiscussionListItem. When a thumbnail URL is present, the authorAvatar item is replaced with a DiscussionThumbnail component wrapped in the same Tooltip + Link structure as the normal avatar. The thumbnail is styled with the .Avatar class so it matches core avatar sizing and alignment at all breakpoints.
| Setting | Default | Description |
|---|---|---|
| Link to discussion | false |
When enabled, clicking the thumbnail navigates to the discussion instead of the author's profile |
composer require fof/discussion-thumbnail:"*"Enable the extension in your Flarum admin panel.
composer update fof/discussion-thumbnail
php flarum cache:clearAn extension by FriendsOfFlarum.