Переопределить источник meta og:image для использования публично загружаемых изображений на темах?

По сути, вы можете увидеть мою проблему и обсуждение с автором плагина @merefield здесь:

Он рекомендует мне обратиться к команде Discourse, чтобы они сделали это для нас.

Я всегда использую изображения с внешних CDN на своём сайте. Я никогда не загружаю их локально или в объектное хранилище, так как это слишком дорого, чтобы сохранять изображения локально или в бакетах S3.

Сейчас я вижу, что мой мета-тег og:image не подхватывает эти изображения. Например, посмотрите на эту тему: How Many Carbs on Keto? - How To Discuss

Изображение фактически загружается с внешнего публичного URL как его IMG SRC. Open Graph для социальных сетей всегда показывает логотип моего сайта как изображение по умолчанию, что не хорошо.

Из-за этого основного поведения Discourse я не вижу, чтобы плагин превью списка тем тоже обнаруживал эти миниатюры.

Как я могу переопределить мета-тег og:image, чтобы принудительно использовать моё загруженное извне изображение?

Чтобы я мог видеть РЕАЛЬНОЕ ИЗОБРАЖЕНИЕ ТЕМЫ вместо логотипа форума моего сайта при её публикации на сайтах социальных сетей: https://developers.facebook.com/tools/debug/?q=https%3A%2F%2Fhowtodiscuss.com%2Ft%2Fis-yoga-a-good-workout%2F28043

Я пробовал принудительно добавить эту строку на страницу темы:

<meta property="og:image" content="https://images.pexels.com/photos/4761347/pexels-photo-4761347.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500" />

Но мета-тег og:image, когда я просматриваю исходный код страницы, всё ещё использует логотип моего сайта как изображение по умолчанию; он думает, что на этой теме нет изображения :frowning:

Первое изображение в первом посте любой темы должно подхватываться моим мета-тегом og:image, даже если изображение размещено на каком-либо публичном URL. Сейчас он подхватывает его только в том случае, если изображение загружено на мой собственный сервер… но многие из нас не могут позволить себе хостинг изображений самостоятельно, так как это слишком дорого. Помощь от команды Discourse в разрешении этого изменения для нас была бы очень полезна.

У @Bcat такая же проблема на его форуме.

2 лайка

Ядро Discourse поддерживает использование только ‘uploads’ в качестве миниатюр тем. Они могут быть локальными или размещёнными на S3, но должны быть загружены в Discourse. Вы можете автоматически преобразовывать горячие ссылки на изображения в загрузки, используя настройку сайта «Загружать удалённые изображения локально».

Боюсь, что у нас нет планов изменить это поведение в Discourse.

3 лайка

Если они размещены на S3, то как они загружаются в Discourse? S3 не находится внутри Discourse, это также публичный сервер для хостинга изображений. Когда я использую удалённые изображения с бесплатных публичных CDN сторонних сервисов, они тоже доступны всем, как и изображения на S3. Тогда почему Discourse не разрешает/не поддерживает использование публичных URL-адресов изображений в качестве миниатюр тем?

Например, этот URL: https://d11a6trkgmumsb.cloudfront.net/optimized/3X/7/1/71abcfa01874c32497d638b372f94c7b9fc021e4_2_1380x718.png
— это изображение, которое я только что загрузил на meta discourse, и это публичный URL хостинга изображений. Мои собственные URL-адреса изображений выглядят так: https://images.pexels.com/photos/4761347/pexels-photo-4761347.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500

Мои URL-адреса тоже являются публично размещёнными изображениями, почему же Discourse не использует мои? Пожалуйста, настройте его так, чтобы он поддерживал оба варианта, потому что для поискового робота или Open Graph-робота оба источника изображений являются публично размещёнными URL-адресами.

Я уже включил эту настройку,

но тогда почему мои изображения по прямым ссылкам не используются в качестве миниатюр тем?

Я также отключил загрузку файлов jpg/jpeg в этой настройке файла,

я отключил это, чтобы пользователи не загружали изображения напрямую на мой сервер и тем самым экономил место на диске.

Если мой форум станет очень большим, мне будет очень сложно управлять хранилищем для такого количества изображений.

Есть ли какой-нибудь хак или трюк, чтобы достичь того, чего я хочу? Я просто хочу принудительно перезаписать мета-тег og:image, чтобы использовать мое изображение по прямой ссылке в теме. Как я могу это просто сделать? Возможно, какой-нибудь HTML-код, который я могу добавить на страницы тем, чтобы принудительно использовать этот источник изображения по прямой ссылке для og:image?

ИЛИ я могу добавить строку кода в секцию моего сайта, чтобы предотвратить использование по умолчанию или просто удалить эту строку мета-тега og:image, которая возвращается к логотипу, если Discourse не может определить миниатюру темы?

Я попробовал добавить следующую строку в редакторе поста на странице темы:

<meta property="og:image" content="https://images.pexels.com/photos/4761347/pexels-photo-4761347.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500" />

но по какой-то причине этот код не отображается, когда я смотрю исходный код моей страницы темы. Почему так происходит?

Вот страница, на которой я это пробовал: Is yoga a Good workout - How To Discuss

Как я могу расставить приоритеты так, чтобы если на моей странице есть два тега meta og:image, то использовался только и исключительно МОЙ КАСТОМНЫЙ тег meta og:image?

Настроив это следующим образом:

Потому что у Discourse нет прав доступа к бакету S3 для оптимизации изображений для отображения на сайте. Discourse также не может гарантировать, что ссылка всегда будет работать — владелец бакета может удалить файл.

Вы имеете в виду, что у моего Discourse нет прав на доступ к ведру S3 сторонних бесплатных CDN-сервисов для изображений?
Если я могу открыть изображение в браузере, то и Discourse тоже может. Более того, Discourse уже оптимизирует изображения, которые я делюсь через прямые ссылки. Поэтому я считаю, что эта функция нам определённо нужна.

Я обновил свой ответ выше с сравнением CDN для Discourse, пожалуйста, проверьте.

Как ещё более дешёвый способ вы можете предложить для хостинга моих изображений в больших объёмах? Потому что я боюсь, что если на моём сайте появится миллион тем, то это будет миллиарды изображений, и резервная копия моего сайта Discourse начнёт становиться всё больше и больше, что сделает её очень сложной и дорогой в управлении, масштабировании и миграции. Что мне тогда делать?

У него нет разрешения на управление и оптимизацию этих файлов.

Если эта функция вам действительно необходима, лучшим вариантом будет разместить сообщение в канале Marketplace и найти разработчика плагинов, который сможет помочь вам реализовать эту функцию.

Спасибо, я создал платную тему по поводу этой же функции — либо в ядре, либо через плагин:

Эта тема была автоматически закрыта через 5 часов. Новые ответы больше не принимаются.