Это руководство объясняет, как настроить и устранить неполадки с oneboxes в Discourse. Оно охватывает параметры администратора, принцип работы oneboxes и шаги по решению распространённых проблем.
Требуемый уровень пользователя: Администратор
Oneboxes — это расширенные предпросмотры ссылок, которые пользователи могут создавать в своих сообщениях. Хотя пользователи могут легко генерировать такие предпросмотры, администраторы сайта имеют дополнительные возможности управления и могут нуждаться в устранении неполадок, когда ссылки не отображаются как ожидалось.
Настройка администратора
Для управления параметрами onebox:
- Перейдите в панель администратора
- Перейдите в раздел настроек сайта
- Найдите “onebox”
Вы увидите список параметров, связанных с onebox:
Некоторые важные параметры:
post onebox maxlength: Контролирует объём текста, включаемого в oneboxmax oneboxes per post: Ограничивает количество oneboxes, которые могут отображаться в одном сообщении (по умолчанию: 50)enable inline onebox on all domains: Включает встроенные oneboxes для всех доменов, преобразуя простые URL в связанные заголовки (например,https://en.wikipedia.org/wiki/Fun_(band)становится “Fun (band) - Wikipedia”). Включено по умолчанию.blocked onebox domains: Позволяет отключить oneboxes для конкретных доменовblock onebox on redirect: При включении предотвращает создание onebox для URL, которые перенаправляют на другое место назначения
Как работают oneboxes
Когда в сообщение включена ссылка, Discourse посещает целевую страницу и ищет теги Open Graph или oEmbed, включая:
- Адрес сайта
- Заголовок
- Изображение-обложка
- Иконка сайта (или favicon)
- Описание (обязательно)
- Цена товара (если применимо)
Discourse требует, чтобы тег описания присутствовал и содержал достаточно текста для краткого изложения страницы. Без этого целевая ссылка не будет преобразована в onebox.
Вот пример onebox для https://discourse.org, отображающий заголовок сайта, изображение-обложку, иконку и описание:
Устранение неполадок
Если oneboxes не работают как ожидалось, попробуйте следующие шаги:
-
Протестируйте сайт с помощью iFramely:
- Вставьте ссылку и проверьте, используются ли правильные мета-теги OpenGraph или oEmbed
- Убедитесь, что текст описания присутствует и достаточно информативен
-
Проверьте, не блокируется ли запрос onebox:
- Некоторые хосты могут блокировать «неизвестных» пользователей (user agents)
- Убедитесь, что целевой сайт не блокирует user agent Discourse
-
Для внутренних ссылок, которые не отображаются как oneboxes:
- Убедитесь, что ссылка не находится в защищённой категории
- Внутренние ссылки преобразуются в oneboxes только в публичных категориях или в пределах одной категории по соображениям безопасности
Из консоли Rails вы можете явно инвалидировать/получить oneboxes, вызвав соответствующие методы во время тестирования:
[1] pry(main)> Oneboxer.invalidate(url)
=> 0
[2] pry(main)> Oneboxer.onebox(url)
=> "<aside class="onebox …(elided)"
[3] pry(main)> InlineOneboxer.invalidate(url)
=> 0
[4] pry(main)> InlineOneboxer.lookup(url)
=> {url: "https://example.com", title: "Example Page Title"}
