右サイドバーブロック

|||
-|-|-|
:discourse2: | 概要 | Right Sidebar Blocks は、設定可能なブロックリストを持つトピックリストの右側にサイドバーを表示します。
| :eyeglasses: | プレビュー | Discourse Theme Creator でプレビュー
:hammer_and_wrench: | リポジトリリンク | https://github.com/discourse/discourse-right-sidebar-blocks
:open_book:|Discourse テーマ初心者ですか?| Discourse テーマ使用の初心者ガイド

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

機能

コンポーネントには、サイドバーに表示できるいくつかのブロックが含まれています。

  • popular-tags
  • top-contributors
  • recent-replies
  • category-topics
  • custom-html
  • category-list
  • subcategory-list
  • upcoming-events-list*
  • minimal-gamification-leaderboard**

:information_source: ユーザーディレクトリが有効になっていないと、トップコントリビューターリストは表示されません。リストが空白の場合は、管理者設定で enable user directory を検索して有効になっていることを確認してください。
* カレンダー プラグインと組み合わせて使用する場合のみ利用可能です。
** ゲーミフィケーション プラグインと組み合わせて使用する場合のみ利用可能です。

他の Ember コンポーネントをブロックとして使用することもできます。正しい名前を使用するだけです。たとえば、コアには signup-cta という Ember コンポーネントが含まれており、サイドバーでそのまま使用できます。パラメータのセットを期待するコンポーネントは使用できませんが、別のテーマで独自の Ember コンポーネントをビルドし、サイドバーの blocks 設定で名前だけで参照することは可能です。

提供されたブロックの一部の機能は、パラメータを通じて制御できます。

名前 説明 デフォルト 利用可能
count 結果の数を制限します 様々 数値 custom-html 以外すべて
excerptLimit 各返信の抜粋の長さを制限します 150 数値 recent-replies
id カテゴリID カテゴリID (category-list はカンマ区切りを使用) category-topics, category-list
content 表示するコンテンツ html custom-html
scopeToCategory カテゴリまたはサブカテゴリ X にのみ表示 カテゴリID popular-tags
excludedTags 除外するタグのリスト タグ名 popular-tags
displayInSpecificCategories ウィジェットを表示するカテゴリのリスト すべて カンマ区切りの数値 popular-tags
id リーダーボードID 数値 minimal-gamification-leaderboard
tag 表示するタグ タグID tag-topics
period トップトピックの時間範囲 weekly all, yearly, quarterly, monthly, weekly, daily top-topics
title ブロックのタイトル 様々 文字列 tag-topics, category-list, top-contributors
excludedGroupNames 指定されたグループを除外します グループ名 top-contributors
order コントリビューターの順序 文字列 (likes_received または likes_given) top-contributors
period トップコントリビューターの時間範囲 yearly all, yearly, quarterly, monthly, weekly, daily top-contributors
upcomingDays 指定された値より前に開始されたイベント 180 数値 upcoming-events-list
timeFormat イベントの日時フォーマット LT momentjs フォーマット upcoming-events-list

設定

名前 説明
blocks
show in routes 上級ユーザーのみ: サイドバーを選択したルートに制限します。
例: discovery.latest, discovery.unread, discovery.new, discovery.top, tag.show, “c/category-slug” (カテゴリの場合), “tag/sample-tag” (タグの場合)。
空の場合、サイドバーはすべてのリストルートに表示されます。

blocks: 表示するブロックを選択し、その順序を調整します。

show_in_routes: サイドバーを表示するトピックリストルートを決定します。デフォルトでは、/categories を除くすべてのディスカバリールートに表示されます。

翻訳 デフォルト
top_contributors.heading トップコントリビューター
top_contributors.view_all すべて表示
popular_tags.heading 人気タグ
popular_tags.view_all すべて表示
recent_replies.heading 最近の返信
subcategory_list.heading サブカテゴリ
top_topics.heading トップトピック
category_list.heading カテゴリ

スクリーンショット

コンポーネントには非常に基本的なスタイルしか付属していないことに注意してください。管理者がコンポーネントを使用する際に、独自のテーマで独自のスタイルを追加することが想定されています。

インタラクション

Discourse Calendar プラグインと組み合わせて使用すると、今後のイベントのサイドバーブロックを追加できます。ブロック名は upcoming-events-list で、日付フォーマットは この構文 に従ってカスタマイズできます (例: MMMM D, YYYY)。

:discourse2: ホスティングは弊社でご利用ですか? テーマコンポーネントは、Standard、Business、Enterprise プランでご利用いただけます。

「いいね!」 60

カスタムHTMLを使用する場合、「name」パラメータに何を追加すればよいですか?

「いいね!」 1

素晴らしい#公式テーマコンポーネントとしてこれを見ることができて嬉しいです!確かに、カスタマイズの新しい世界が開かれます。

