トピックリストのサイドバー

:information_source: 以前は「Discourse カテゴリサイドバー」と呼ばれていましたが、カテゴリとタグの両方をサポートするようになったため、このテーマコンポーネントの名称は現在トピックリストサイドバーに更新されています。

:discourse2: 概要 トピックリストサイドバーは、トピックを指定し、カテゴリまたはタグのトピックリストのサイドバーとして適用します。
:eyeglasses: プレビュー Discourse テーマクリエーターでプレビュー
:hammer_and_wrench: リポジトリリンク https://github.com/discourse/discourse-topic-list-sidebars
:open_book: Discourse テーマは初めてですか? Discourse テーマの利用に関する初心者ガイド

このテーマコンポーネントをインストール

機能

このテーマコンポーネントは、トピックを指定し、カテゴリまたはタグのトピックリストのサイドバーとして適用します。これらのサイドバーは、ブラウザの幅が 767px 以上(ほとんどのタブレットとモニター)の場合にのみ表示されます。

このテーマコンポーネントで何ができますか?

  • 任意のトピックを選択し、その内容をカテゴリまたはタグのサイドバーとして表示します。
  • 設定でカテゴリ名に all を指定することで、/latest、/new、/unread、/top ページにサイドバーを表示できます。
  • サイドバーをトピックリストの左側または右側に表示するよう選択できます。
  • デフォルトでは、サブカテゴリに独自のサイドバーが定義されていない限り、カテゴリのサイドバーはそのすべてのサブカテゴリにも表示されます(親のサイドバーを継承する設定のチェックを外すとこれを無効にできます)。

設定方法は?

カテゴリとタグを選択し、サイドバーの内容を埋め込むために使用するトピックの ID(例:example.com/t/example-topic/57)を追加します。

それぞれのカテゴリ/タグにサイドバー用のトピックを作成し、返信がないようにトピックを閉じ、リストから除外すること(トピックリストに表示されないようにする)をお勧めします。

なお、プライベートカテゴリのトピックをパブリックカテゴリのサイドバーとして使用することはできません(技術的には可能ですが、そのプライベートトピックへのアクセス権がないユーザーには空のサイドバーが表示されるだけです)。

設定

名前 説明
sidebars サイドバーの追加と削除
sidebar side 左または右を選択
inherit parent sidebar チェックした場合、サブカテゴリは親カテゴリのサイドバーを継承します(サブカテゴリに独自のサイドバーが割り当てられている場合を除く)。

チェックを外した場合、サブカテゴリはサイドバーが指定されている場合のみ表示されます。
stick on scroll チェックした場合、サイドバーはスクロール時に固定位置になります

開発者向けノート

各カテゴリのサイドバーは、カテゴリのスラッグを含むクラスで囲まれています。例えば、スタッフカテゴリの場合は .category-sidebar-staff となります。これらのクラスを使用して、個々のサイドバーのスタイルを設定できます。

サイドバーがあるページの body タグにもクラスが追加されるため、body.custom-sidebar を使用して、サイドバーがあるすべてのページにスタイルを適用できます。

クレジット

:heart: このコンポーネントの実現に向けた基盤作りをしてくださった @xrav3nz に特別な感謝を!


:discourse2: 当方でホストされていますか? テーマコンポーネントは、Standard、Business、Enterprise プランで利用可能です。

「いいね!」 59

Trying to figure out how to make this work with tags as well. (we use tags heavily rather than having tons of categories.)

It looks like it may be about replacing controller:navigation/category with whatever the equivalent for tags is but not sure.

「いいね!」 2

少しだけ確認しましたが、タグに対してはこれが可能です…

明日はもっと深く取り組んで、別リポジトリとして分離するつもりです。

その通りです。これが核心部分です。タグに対しては以下が機能するようです:

const controller = container.lookup("controller:tags-show");
const tag = controller.get("tag");

更新: テーマコンポーネントを公開しました。Discourse Tag Sidebars

「いいね!」 10

Since I am using the header submenu plugin, A part of the text is covered by my header bar. It would be great if it was possible to add extra margin/offset or whatever it’s called for the case when additional elements before the header are covering the sidebar’s content.

Also: is there any way to keep the category drop down menu above the sticky sidebar’s content? that would make it easy for users to jump between categories quickly.

altogether I think the category sidebar is a great plugin and has huge potential to add useful information to the forum structure!

素晴らしいプラグインですね、クリス!ありがとうございます!

いくつか質問と提案があります。お手伝いいただければ幸いです…

1 - ユーザーがフォーラムを閲覧してページ間を移動する際、サイドバーに含まれる投稿の最新バージョンを常にチェックするようにすることは可能でしょうか?現状では、サイドバーの内容はページのリフレッシュ時のみ更新されているように思われます。残念ながら、あまり変更されないコンテンツはユーザー(特にアクティブなユーザー)にとって古く見えてしまいます。そのため、可能であればサイドバーに関連するトピックを頻繁に更新したいと考えています。(同様に、そのページのオプションでトピックのIDが変更された場合、次のページ表示時にそれを検出できれば理想的です。)ページ/表示あたりの追加負荷については問題ありませんが、他のユーザーが懸念する可能性がある場合は、「投稿コンテンツをキャッシュする」オプションを追加して、現在と同じ動作にすることも検討していただけますでしょうか。

2 - 1つのサイドバーあたり、複数のトピックからコンテンツを関連付け/取得することは可能でしょうか?例えば、「最新」ページではトピック33と55の内容を(その順序で)表示したい場合などです。これにより、ページごとに異なるコンテンツを表示しつつ、すべてのサイドバーの下部に表示させたい共通の情報やリンクを含めることが可能になります。

