従来の多階層ヒエラルキー対フラットなディスコースヒエラルキー

組織を、複数の階層レベルを持つ従来のフォーラムに戻さないように説得するのに苦労しています。そのようなフォーラムは、クリックして実行の苦痛に終わる傾向があります。詳しくは タグについて話す時が来ました をご覧ください。

検索ボックスに何も入力しなくても、タグだけで簡単に実現可能であることを証明するための材料が必要です。

以下の質問に回答していただけると幸いです。

私たちは、https://discuss.okfn.org の「ローカルグループ」カテゴリに匹敵する規模で世界中に拡大する「ローカルノード」サポーターネットワークを持っています。そこでは、すべての場所がサブカテゴリでカバーされています。これは、都市レベルまで降りていかない場合の正しい解決策です。しかし、私たちは都市レベルまで対応する必要があります。

私は以下のような構造を想定しています。

  1. カテゴリ: ローカルノード
  2. タグ: 大陸(これが意味をなすかどうかは議論の余地があります)
  3. サブカテゴリ: 国(国は視覚的に明確に表示されるべきであるため、大陸はタグとして扱います)
  4. タグ: 都市

タググループの階層構造を活用して、タグのみでナビゲーションすることは可能でしょうか。例えば:

  1. アジアから日本へタップ
    1. 大陸

  2. ヨーロッパからローマへタップ
    1. 大陸

    2. 都市

現在、ナビゲーションフィールドバーでこれをカバーする方法は見つかりません。また、トピックがサブカテゴリの名前と、そのサブカテゴリの親カテゴリの名前によって自動的にタグ付けされる方法も見つかりません。

以下のリソースは把握しています:

さらに(最初は :slight_smile:

  1. 「検索」がタグ検索に表示される方法とタイミング

  2. カテゴリ検索にタグ検索を統合する方法(右上に検索ボックスがあることは知っていますが、そこにはトピックもリストされています)

最終的には、「ローカルノード」カテゴリに世界地図を表示し、関心のある場所にズームインできるようにしたいと考えています。

Locations Plugin 🌍 で見られる地図、Data Explorer プラグイン https://meta.discourse.org/t/data-explorer-plugin/32566、および Custom Layouts プラグイン を活用し、Discourse カテゴリバナー に統合できることを願っています。

現在、私が把握しているのは以下のものです:

以下のような外観を想定しています:

少し考えてみました。以前は、3段階のカテゴリーシステムや、タグベースの異なるナビゲーションシステムを試したことがあります。

カテゴリー: ローカルノード
タグ: 大陸(妥当かどうかは検討が必要)
サブカテゴリー: 国(国はよく可視化する必要があるため、大陸はタグとして扱います)
タグ: 都市

本質的には、タググループに固有のタグドロップダウンが必要で、そのタググループはカテゴリーのコンテキストによって決定されるべきです(これにより、国というサブカテゴリーに対して異なる都市グループを柔軟に扱えます)。

トピックリスト以外の場所に地図を配置したり、投稿に埋め込んだりするについては、Locations プラグインには、カテゴリーページに挿入できるコンポーネント化された地図機能があります。

これら両方をテーマコンポーネントで実現することも可能です。もしそのようなコンポーネントの構築にお困りの場合は、ご自身で試す際のヒントをお伝えすることもできますし、Pavilion に依頼して作成してもらうこともできます。

フィードバックをいただき、本当にありがとうございます。地図以外の部分は、私たち自身で対応できるようです :smiley: ただし、テーマを好みに合わせてカスタマイズするには、少しコーディングが必要です。

このプロジェクトのロードマップを把握するために、以下の点についてご確認、修正、追加、または回答をお願いできますでしょうか。

  1. :question: ページサイズのみで制限される無限のタグドロップダウンを作成し、前のドロップダウンに基づいてタグを選択できるようにすること。
    @angus さん、原則としてこれが可能かどうかご確認いただけますか?
  2. :question: 最後の(3番目の)リストの2番目で求められているように、カテゴリ検索とタグ検索を統合することは可能でしょうか。
  3. :factory: OP で示されているようなタグ階層を確立すること。これは非常に基本的な要件であり、これがなければこのプロジェクトは失敗します。
  4. :factory: 自動タグ付けを導入すること
    1. :question: :arrow_forward: :factory: これは Topic auto tagging で示されているように、プラグインによる実装のみが可能でしょうか?
      :arrow_right: Tags: category restrictions, tag groups, relationships を参照
  5. :factory: 強化された Locations Plugin 🌍 - #429 の実装 :star_struck:

もしこの道を進むのであれば、この親切な申し出には必ずお返事します。

現時点ではそれは現実的ではありません。私たちのコミュニティは最初のステップを踏み出そうとしており、収益は非常に低い水準に留まる見込みです。さらに、私たちは非営利団体です。

これは Set up structured tagging with tag groups and category tag restrictions で回答されています。

原則的には、すべてが可能です。

例えば、以前はカテゴリレベルで複数のタグの交差もサポートする、3 段階のカテゴリ階層を実装したことがあります。

3 段階のカテゴリ階層とマルチタグ交差のルート構造
scope "/multi" do
  constraints(tag_id: /[^\/]+?/, format: /json|rss/) do
     get '/c/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_category_show'
     get '/c/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_parent_category_category_show'
     get '/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_grandparent_category_category_show'

     Discourse.filters.each do |filter|
       get "/c/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_category_show_#{filter}"
       get "/c/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_parent_category_category_show_#{filter}"
       get "/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_grandparent_category_category_show_#{filter}"
     end
   end
end

これはあなたがやりたいことよりも複雑かもしれませんが、それを維持するには、サポートのために非常に多くの時間やリソースを投入する覚悟が必要です。標準の Discourse が変更された時点で、いつか破綻する可能性が高いでしょう。

その文脈を踏まえて、標準の Discourse におけるカテゴリ/タグのルート構造について理解すべきことが 2 つあります。

  1. マルチタグの交差はサイト全体でのみ可能であり、カテゴリレベルでは不可能です。つまり、標準の Discourse には、特定のカテゴリに属し、かつ複数の特定のタグを持つトピックの一覧を表示するルートは存在しません。これを実現したい場合は、ルートを追加する必要があります。

  2. カテゴリ間の交差は不可能です。つまり、同じレベルの 2 つのカテゴリ(例えば 2 つの親カテゴリ、または 2 つの子カテゴリ)からトピックを表示するルートは Discourse には存在しません。

それでも、サーバーサイドでの大幅な追加を行わずに 4 段階のシステム(これがあなたの目標のようです)を実現することは可能です。

例えば、4 つのレベルをタグのみで表現することもできます。https://thepavilion.io/tags/intersection/events/bug/to-do/high は、Pavilion における events、bug、to-do、high の各タグの交差を表します。これらタグが属する 4 つのタググループごとに、以下のような 4 つのドロップダウンを用意することもできます。

[plugin] [type] [status] [importance]

既存の Discourse ルート構造内で階層をどう構成するかを決めれば、残りの項目はすべてクライアントサイドの変更であり、(比較的) straightforward です。

  1. 3 階層のカテゴリー階層

    例はありますか?どのような見た目になるのか、またコードはどこに追加されるのかがわかりません。
    grandparent_category はどこで、どのように導入されるのでしょうか?UX を通じてデフォルトでこれを行うツールはないためです。
    これは Pavilion と何か関係があるのでしょうか?ないですよね?上記のコードはカテゴリーのランディングページを変更するものですよね?

  2. マルチタグの交差は良さそうですが、それらは

    その場合、メインのナビゲーションルートとしてカテゴリーをスキップし、タグに基づいてカスタマイズされたランディングページを構築する必要があるかもしれません。これは Display tags by tag group - #22 by PackElend で私が尋ねたことです。
    カスタムテーマが必要になるのでしょうか?

  3. タグのみ

    はい、それが始める際のアイデアです。他のことは後で変更できます。
    適切なタグ付けを確保さえすれば、時間と忍耐次第で何が可能になるかは別として、実現可能ですよね?
    階層は以下のようになります。

    1. レベル:ローカルノード
    2. レベル:大陸
    3. レベル:国
    4. レベル:都市

    当初は、ローカルノード をカテゴリーとして、都市ごとにサブカテゴリーを使用する予定です。ノード数が増えすぎたら、ローカルノード に切り替える予定です。その際、タグベースのナビゲーションをより魅力的にする独自のテーマを作成する予定です(例えば、点 2 で述べたように、カテゴリーと同じボックスをタグにも適用するなど)。
    また、多くのカテゴリー/タググループで活用できる Locations Plugin で議論している今後の機能リクエストが実現することを願っています :angel:

    最も重要なのは、トピックの自動タグ付け をできるだけ早く導入することです。そうでないと、大規模な運用を開始する前に混乱を招くことになります。
    さらに、ナビゲーションバーに追加のドロップダウンボックスを導入し、選択に応じてタグで埋める必要があります。サブカテゴリーとタグ定義のドロップダウンボックスを混在させるのは大きな問題ではないと願っています。
    以下のレイアウトのようなものを簡単に実現できますか?

    1. ノード数が少ない場合のレイアウト
      image
    2. ノード数が多い場合のレイアウト
      image
  4. ボックスの統合
    最後になりますが、以下のようなボックスを統合できるでしょうか?

image

これは、私が以前述べた制限のいずれかに違反するため、機能しません。

カテゴリ内で 2 つのタグでフィルタリングすることはできません。

image

確実ではありませんが、おそらく「ローカルノード」カテゴリにいて「大陸」でフィルタリングしている場合、同時に「国」や「都市」でもフィルタリングできると想定されているようです。これも機能しません。

これが最も適切な選択だと思います。

カテゴリとしてローカルノードのみを使用し、都市ごとにサブカテゴリを設ける

現在のニーズに対して、将来の計画を過度に組み込もうとしているように思えます。

ノードが多くなりすぎたら、ローカルノードに切り替える

現在、適切な「構造」を設定したいというお気持ちは理解できますが、サービスの質がどれほど優れていても、この問題が実際に発生するまでには時間がかかります。つまり、数年はかかるでしょう。その時点では、コミュニティ運営の前提条件自体が変化しているはずです。

さらに、直面する問題は主に階層構造の問題ではなく、組織化の問題です。例えば、必要であれば、国別に都市のサブカテゴリを修正されたナビゲーションバーにグループ化することも可能です。「国家的」レベルでの議論を行いたい場合(そもそもそれが意味をなすかどうかは別として)、そのための独立したサブカテゴリを設けることもできます。

議論フォーラムの階層構造が、議論の中心となる場所の行政的な階層構造と厳密に一致する必要はありません。必要なのは、ユーザーが自分に関連するコンテンツを見つけられるような階層構造です。この 2 つの概念を結びつけようとしていることは理解できますが、それが本当に必要かどうかは疑問です。この関連性に過度に焦点を当てることは、フォーラム構造に関する考え方を不必要に複雑にしています。

要するに、10,000 フィートの上からの視点で見たサービスの理想の状態、つまり都市を国や大陸に分ける必要があるほど大規模に運営されるようになることを想定して、構造的にそれらを類似させようとするために、あまりにも多くのリソースを投入しているように思えます。もしその段階に達したとしても、この決定の性質は全く異なるものになっているはずです。

その通りです、私のミスでした。昨夜は詳細に迷い込んでしまいました。

[1] 追加のドロップダウンボックスを追加することは不可能なのでしょうか?
それによって何らかの形で「高度な検索」をシミュレートできるかもしれません。

同意します。私は、古い、深い構造化された思考を Discourse のアプローチと統合しようとしています。

しかし、それでもあなたが言ったように

必ずしも

なぜなら、非常に狭い地理的範囲に焦点を当てたプロジェクトに重点を置いているからです。
もちろん、特定のトピックには国家的または世界的な重要性があります。それをどのように調整し、適切な文脈に置き、Discourse の適切な場所に配置するかは、「実践を通じて学ぶ」べきことだと思われます。

もしタグのみに依存すると決めた場合、あなたの「タグの交差」アプローチが非常に役立つ可能性があります。
そのステップに進む前に、タグ交差 のランディングページを、カテゴリ のランディングページと何らかの形で同じ見た目になるようにカスタマイズする必要があります。それは可能でしょうか?
私は、https://se23.life/tags のレイアウトを、Higher level of granularity for category & subcategory styling - #7 by PackElend で示唆されているように、「サブタグ」で埋められたボックスを使用するように変更することを考えています(ただし、そこではサブカテゴリのボックスを改善するよう求めていました)。
さらに、ボックス内またはボックス内のタグをクリックすると、https://thepavilion.io/tags/intersection/tag1/tag2/tag3/... というクエリがトリガーされます。その結果は、ボックススタイル(または私たちが適切と考えるもの)と同じ形式でレンダリングされて表示されます。

ご覧の通り、私はまだ多段階ルートに囚われています。これは、グローバルからローカルスケールへズームインするのと同じアナロジーだからです。これは、新しいユーザーにとってローカルノードに到達するための最も自然なナビゲーションルートです。
あなたが正しいことが証明されることを願っています。

しかし、あるレベルがタグの多さで肥大化する懸念があるかもしれません。例えば、中国やアメリカのすべての都市をそれぞれ「中国」や「アメリカ」というサブカテゴリに含めると、ごちゃごちゃになる可能性があります。

同意しますが、私はおそらく

:grin: この発言は、深いレベルのアプローチを感情論から切り離すのに役立つでしょう。

これをもう少し詳しく説明していただけますか、あるいは例はありますか?
このナビゲーションバーのカスタマイズは、この投稿の最初で [1] とマークされたものと同じでしょうか?

私は、国家レベルと都市レベルが並存できないという前提に基づき、それぞれを「地域ノード」のサブカテゴリとする可能性のあるロードマップを視覚化したモックアップを作成しました。

  1. ランディングページはカテゴリ

  2. ランディングページはカテゴリですが、地域ノードがキノコのように湧き出る

  3. ランディングページはタグ、カスタムテーマがカテゴリのようなレイアウトを処理