2つの質問があります。

  1. サイドバーで、category-topics が表示する方法と同様に、/latest トピックリストを表示したいのですが、可能でしょうか? recent-replies はそれに近いですが(特に抜粋が非表示の場合)、返信のないトピックも表示したいのです。

  2. サイドブロックを特定のカテゴリでのみ表示することは可能ですか?つまり、表示されるルートはカテゴリトピックリストのみで、指定したカテゴリのみに限定されるということです。

「いいね!」 1

申し訳ありませんが、このドキュメントは不十分でした(すぐに更新します)。custom-html のパラメータ名は content です。

/latest リスト全体に対応する既製のものは提供していませんが、自分で構築して、その名前を使用して設定に追加することができます。カテゴリ/タグリストと非常によく似ていますが、フィルタリングはありません。

現在のところ、特定のカテゴリにのみ表示することはできません。ただし、show in routes 設定で discovery.category を使用することはできます。これにより、サイドバーはカテゴリのルートにのみ表示されます(ただし、サブセットではなく、すべてのカテゴリに表示されます)。

「いいね!」 3

ありがとうございます。各トピックにもサイドバーを含めることは可能でしょうか?

「いいね!」 4

コンポーネントの制限事項、特に category-topics および subcategory-list ブロックに関して、どちらかのタイプで 異なる id を持つ複数のブロックを追加すると、常に起動エディタ(推測ですが)で最上位のブロックのトピック/サブカテゴリが表示されるという制限事項に気づきました。

現在発生しているバグの1つは、subcategory-list ブロックを10〜12回ほど操作した後、ステージングサイトに表示されなくなったことです(以下の動画を参照)。

「いいね!」 2

subcategory-list ブロックはパラメーターを一切受け付けません。使用すると、現在どのカテゴリに移動したかに基づいて現在のカテゴリのサブカテゴリが表示されるため、このブロックを複数回使用しても意味がありません。

それが、subcategory-list が動画に表示されない理由でもあります。カテゴリ以外のルートにいる場合、そのブロックは表示されません。

category-topics については、動画で同じ ID 7 が 2 回使用されているのを確認しました。ローカルでテストしたところ、異なる ID を使用すると異なるトピックが表示されるため(つまり、報告されたバグを再現できませんでした)。

「いいね!」 4

こんにちは、この素晴らしいプラグインに心から感謝いたします!

サブカテゴリリストのサイドバーについて質問があります。特定のカテゴリに対してのみ表示するオプションはありますか?

開発者たちに確認してもらったところ、subcategory-list にはパラメータIDのサポートがないようです。追加していただけますでしょうか?

「いいね!」 2

そして、top-contributorsブロックについてですが、1週間の結果を取得する方法はありますか?

「いいね!」 2

現在、そのオプションはありません。追加するのは理にかなっていますが、複数のIDをサポートして、カテゴリのリスト(例:A、B、C)に対してブロックを表示できるようにする必要があると思います。開発者が追加できると考えている場合、リポジトリへのPRを喜んでレビューします。そうでなければ、テーマコンポーネントの「nice-to-haves」リストに追加できます。

a) 結果を取得して1週間キャッシュすること、またはb) 読み込みごとに過去1週間のトップ貢献者を取得することのどちらかを意味しますか?後者は簡単に追加できますが、キャッシュは少しトリッキーです。

「いいね!」 3

@pmusaraj popular-tags に

padding: 3px 4px 3px 4px

を追加していただけますか?

よろしくお願いします。

「いいね!」 1

Hi @pmusaraj、ご返信ありがとうございます!

開発者がPRをここに共有しました。ご確認ください:Implement the `displayInCategories` parameter which allows to specify a list of categories where the `subcategories-list` block is displayed by d521bb85 · Pull Request #10 · discourse/discourse-right-sidebar-blocks · GitHub

後者のバリアントが完璧です!実際に過去1週間のトップ貢献者のリストを表示する必要があります。本当にありがとうございます!

「いいね!」 4

コンポーネントには意図的にスタイルがほとんど適用されていません。これにより、消費者は独自のテーマやテーマコンポーネントで独自のスタイルを追加できます。

ありがとうございます。その PR は素晴らしいもので、すでにマージされました!

また、トップコントリビューターブロックの設定可能性についても、まもなく作業します(または、誰かが私より早く作業した場合、PR のレビューを喜んで行います)。

「いいね!」 3

コードの場所がわかりません。教えていただけますか?カテゴリトピックを変更して、IDがない場合にすべてのカテゴリ(したがって事実上/latestリスト)を取得できるようにしたいです。

すべてのブロックにそれがあると素晴らしいでしょう!

「いいね!」 2

@pmusaraj 素晴らしい!ご協力いただきありがとうございます。トップコントリビューターブロックを使うのを楽しみにしています :slight_smile:

「いいね!」 1

こんにちは!このコンポーネントがエラーの原因かどうかはわかりませんが、無効にするとエラーは発生しなくなります。:thinking: 問題を特定するのを手伝ってもらえませんか?とても感謝します。

