このガイドでは、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 …(elided)"
[3] pry(main)> InlineOneboxer.invalidate(url)
=> 0
[4] pry(main)> InlineOneboxer.onebox(url)
=> "<aside class=\"onebox …(elided)"
