После обсуждения с командой Discourse по электронной почте я обновляю информацию здесь.
Главное открытие заключается в том, что миниатюры не загружаются, если ссылка, превращающаяся в onebox, рендерится как iframe.
Это означает, что ссылка:
https://app.everviz.com/embed/N0dDTJaOQ
может отображать миниатюру или нет в зависимости от того, разрешены ли iframes с данного домена (настройка allowed iframes). Решение состоит в том, чтобы каким-то образом внедрить iframe в пост. Я создал плагин, который делает это и устанавливает display: none для изображения, чтобы предотвратить его отображение в посте.
Предполагаю, что возможно обобщить этот подход для:
- Для всех общих onebox-ов: незаметно загружать и скрывать изображение рядом с ними, если существует
get_oembed.thumbnail_url. - Что, вероятно, является лучшим решением: добавить общую поддержку извлечения
get_oembed.thumbnail_urlи связывания его с постом, без включения его в областьcooked.
Релевантные места:
- https://oembed.com/
- discourse/lib/onebox/engine at main · discourse/discourse · GitHub
- discourse/lib/onebox/engine/standard_embed.rb at main · discourse/discourse · GitHub
Меня не совсем устраивает такое модальное поведение, то есть включена ли настройка allowed iframes или нет. Было бы здорово, если бы Discourse извлекал и использовал все свойства из конечной точки oembed при первом отправлении запроса GET к ней.