有効にすると、デスクトップで特定のトピックにアクセスし、ホームページに戻ろうとしてヘッダーのサイトロゴをクリックすると、決して消えない読み込み画面が表示され、ブラウザのコンソールにエラーが発生します(下記参照)。mysite/logs パスに関連するエラーログは表示されません。

d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe:98 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'findFiltered')
    at new CategoryTopics (d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe:98:18)
    at h.createComponent (base-component-manager.js:37:1)
    at h.createComponent (ember-component-manager.js:54:1)
    at C.create (manager.js:558:1)
    at Object.evaluate (runtime.js:3301:1)
    at Object.evaluate (runtime.js:1312:1)
    at Dt.evaluateSyscall (runtime.js:5232:1)
    at Dt.evaluateInner (runtime.js:5188:1)
    at Dt.evaluateOuter (runtime.js:5180:1)
    at Wt.next (runtime.js:6191:1)
    at Wt._execute (runtime.js:6175:1)
    at Wt.execute (runtime.js:6166:1)
    at qt.handleException (runtime.js:5369:1)
    at Kt.handleException (runtime.js:5605:1)
    at Lt.throw (runtime.js:5302:1)
    at Be.evaluate (runtime.js:2580:1)
    at Lt._execute (runtime.js:5285:1)
    at Lt.execute (runtime.js:5266:1)
    at Ht.rerender (runtime.js:5634:1)
    at Er.render (index.js:7578:1)
    at index.js:7896:1
    at It (runtime.js:5074:1)
    at Rr._renderRoots (index.js:7876:1)
    at Rr._renderRootsTransaction (index.js:7928:1)
    at Rr._revalidate (index.js:7970:1)
    at invoke (backburner.js:351:1)
    at p.flush (backburner.js:241:1)
    at h.flush (backburner.js:447:1)
    at q._end (backburner.js:999:1)
    at _boundAutorunEnd (backburner.js:648:1)
CategoryTopics @ d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe:98
createComponent @ base-component-manager.js:37
createComponent @ ember-component-manager.js:54
create @ manager.js:558
(匿名) @ runtime.js:3301
evaluate @ runtime.js:1312
evaluateSyscall @ runtime.js:5232
evaluateInner @ runtime.js:5188
evaluateOuter @ runtime.js:5180
next @ runtime.js:6191
_execute @ runtime.js:6175
execute @ runtime.js:6166
handleException @ runtime.js:5369
handleException @ runtime.js:5605
throw @ runtime.js:5302
evaluate @ runtime.js:2580
_execute @ runtime.js:5285
execute @ runtime.js:5266
rerender @ runtime.js:5634
render @ index.js:7578
(匿名) @ index.js:7896
It @ runtime.js:5074
_renderRoots @ index.js:7876
_renderRootsTransaction @ index.js:7928
_revalidate @ index.js:7970
invoke @ backburner.js:351
flush @ backburner.js:241
flush @ backburner.js:447
_end @ backburner.js:999
_boundAutorunEnd @ backburner.js:648
Promise.then (非同期)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (非同期)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (非同期)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (非同期)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_ensureInstance @ backburner.js:1206
scheduleOnce @ backburner.js:845
k @ index.js:522
queueRerender @ mount-widget.js:124
scheduleRerender @ widget.js:319
rerenderResult @ widget.js:365
F @ hooks.js:207
(匿名) @ hooks.js:247
dispatch @ jquery.js:5430
_.handle @ jquery.js:5234
frame:251 You dismissed the flag, but third party cookies are disabled on your browser so the flag will come back the next time you visit the page.

エラーログの最初の行で言及されているJSファイルに、このコンポーネントに関する情報があります。

// d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe の 96-103 行目
      const filter = "c/" + categoryId;
      this.category = _category.default.findById(categoryId);
      this.store.findFiltered("topicList", {
        filter
      }).then(result => {
        const results = result.topic_list.topics;
        results.forEach(topic => {
          topic.url = "".concat((0, _getUrl.default)("/t/")).concat(topic.slug, "/").concat(topic.id);
「いいね!」 1

ああ、はい、申し訳ありませんでした。これは修正されましたので、テーマコンポーネントの最新アップデートをプルするだけです。

「いいね!」 3

ありがとうございます。正常に動作するようになりました。

「いいね!」 3

@pmusaraj さん、しつこく聞こえたら申し訳ありません。この実装に関するETA(おおよその所要時間)はありますでしょうか?

素晴らしい機能になると思います :slight_smile:

どうぞよろしくお願いいたします!

「いいね!」 3

この素晴らしいコンポーネントをありがとうございます!

これを有効にすると、ヘッダーとフッター全体がグローバルに消えてしまうことに気づきました(header.htmlとfooter.htmlのすべて)。これは意図したものでしたか?しかし、これを回避するために、PluginAPIを使用してヘッダー/フッターを手動で追加する必要があります。

「いいね!」 2