Если я публикую ссылку на Bandcamp в форуме Discourse, он автоматически встраивает их плеер. Как можно добиться этого на собственном музыкальном сайте?
Я пробовал устанавливать теги og:video, но безрезультатно.
Спасибо!
Если я публикую ссылку на Bandcamp в форуме Discourse, он автоматически встраивает их плеер. Как можно добиться этого на собственном музыкальном сайте?
Я пробовал устанавливать теги og:video, но безрезультатно.
Спасибо!
Вы имеете в виду на вашем сайте, который не использует Discourse?
Вы можете посмотреть исходный код Discourse и поискать там “onebox” или, возможно, “one_box”.
Или, возможно, ознакомьтесь с https://get.bandcamp.help/hc/en-us/articles/360013561254-How-do-I-create-a-Bandcamp-embedded-player-#:~:text=To%20create%20an%20embedded%20player,your%20merchandise%2C%20and%20so%20on. и используйте это для разработки кода для вашего сайта.
Привет, Джей,
У меня есть веб-сайт, немного похожий на Bandcamp. Я создал виджеты, аналогичные ссылке, которую вы привели, чтобы вы могли добавить iframe на другой сайт, и мой виджет появится.
Но речь идёт о какой-то магии, которая, кажется, происходит, когда вы просто публикуете ссылку на Bandcamp: появляется полноценный iframe-виджет. Это что-то настроено на сервере Discourse?
Давайте проверим, сработает ли это здесь. Я вставлю ссылку на Bandcamp ниже.
Да, ^ как вы видите, появился рабочий встроенный музыкальный плеер. Я не вставлял ни iframe, ни JS, только ссылку на виджет, которую процитировал выше.
Это какая-то особая функция, которую Discourse умеет делать для определённых сайтов, или существуют специальные заголовки, которые можно настроить, чтобы указать, какой URL виджета использовать?
Как указал Джей, вам стоит посмотреть исходный код.
‘Onebox’ — это библиотека, которая частично преобразует некоторые URL-адреса во встроенные элементы.
Вы смотрели это?
Похоже, что изначально задумывалось, чтобы этот код использовался и на сайтах вне Discourse.
Для этого существует (теперь не поддерживаемый) gem, который вы могли бы использовать (если ваш сайт работает на RoR). Возможно, вам было бы интересно поддерживать его?
Предупреждение: код в Discourse с тех пор значительно эволюционировал.
Привет, Роберт,
Спасибо, что нашли эту информацию. Да, в Discourse для этого есть специальный код. Мне не нужно ничего делать на моём сайте в этом отношении. Этот вопрос закрыт. Если я хочу, чтобы мой сайт поддерживался так же, как Bandcamp на Discourse (и, возможно, на других форумах), мне нужно либо запросить, либо внести код, чтобы это работало и для моего сайта.
Мой сайт не написан на RoR, но я немного знаю Ruby, так что, возможно, смогу внести свой вклад.
У меня есть ещё один вопрос. Помимо вставки URL, я также попытался добавить встроенный контент с помощью тега iframe. На обычном сайте это работает отлично, но на моём форуме Discourse не получается. Появился пустой квадрат, но сам встроенный контент не отобразился. Я предположил, что это проблема разрешений, поэтому добавил свой хост в список разрешённых iframe, но всё равно не работает.
–
Хорошо, только что я собирался сделать скриншот, чтобы показать, что это не работает, и вдруг всё заработало! Возможно, в системе есть какая-то задержка при применении разрешённых хостов.
Я продолжу изучать этот вопрос. Спасибо за вашу помощь до сих пор.
Окей, я только что понял, что происходит. При изменении настроек разрешения iframe это не влияет на существующие посты (по крайней мере, не сразу). Возможно, это произойдет позже, но я не уверен.
Однако — при создании нового поста или редактировании существующего настройки вступают в силу.
Так что теперь работают как мой встраиваемый код, так и URL. Это значит, что мне просто нужно связаться с соответствующими форумами и попросить их добавить мой домен в список разрешённых хостов, и с этого момента всё должно работать.
Спасибо!
Привет
![]()
Старые сообщения нужно пересобрать (rebake). Вы можете сделать это вручную, нажав на значок с тремя точками под сообщением, затем на гаечный ключ, а затем «Rebuild HTML».

Если у вас много сообщений, требующих пересборки, возможно, вам понадобится rake-задача для пересборки всех сообщений или пользовательский rails-скрипт для пересборки только некоторых из них по нужным критериям.
Что-то вроде этого, думаю:
Post.where('raw LIKE ?', 'a specific URL').find_each do |p|
p.rebake!
end