タグ付けされたトピックページにもタグバナーを表示させる

皆さん、こんにちは。

トピックの先頭に、クライアントの必要な詳細情報(タグとしましょう)を記載したフォームを各トピックに持たせることが可能かどうか知りたいです。

このフォームは複数のトピックに追加でき、クライアントの詳細情報を表示できます。例えば、

別の基準でカテゴリを作成しているため、カテゴリを作成することなく、

または、クライアントの詳細情報を複数のトピックやカテゴリに自動的に表示させるのに役立つ他の解決策はありますか?

これには既存の機能はないと思います。おそらくプラグインを使用する必要があります。

ただし、私の勘違いの可能性もあります。もう少し詳しく説明していただけますか?ありがとうございます。

このワークフローを構築するのに役立つプラグインはどれですか?

こんにちは、元の質問についてもう少し詳しく説明していただけますか?誤解しているかもしれません。

何かカスタムなことをする必要があるかもしれませんが、詳細がなければ断言するのは難しいです。

お探しのものは、トピック投稿内のフォームで、フォームの内容に基づいてトピックにタグを追加するものですか?その場合、テーマコンポーネント(Theme Component)で済むかもしれません。

もしあなたの質問を正しく理解しているなら、クライアントごとにタグを使用しており、そのタグを持つトピックを表示するときに拡張されたクライアントの説明を表示したい、ということのようです。

厳密には「フォーム」ではありませんが、ここでMetaで見られるTag Bannersコンポーネントが、その半分くらいは実現できるかもしれません。

このコンポーネントをインストールすると、各タグにテキストの説明を追加でき、その説明はタグ自体が選択されたときに表示されるバナーに表示されます。テキストフィールドはHTMLを受け入れ、カスタムCSSでスタイルを設定できるため、かなりのことができますが、タグを編集している場合の非常にシンプルな例を以下に示します。

課題は、このコンポーネントを変更して、タグページだけでなく、そのタグを使用しているすべてのトピックに表示されるようにすることです。どれくらいの作業が必要になるかはわかりませんが、より経験豊富なコーダー(Nateのような…)なら何かアイデアを持っているかもしれません。

「いいね!」 2

@toddzさん、ありがとうございました。大いに役立ちました。それが求めていたものです。

さて、「@NateDhaliwal、タグバナーは非常に役立ちますが、私の質問は次のとおりです。

タグを追加したときに、トピックの先頭に詳細が表示されるように、トピック自体に表示させるにはどうすればよいですか?」

:+1: 承知いたしました。ご質問を理解しましたので、このトピックのタイトルを編集して、より多くの人が見てくれるようにします。

コンポーネントをフォークして新しいバージョンを作成し、タグページでバナーが表示されるトリガーを特定し、それを変更してタグ付きトピックが表示されたときにもトリガーされるようにする必要があると思われます。

誰かがそれを楽しそうだと考えてくれる幸運に恵まれるかもしれませんが、そうでなければプロジェクトの予算を把握し、Marketplace でリクエストを投稿する必要があるかもしれません。

「いいね!」 2

これが可能かどうか確認中です。フォークで試しています。ただし、約束はできません!

@Eman_Ahmed これをこのフォークに追加しました:

これは最初のトピックタグを取得して表示します。設定 show on topics で制御されます。タグがない場合、バナーは非表示になります。

「いいね!」 2

Nate、これを引き受けてくれてとても素晴らしいです。私自身は必要ありませんが、試してみるのが楽しみでした。素晴らしい出来栄えです!

ただし、トピックに複数のタグがある場合に落とし穴があることに気づきました。(そして、トピックごとにタグが1つしかない状態で管理するのは想像しがたいです。)

タグはアルファベット順または人気順に並べ替えられます…

image

…そのため、作成者は最初に表示されるタグを直接制御できません。

クライアントタグ(~ClientName)の先頭にアルファベット以外の文字を使用すれば、常にリストの先頭に表示されるはずだと思いました。これは/tagsページでは機能しますが、トピックではタグリストが~文字を無視するため機能しません。:face_with_diagonal_mouth:

昨年のトピックでは、特定のアルファベット以外の文字を目に見えない形で挿入してタグの表示順を強制できるようだったようですが、タグの表示順を強制する目に見えない方法ですか?現在では機能しないようです。今日、アポストロフィやコンマを含むタグを作成すると、拒否されるかサイレントに削除されます。(~が受け入れられる理由はわかりません。)

上記のタグの並べ替え設定は、/tagsページとトピックのタグリストの両方に影響しますが、おそらく異なるアルファベット順のアルゴリズムを使用しているのでしょう。

うーん…結局のところ、OP(元の投稿者)が何をしたいかによりますね。タグが1つで、トピックが1つで、ユーザーが1人、という構成なら機能するでしょう。そうでなければ、もっと情報が必要になりますね :person_shrugging:

「いいね!」 1

ご協力ありがとうございます!

これが公式の機能アップデートリストに追加される可能性があるかどうか知りたいです。

私もこれが非常に適していると感じるシナリオがあります。

うーん…これは「タグバナー」の核となるコンセプトと完全には一致していないと思います。タグバナーはタグのページにタグ情報を表示することを意図していましたが、これはタグが付いたトピックにタグ情報を表示していますね :person_shrugging:

それはさておき、メインコンポーネントにいくつかの更新があったので、フォークも更新する必要があると思いますが、このフォークは概念実証(proof-of-concept)としてのみ意図されていることに注意してください。

「いいね!」 2

ええと、元のプラグインに機能を追加するほど広く役立つかどうかはわかりません。「Tagged Topic Banner」という名前の別のバージョンまたはアドオンの方が適切かもしれません。

しかし、作成者がどのタグをプライマリとして指定できる何らかの方法がない限り、その有用性はかなり限られていると思います。考えられるのは次のとおりです…

1.) ~ のような文字をリストの先頭として扱うようにアルファベット順ソートを変更するハック。

AskBot がプラグインのモンキーパッチのアプローチを提案しました
# plugin.rb
after_initialize do
  module ::CustomTagSort
    def custom_tag_sort(tags)
      tags.sort_by do |tag|
        # ~ で始まるタグを最初にして、次に A-Z でソート
        [tag.name.start_with?("~") ? 0 : 1, tag.name.downcase]
      end
    end
  end

  # visible_tags やそれに類するものを計算するシリアライザ/メソッドにパッチを適用
  require_dependency 'topic_tags_mixin'
  TopicTagsMixin.prepend(Module.new do
    private

    def all_tags
      return @tags if defined?(@tags)
      tags = topic.visible_tags(scope)
      if SiteSetting.tags_sort_alphabetically
        tags = ::CustomTagSort.custom_tag_sort(tags)
      else
        topic_count_column = Tag.topic_count_column(scope)
        tags = tags.sort_by { |tag| tag.public_send(topic_count_column) }.reverse
      end
      @tags = tags
    end
  end)
end

2.) さらに良いのは、タググループの指定された順序でタグを並べ替えることです。

検索してみると、タグの順序をより細かく制御したいという要望が多数見つかります。これは、さまざまな理由(属名 → 種名、メーカー → モデルなど)で重要になることが多いためですが、対応するにはかなりの作業が必要になるとの回答があります。

「いいね!」 1