O componente TOC gera os atributos id dos elementos de cabeçalho com base no texto do cabeçalho.
Aqui está um cabeçalho como exemplo.
main outlet
O espaçamento vem dos estilos aplicados a #main-outlet, que é um elemento do aplicativo Discourse e não tem nada a ver com esta postagem.
Isso não é o fim do mundo se eu pudesse especificar um id alternativo para o cabeçalho. O componente TOC suporta isso:
https://github.com/discourse/DiscoTOC/blob/master/common/header.html#L293
Infelizmente, o Discourse remove os atributos id dos elementos da postagem antes que o código acima seja executado, o que impede essa lógica.
Aqui está um cabeçalho que usa <h4 id="alt-main-outlet">main outlet</h4>:
main outlet
Note que ele ainda usa main-outlet em vez de alt-main-outlet.
Acho que o Discourse faz isso na expectativa de que alguém tente manipular um elemento da página. Mas com o componente TOC, é fácil contornar isso.
Se houver uma solução para isso ou se for um problema bem discutido que eu tenha perdido, peço desculpas pelas opiniões não solicitadas que seguem ![]()
P.S.
Pessoalmente, acho que o Discourse NÃO deve remover os atributos id dos elementos. Isso é uma construção fundamental de páginas web e é usado na navegação da página com fragmentos de URL. Se alguém quiser criar um link para um elemento em uma postagem, acho que isso é um direito do autor.
O fato de o TOC permitir a manipulação de IDs sugere que essa medida de remover IDs desde o início pode, potencialmente, ser descartada.
Se a equipe do Discourse está tão preocupada com o sequestro de IDs, todos os IDs do Discourse deveriam ter um prefixo, por exemplo, discourse-main-outlet, e a remoção de IDs deveria ser aplicada apenas a esses IDs com prefixo.
Posso entender a impossibilidade disso, dado o código existente!
É possível imaginar um conjunto de IDs excluídos (por exemplo, main-outlet, etc.) que são removidos. Isso ainda deixa o problema do TOC ser usado para contornar essa proteção, mas pelo menos permitiria que os autores criassem âncoras úteis.
P.P.S.
Diretamente relacionado a isso está o problema de cabeçalhos com o mesmo conteúdo de texto.
Tópico Um
Exemplos
Tópico Dois
Exemplos
Com o TOC, ambos os cabeçalhos Exemplos recebem o mesmo ID, o que é obviamente bastante problemático. O TOC poderia adicionar índices incrementais (por exemplo, examples, examples-2, etc.) — e provavelmente deveria fazer isso como padrão — mas seria ainda melhor uma solução para o problema discutido acima, que permite aos autores decidir como descrever seu conteúdo. Por exemplo, <h5 id="topic-one-examples">Exemplos</h5>, etc.