Это не зависит от размера изображения. В целом мы не берем изображения из однобоксов, так как во многих случаях они не подходят для миниатюр. Например, на Meta мы часто видим ссылки на репозитории GitHub, такие как
Никто не хочет, чтобы мое лицо увеличивали и использовали в качестве миниатюры темы
Ну, это очень специфично для Meta — у нас в сообществе нет ссылок на GitHub. Всё строится вокруг новостей, и для них следует использовать изображения из onebox. Это сильно ограничивает возможность использования миниатюр, и всё из-за этой проблемы с «лицами» на Meta. Есть ли какой-то способ обойти это и добавлять изображения из onebox? Думаю, многим сообществам безразличны «лица» GitHub.
Я определенно открыт к улучшениям в этой области. Я знаю, что @merefield также заинтересован в этой логике. Изменение потребуется в ядре, а не в плагине, поэтому я выделю это в отдельную тему.
Вот существующая логика:
Возможно, мы могли бы добавить класс .no-thumbnail к определенным типам onebox (например, GitHub), а затем научить Discourse игнорировать только их, сохраняя при этом изображения других onebox.
Я поставлю метку pr-welcome, но обязательно опишите план действий в этой теме перед началом существенной работы.
Это было бы здорово. В настоящее время 90% наших тем не имеют миниатюр, хотя они могли бы их иметь. И, как уже говорилось, этот вопрос на GitHub касается очень специфического пограничного случая для сообществ разработчиков, в то время как подавляющее большинство из нас не получает миниатюр для тем, которые определённо могли бы их иметь, именно из-за этого.
Поддерживаю!!! Для сценария использования агрегатора новостей или любой другой страницы с большим количеством репостов отсутствие релевантных миниатюр — это плохо.
Если вы не внедрите это в ближайшее время, есть ли какие-то идеи, как реализовать это на моей собственной сборке?
Да, в настоящее время это не рассматривается, так как «аватары» из GitHub могут отображаться в сообществах разработчиков, таких как Meta, но большинство сообществ не интересуются «аватарами» и хотят иметь как можно больше миниатюр, особенно когда доступны достаточно большие изображения для превью основной темы.
def extract_images_for_post
# все изображения с атрибутом src
@doc.css("img[src]") -
# минус эмодзи
@doc.css("img.emoji") -
# минус изображения внутри цитат
@doc.css(".quote img") -
# минус иконки сайтов из onebox
@doc.css("img.site-icon") -
# минус аватары из onebox
@doc.css("img.onebox-avatar") # Более широкие критерии, чем в ядре Discourse
end
Да, спасибо, @merefield, но мы используем только компонент темы от @david, а не TLP TC. Однако, если не будет никаких подвижек или варианта решения от @team по этому вопросу, я, скорее всего, воспользуюсь вашим оценочным кодом для исправления ядра.
Понял. Пока у меня простая среда разработки на Docker для создания простых плагинов и исправлений ядра. Буду ждать, пока кто-то не посмотрит на это и, вероятно, не применит исправление через вашу оценку в ближайшее время.
Правильная работа здесь — это не абстрактный проект, так как нужно будет изменить тестовые случаи и работать с двумя компонентами (Discourse и Discourse One-Box). Но это определенно стоит сделать!
В качестве обходного решения я часто вручную копирую и вставляю изображение в чат, а затем выбираю миниатюру оттуда.
Автоматический вариант был бы удобнее, возможно, с настройкой для указания доменов, с которых не следует брать миниатюры из одного блока (например, для покрытия случая с GitHub).
Согласен. Мы использовали сниппет от @merefield, чтобы переопределить ядро с помощью мини-плагина. Но команде разработчиков ядра было бы несложно предложить готовое решение из коробки. Отсутствие такой возможности только из-за того, что кто-то боится, что их аватары на GitHub станут видны, — это просто лень.