Resolverá o problema de eu ter que dizer à minha equipe de suporte que eles precisam primeiro criar um novo tópico, depois salvá-lo, depois olhar o URL e obter o ID #, depois voltar e editar o tópico para colocar o # manualmente no corpo.
Para onde vai esse ticket/bug? O ID está na URL; lá ele é persistente e nunca está errado. Como ajuda ter o ID do tópico no texto do tópico? E, como você aponta, se estiver no corpo da mensagem, qualquer um pode mudar, apagar ou digitar errado.
Algo está usando o ID do tópico? Se sim, o quê e como?
Será mais fácil criar um componente personalizado que anexe isso às postagens corretas em vez de preencher um modelo.
Se você editar o código do seu tema em admin > temas e componentes… e adicionar isso à aba JS, isso deve lhe dar o que você procura com alguns ajustes:
import { apiInitializer } from "discourse/lib/api";
import Component from "@glimmer/component";
class TopicIdentifier extends Component {
get topicId() {
return this.args.post?.topic?.id;
}
get shouldShow() {
const firstPost = this.args.post?.post_number === 1; // primeira postagem no tópico
const desiredCategories = [45, 3]; // uma lista separada por vírgulas de IDs de categoria onde você deseja que isso apareça
const isInCategory = desiredCategories.includes(
this.args.post?.topic.category.id
);
return firstPost && isInCategory;
}
<template>
{{#if this.shouldShow}}
<!-- você pode editar o conteúdo abaixo, {{this.topicId}} é onde o ID do tópico será preenchido -->
Este tópico tem o ID
{{this.topicId}}
<!-- você pode editar o conteúdo acima -->
{{/if}}
</template>
}
export default apiInitializer((api) => {
api.decorateCookedElement((element, helper) => {
const wrapper = document.createElement("div");
wrapper.className = "custom-topic-id"
helper?.renderGlimmer(
wrapper,
<template><TopicIdentifier @post={{helper.model}} /></template>
);
element.appendChild(wrapper);
});
});
Você pode encontrar o ID da categoria a partir de sua URL para configurar desiredCategories, por exemplo, a categoria suporte aqui no Meta tem o ID 6
Você pode adicionar CSS para estilizar isso como desejar com a aba CSS… por exemplo
Eles podem simplesmente digitar /t/138 e não precisar pesquisar. Mas se você estivesse falando com uma pessoa, dizer “procure pelo bug sobre ‘algumas palavras que eles conhecem’” faria mais sentido para usar em uma conversa do que um número?
E essa seria minha outra sugestão.
Acho que eu teria usado renderInOutlet em vez de decorateCookedElement, mas isso é provavelmente porque eu não entendo completamente decorateCookedElement.
Mas isso não permitirá que você pesquise um bug/tópico por topic_id.
Mas eu quero pesquisar. É mais fácil.
Vá para o site, depois anexe /t/id ao URL no topo da janela VS vá para o site e digite ID no campo de pesquisa que está bem no centro da página.
Se eu estiver falando com uma pessoa, ou digitando uma mensagem, sim, um número é mais conciso e menos propenso a erros do que “Pesquise pelo título exato que pode ter 5 palavras de comprimento”
Vou investigar isso, mas se isso impedir o uso em um campo de pesquisa, então não funcionará para mim.
Eu realmente amo o Discourse, e recebi MUITO feedback e ajuda úteis de todos aqui.
O que eu não entendo é que ocasionalmente as pessoas me dizem que “Você não deveria fazer isso dessa maneira porque esta maneira é melhor.” Bem, não, esta maneira é melhor para você, mas aquela maneira é melhor para mim. E nenhuma delas está errada.
Sim, então não se incomode, infelizmente ele apenas anexa conteúdo ao tópico quando é renderizado… ele não o adiciona ao banco de dados para torná-lo pesquisável. Acho que, no final, você precisaria de um plugin personalizado ou um script personalizado adicionado a Discourse Automation para que seja totalmente automático.
Pesquisar por ID de tópico ou incluí-lo em um modelo não é uma solicitação comum, portanto, não é algo que suportamos nativamente.
Acho que é que os usuários regulares aqui sabem que não é um recurso que temos atualmente, então estamos tentando apoiá-lo descobrindo algumas soluções alternativas potenciais.
E muitas vezes, se você voltar, pode encontrar uma solução melhor.
Se você realmente quiser incorporar o ID do tópico no texto para poder encontrá-lo na pesquisa, você precisaria de um plugin e ele poderia adicionar ticket123 ao texto bruto (acho que a pesquisa verifica o texto bruto?). O ID do tópico não existe antes de você criar o tópico, então você não pode inseri-lo quando o cria.
Ah! Talvez o que você queira seja um plugin que adicione uma tag bug123 quando um tópico em uma categoria de bug for criado. Então você poderia se referir a ele como #bug123 e ele seria vinculado em qualquer lugar que você o mencionasse e seria possível pesquisar. Se você estiver auto-hospedado ou na versão enterprise, isso não seria muito difícil. Imagino que alguém no Marketplace faria isso por US$ 250 a US$ 500.
Ou, se você quiser poder “pesquisar” um bug por número, você poderia adicionar um componente de tema que permitisse digitá-lo em uma “caixa de bug” e ir direto para lá. Talvez essa seja uma solução que funcione e não exija um plugin.
O que eu acabei obtendo foi uma exibição mais discreta do ID do tópico. Ele ainda não é pesquisável, mas vou me contentar com isso até que o que eu realmente preciso se torne realidade.
É um exemplo trivial de inserção de um componente. Assim, você adicionaria algum código antes de <template> para obter o ID do tópico e a lógica para exibir ou não.
Acho que você pode querer topic-list-before-link como o plugin outlet.
Isso só funciona para este tópico, tente um aleatório diferente. Tente pesquisar por “one two four two four zero”, esse é o ID do tópico de banners de tag.
Você quer dizer topic:124240? A palavra de preenchimento (‘olá’) foi apenas um exemplo. No caso de Banners de Tag, ‘oi’ funciona. Talvez se você tiver uma palavra comum em tickets de suporte, ou apenas uma palavra comum em geral, você possa tentar isso?
Além disso, se o que você quer fazer é “procurar” um ID de tópico, então você poderia provavelmente criar um componente que aceitasse um ID de tópico e então apenas pulasse para esse tópico.