tshenry
(Taylor)
June 2, 2020, 9:21pm
86
Update
If you can believe it
I have started refactoring/cleaning up the component to use the plugin-style file structure and make use of the new topic thumbnails.
discourse:master
← davidtaylorhq:post_image_refactor
opened 04:38PM - 16 Mar 20 UTC
This PR introduces new APIs for obtaining optimized thumbnails for topics. There… are a few building blocks required for this:
- Introduces new `image_upload_id` columns on the `posts` and `topics` table. This replaces the old `image_url` column, which means that thumbnails are now restricted to uploads. Hotlinked thumbnails are no longer possible. In normal use (with pull_hotlinked_images enabled), this has no noticeable impact
- A migration attempts to match existing urls to upload records. If a match cannot be found then the posts will be queued for rebake
- Optimized thumbnails are generated during post_process_cooked. If thumbnails are missing when serializing a topic list, then a sidekiq job is queued
- Topic lists and topics now include a `thumbnails` key, which includes all the available images:
```
"thumbnails": [
{
"max_width": null,
"max_height": null,
"url": "//example.com/original-image.png",
"width": 1380,
"height": 1840
},
{
"max_width": 1024,
"max_height": 1024,
"url": "//example.com/optimized-image.png",
"width": 768,
"height": 1024
}
]
```
- Themes can request additional thumbnail sizes by using a modifier in their `about.json` file:
```
"modifiers": {
"topic_thumbnail_sizes": [
[200, 200],
[800, 800]
],
...
```
Remember that these are generated asynchronously, so your theme should include logic to fallback to other available thumbnails if your requested size has not yet been generated
- Two new raw plugin outlets are introduced, to improve the customisability of the topic list. `topic-list-before-columns` and `topic-list-before-link`
I’ve added a couple new features as well:
New settings
image_display_style
- there are two options with this. The default should be the behavior the component has had all along. The alternative will ensure there is no cropping and the full image is displayed. It’s hard to say which one is “better” so you’ll want to do some experimentation and see what works best for your workflow and blog images.
mobile_enabled
- this is a first pass on the mobile blog post style. I’m interested to hear any bug reports or ideas for improvements on this!
I still want to continue refactoring and cleaning up the code, but this should be a good start.
committed 09:21PM - 02 Jun 20 UTC
Varhall:
It would be cool to add schema.org markup for this type of topic. There is in the plans?
No plans at this point, I’m afraid!
16 Likes