3 - プラグインをサイト全体で使用できるように拡張することは可能でしょうか?現状では特定のページでのみ使用できるようです。理想的には、フォーラム全体の主要セクション/ページでこのプラグインを使用したいと考えています。(おそらく、タグのサイドバープラグインと組み合わせることで、より細かい制御が可能になるでしょう。例えば、個別のタグやトピック用など。両方を組み合わせれば、非常に強力なサイドバーパッケージになると思います!!)

4 - サイドバーの幅のオプションと、設定可能なカットオフ/非表示ポイントを追加することは可能でしょうか?これはCSSの変更で対応可能なので大きな問題ではありませんが、オプションとして用意されると嬉しいです。

5 - 最後になりますが…投票機能を実装していただけないでしょうか?サイドバーから直接ユーザーが投票できるのは素晴らしいと思います!!このような動的なコンテンツをサイドバーに追加することで、ユーザーにとって興味深いものになり、自動的に無視される可能性も減るでしょう。

上記のすべての機能を追加すれば、このプラグインはコア機能や公式のDCプラグインに採用されるのにふさわしい素晴らしい候補になると思います。個人的には、これがフォーラムに独自の個性を持たせるのに役立つと考えます。きっと人々はこれを面白く、興味深い方法で活用するでしょう!:smiley:

こんにちは、

素晴らしいコンポーネントですね。特定のカテゴリ内の各トピックにこのようなサイドバーを配置することは可能でしょうか?

よろしくお願いいたします。

サブカテゴリを指定する構文は何ですか?これまでに試した方法は以下の通りです:

category/subcategory,123
subcategory,123
category-subcategory,123

どれも機能していないようです。ただし、メインカテゴリは表示されています。

「いいね!」 1

えーと、どなたか教えてください。回答するのはそれほど難しくないはずです…

一部の場合、サブカテゴリが機能しないというリグレッションが発生したようです。構文はカテゴリと同じはずです:subcategory, 123

テーマをリファクタリングしましたので、アップデートすればサブカテゴリは期待通りに動作するはずです!

「いいね!」 6

これで完璧に解決しました!
本当にありがとうございます。グランドオープンに間に合って助かりました。

「いいね!」 1

素晴らしいプラグインです!

これはグループでも可能でしょうか?グループに関する情報を提供するために、グループ用のサイドバーがあると素晴らしいでしょう。

グループのパラメータ(コンポーネントにグループ内にいることを知らせる)を取得する方法を教えていただけますか?そうすれば、自分で試してPRを作成できます。

@hyphalos サイドバーにレイアウトプラグインを追加できるグループウィジェットを作成しました。

おそらく、そのためのコードがPRの作成に役立つでしょう。

または、レイアウトプラグインとウィジェット自体を使用することもできます。

「いいね!」 2

サイドバーと呼ばれるものとしては少し大胆な質問かもしれませんが、コンテンツを横ではなく、常にトピックリストのに配置するオプションを追加することは可能でしょうか?

私たちはDiscourseをソーシャルイントラネットとして使用しており、一部のカテゴリではリンクや担当者リストなどの維持しやすいエリアが必要ですが、サイドバーにはスペースが少なすぎます。
CSSハックも歓迎します。

すでにカテゴリバナーを試しましたが、最初の段落に限定されているため、これは選択肢ではありません。

よろしくお願いいたします。
Ralf
(ベルリン州立図書館)

このTCについてはどうですか?

最初の段落はそのまま残ると思いますが、変更できる可能性はあります。

Krisさん、これはとても良いですね。

これを修正したり、サイドバーからサイトヘッダーの下のトップバー、またはカテゴリロゴのすぐ下に移動するオプションを追加したりすることは可能でしょうか?

または、カスタムCSSを追加して移動させ、モバイルでもトップバーとして表示させる方法についてガイダンスをいただくことは可能でしょうか?メインバーのすぐ下に固定されますか?

このテーマコンポーネントの使い方が間違っているかもしれませんが、トピックのリストを左側に表示し、リスト内のトピックをクリックすると右側に投稿が表示され(トピックリストは左側に固定されたまま)、Flarumのような表示にすることは可能でしょうか?カテゴリーは表示する必要はありません。

「いいね!」 1

いいえ、このコンポーネントはトピックからコンテンツを取得し、特定のカテゴリのトピックリストのサイドバーを埋めるために使用されます。トピックに移動しても表示されません。

はい、ありがとうございます!

皆さん、こんにちは!このコンポーネントに大きなアップデートをマージしました。主な変更点は以下の通りです。FEATURE: include tag sidebars, migrate to objects setting by awesomerobot · Pull Request #22 · discourse/discourse-topic-list-sidebars · GitHub

  • リストスタイルの設定がオブジェクト設定に移行されました。これにより、以下のことが可能になります。

既存の設定はアップデート時に自動的に移行されるはずです…ただし、スラッグがカテゴリ名と異なる場合は、手動で設定を更新する必要があります。

例えば、site-feedbackSite Feedback に正しく移行されますが、名前と一致しないスラッグ(例:Site Feedback のスラッグが site-feedback ではなく hamburgers である場合)を移行する方法はありません。

このテーマコンポーネントの名前を変更し、新しい状況を反映するためにタグサイドバーを非推奨にする可能性があります。

「いいね!」 5

タグの設定も自動的に移行されますか?

新しいセットアップでは、同じタグに対して異なるカテゴリで異なるサイドバーを設定できますか?競合はどのように解決されますか?

「いいね!」 2