Я создал плагин, расширяющий функционал onebox для сайта, которым пользуются многие участники моего форума.
Этот onebox также отображает изображение с указанного сайта. Есть ли способ сохранять изображение локально, чтобы onebox не ломался при изменении изображения на исходном сайте?
Я видел, что такая функция доступна на форуме, но не могу найти, как получить к ней доступ в созданном мной плагине.
Заранее большое спасибо!
PS: Вот репозиторий GitHub с моим плагином. Любые отзывы по моему коду будут очень кстати.
(Это мой первый опыт написания кода на Ruby, хотя я работаю с бэкендом на NodeJS).
Onebox и Discourse сделают это нативно без каких-либо дополнительных плагинов.
Вам просто нужно убедиться, что целевой веб-сайт генерирует соответствующие мета-теги og. Если что-то нужно изменять, то это должен быть целевой веб-сайт, а не Discourse, если вы хотите, чтобы это работало.
Веб-сайт BBC генерирует эти мета-теги для каждой страницы. Discourse и Onebox извлекут site_name, image, description и title и сгенерируют onebox.
Просто убедитесь, что ваш целевой веб-сайт следует этому стандарту, и вам, вероятно, не нужно будет делать ничего другого.
Это имеет смысл, потому что тогда ваш веб-сайт будет охвачен для всех предпросмотров на других платформах, например, в Facebook.
Я предполагаю, что у вас есть контроль над этим веб-сайтом или влияние на него, хотя это может быть большим предположением!
Если это невозможно, вам придется создать собственный движок в Onebox, который сможет распознавать уникальность этого веб-сайта и собирать с него соответствующие метаданные. Для этой задачи подходит библиотека Nokogiri.
К сожалению, нет Кроме того, я хочу немного настроить представление onebox. Это было бы невозможно при использовании стандартного движка.
Но…
Я уже разработал расширение onebox. Оно выполняет всю работу по загрузке данных и работает отлично!
Вопрос в следующем: Как я могу быть уверен, что загруженное изображение будет сохранено локально? Предполагаю, что мне нужно написать дополнительный код для плагина.
Если вам удалось вернуть изображения по прямым ссылкам в пост, изображения соответствуют критериям, а настройки гарантируют загрузку внешних изображений, это должно сработать.
Если это пока не работает, но вы успешно отображаете внешние изображения в onebox, я предполагаю, что изображения не соответствуют критериям для загрузки.