Fazer o Banner de Tag também aparecer nas páginas de tópicos marcados

Olá a todos

Gostaria de saber se é possível ter um formulário em cada tópico onde, no topo do tópico, eu tenha os detalhes necessários de um cliente, digamos, como uma tag.

Este formulário poderia ser adicionado em mais de um tópico e mostrar os detalhes do cliente, digamos,

sem ter que criar uma categoria, já que criamos categorias com base em outros critérios, ou qualquer outra solução que me ajude a mostrar automaticamente os detalhes de um cliente em mais de um tópico e categoria?

Eu não acho que exista uma funcionalidade existente para isso. Você provavelmente teria que usar um plugin.

No entanto, eu posso estar enganado. Você poderia elaborar mais sobre isso? Obrigado.

qual plugin poderia me ajudar a construir este fluxo de trabalho?

Olá, você poderia elaborar mais sobre sua pergunta original? Eu posso estar entendendo mal.

Acho que você pode ter que fazer algo personalizado, mas é difícil dizer com certeza sem mais detalhes.

O que você está procurando é um formulário na postagem do tópico e que adiciona tags ao tópico com base no conteúdo do formulário? Porque, nesse caso, você talvez consiga resolver com um Componente de Tema.

Se entendi corretamente a sua pergunta, parece que você usa uma tag para cada cliente e deseja que uma descrição estendida do cliente apareça ao visualizar qualquer tópico que tenha essa tag.

Não é exatamente um formulário, mas o componente Tag Banners, como visto aqui no Meta, pode te levar até a metade do caminho:

Com este componente instalado, você pode adicionar uma descrição de texto para cada tag que aparecerá em um banner exibido quando a própria tag for selecionada. O campo de texto aceita HTML e pode ser estilizado com CSS personalizado, então você poderia fazer bastante coisa com ele, mas aqui está um exemplo bem simples onde estou editando uma tag:

O desafio seria alterar este componente para que ele apareça não apenas na página da tag, mas em cada tópico que usa essa tag. Eu não sei o quanto de trabalho isso daria, mas um programador mais experiente (como o Nate…) pode ter alguma ideia.

2 curtidas

Obrigado @toddz, isso ajudou muito, é o que eu precisava

bem, "@NateDhaliwal o banner de tag vai me ajudar muito, mas agora minha pergunta é:

Como fazê-lo aparecer no próprio tópico, onde, quando eu adiciono a tag, os detalhes aparecem no topo do tópico"

:+1: Ok, como entendi sua pergunta, vou editar o título deste tópico para que talvez mais pessoas o vejam.

Eu imagino que exigiria fazer um fork (bifurcação) do componente para criar uma nova versão, descobrir o que aciona a exibição do banner na página da tag e mudar isso para que também seja acionado quando os tópicos com tags forem visualizados.

Você pode ter sorte e alguém achar que isso parece divertido – caso contrário, você pode precisar descobrir um orçamento de projeto e postar uma solicitação no Marketplace.

2 curtidas

Estou verificando se isso é possível, experimentando com isso em um fork. Mas sem promessas!

@Eman_Ahmed Eu adicionei isto neste fork:

Ele pega a primeira tag do tópico e a exibe. Controlado pela configuração show on topics (mostrar nos tópicos). Se não houver tags, o banner é ocultado.

2 curtidas

Muito legal da sua parte assumir isso, Nate. Eu não tenho a necessidade disso para mim, mas estava animado para experimentar. Funciona muito bem!

No entanto, percebo um problema quando há várias tags em um tópico. (E é difícil imaginar gerenciar as coisas com apenas uma tag por tópico.)

As tags são classificadas em ordem alfabética ou por popularidade…

image

…então o autor não tem controle direto sobre qual tag aparece primeiro.

Eu pensei que usar um caractere não alfabético para iniciar as tags do cliente (~NomeDoCliente) sempre a colocaria no início da lista. Isso funciona na página /tags – mas não em um tópico, onde a lista de tags simplesmente ignora o caractere ~. :face_with_diagonal_mouth:

Em um tópico do ano passado, parece que certos caracteres não alfabéticos podiam ser inseridos de forma invisível para forçar a ordenação: Invisible way to force display order of tags? mas parece que isso não funciona mais. Quando crio uma tag hoje com um apóstrofo ou vírgula, ela é rejeitada ou removida silenciosamente. (Não tenho certeza por que ~ é aceito.)

A configuração de ordenação de tags mostrada acima afeta tanto a página /tags quanto a lista de tags nos tópicos – mas acho que eles devem usar um algoritmo alfabético diferente?

Hmm… Eu suponho que realmente depende do que o OP deseja fazer. Se houver 1 tag → 1 tópico → 1 usuário, então isso funcionaria. Caso contrário, haverá necessidade de mais informações :person_shrugging:.

1 curtida

Obrigado pela sua contribuição!

Gostaria de saber se isso poderia ser adicionado à lista oficial de atualização de recursos.

Sinto que também tenho cenários onde isso seria muito adequado para usar.

Hmm… Não tenho certeza se isso está totalmente alinhado com o conceito principal de um ‘tag banner’, já que ele deveria exibir informações da tag na página da tag, mas isso exibe as informações da tag em tópicos com a tag :person_shrugging:.

Em uma nota separada, houve algumas atualizações no componente principal, então precisarei tentar atualizar o fork também, mas observe que o fork é apenas para ser uma prova de conceito.

2 curtidas

Sim, eu não sei se seria útil o suficiente para adicionar os recursos ao plugin original. Uma versão separada ou um complemento chamado “Tagged Topic Banner” pode ser mais apropriado.

Mas eu acho que a utilidade é bem limitada, a menos que haja também alguma maneira para o autor especificar qual tag será a principal. As únicas coisas que consigo pensar são…

1.) Um truque como fazer a ordenação alfabética tratar um caractere como ~ como o topo da lista.

AskBot sugeriu uma abordagem para um monkey-patch de plugin
# plugin.rb
after_initialize do
  module ::CustomTagSort
    def custom_tag_sort(tags)
      tags.sort_by do |tag|
        # Coloca as tags prefixadas com ~ primeiro, depois ordena A-Z
        [tag.name.start_with?("~") ? 0 : 1, tag.name.downcase]
      end
    end
  end

  # Aplica o patch no serializador/método que calcula visible_tags ou similar
  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.) Ainda melhor: ordenar tags por uma ordem especificada de grupos de tags.

Pesquisando, encontrei vários tópicos solicitando mais controle sobre a ordem das tags, já que isso muitas vezes importa por várias razões (gênero → espécie, marca → modelo, etc.) – mas as respostas sugerem que seria um bom trabalho.

1 curtida