このガイドでは、Discourse で onebox を設定およびトラブルシューティングする方法について説明します。管理者設定、onebox の仕組み、一般的な問題の解決手順を網羅しています。
必要なユーザーレベル: 管理者
Onebox は、ユーザーが投稿内で作成できるリッチなリンクプレビューです。ユーザーはこれらのプレビューを簡単に生成できますが、サイト管理者は追加の制御機能を持ち、リンクが予期したとおりにプレビューされない場合にトラブルシューティングが必要になることがあります。
管理者設定
onebox の設定を管理するには、次の手順に従います。
- 管理パネルに移動します
- サイト設定セクションに移動します
- 「onebox」を検索します
onebox 関連の設定のリストが表示されます。
注目すべき設定には次のようなものがあります。
post onebox maxlength: onebox に含まれるテキスト量を制御しますenable inline onebox on all domains: インライン onebox を有効にし、プレーンな URL をリンクされたタイトルに変換します(例:https://en.wikipedia.org/wiki/Fun_(band)は「Fun (band) - Wikipedia」になります)blocked onebox domains: 特定のドメインの onebox を無効にできるようにします
Onebox の仕組み
投稿にリンクが含まれると、Discourse は宛先ページにアクセスし、次のような Open Graph または oEmbed タグを探します。
- サイトアドレス
- タイトル
- 特集画像
- サイトアイコン(またはファビコン)
- 説明(必須)
- 製品価格(該当する場合)
Discourse では、説明タグが存在し、ページを要約するのに十分なテキストが含まれている必要があります。これがないと、対象リンクは onebox 化されません。
サイトのタイトル、特集画像、アイコン、説明を示す <https://discourse.org> の onebox の例を次に示します。
トラブルシューティング
onebox が予期したとおりに機能しない場合は、次の手順を試してください。
-
iFramely を使用してサイトをテストします。
- リンクを貼り付けて、正しい OpenGraph または oEmbed メタタグを使用しているか確認します
- 説明テキストが存在し、適切であることを確認します
-
onebox リクエストがブロックされていないか確認します。
- 一部のホストは「不明な」ユーザーエージェントをブロックする場合があります
- 対象のウェブサイトが Discourse のユーザーエージェントをブロックしていないことを確認します
-
内部リンクが onebox として表示されない場合:
- リンクがセキュアなカテゴリ内にないことを確認します
- セキュリティ上の理由から、内部リンクはパブリックカテゴリ内、または同じカテゴリ内でのみ onebox 化されます
rails コンソールから、次のコマンドを呼び出して onebox を明示的に無効化/フェッチし、テスト中に実行できます。
[1] pry(main)> Oneboxer.invalidate(url)
=> 0
[2] pry(main)> Oneboxer.onebox(url)
=> "…(省略)…<aside class=\"onebox …"
[3] pry(main)> InlineOneboxer.invalidate(url)
=> 0
[4] pry(main)> InlineOneboxer.onebox(url)
=> "…(省略)…<aside class=\"onebox …"
