Estou tentando incorporar um arquivo PGN em um tópico. Isso requer a inclusão de CSS e JavaScript no tópico. Alguém, por favor, poderia me ajudar a saber como usar CSS e JavaScript em um tópico?
Isso não é possível no Discourse. O que é um arquivo PGN? Você pode descrever seu objetivo um pouco mais claramente?
PGN significa Notação Portátil de Jogos. Geralmente, todos os movimentos de uma partida de xadrez podem ser exportados para formato de texto e lidos usando um leitor PGN, permitindo a reprodução da partida.
Geralmente, ele se parece com isto:
[Event "Campeonato Mundial 28º"]
[White "Spassky, Boris V"]
[Black "Fischer, Robert James"]
[Site "Reykjavik"]
[Result "1–0"]
[Date "1972.08.06"]
[WhiteElo "2660"]
[BlackElo "2785"]
1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Qb6 8. Qd2 Qxb2 9. Nb3 Qa3 10. Bxf6 gxf6 11. Be2 h5 12. 0-0 Nc6 13. Kh1 Bd7 14. Nb1 Qb4 15. Qe3 d5 16. exd5 Ne7 17. c4 Nf5 18. Qd3 h4 19. Bg4 Nd6 20. N1d2 f5 21. a3 Qb6 22. c5 Qb5 23. Qc3 fxg4 24. a4 h3 25. axb5 hxg2+ 26. Kxg2 Rh3 27. Qf6 Nf5 28. c6 Bc8 29. dxe6 fxe6 30. Rfe1 Be7 31. Rxe6
Com certeza seria um plugin divertido! Adicionando a tag “pull request welcome” a este tópico.
Seria possível você publicar as anotações do jogo em algo como o chess.com e, em seguida, usar o código de incorporação que eles fornecem para o seu site?
Não apenas no Chess.com.
Posso jogar em qualquer plataforma de xadrez online. Deveria ser possível copiar meu PGN e postar no meu fórum.
Ei @codinghorror,
Seria realmente incrível ter um plugin assim ![]()
Você percebe o quão nichado isso é?
Isso NÃO deveria ser um recurso do Discourse. Como 98% dos fóruns nunca o usarão.
Você tem 3 opções:
- Codifique você mesmo
- Contrate alguém para codificar
- Use a solução que forneci há 13 horas, que resolve seu problema
Olá @Monkey
Sim, percebo que você está certíssimo.
Fizemos um fórum muito técnico por 15 anos até agora (unix, linux) e tínhamos muitos jogadores de xadrez como membros (incluindo eu), e ninguém se interessava por xadrez nos fóruns (instalamos vários plugins relacionados ao xadrez ao longo dos anos).
O que funcionou melhor foi simplesmente ter membros interessados em jogar xadrez ou no xadrez em geral para se encontrarem em um dos grandes sites de xadrez online disponíveis.
Portanto, posso confirmar que isso é um nicho muito pequeno: jogar xadrez em fóruns; por causa de todas as grandes alternativas existentes.
Incorporar código de um dos sites de xadrez online mais populares seria uma ótima maneira de avançar, concordo.
Olá @neounix,
Você hospeda um fórum técnico e, portanto, seu público pode não ter interesse em xadrez.
Eu posso hospedar um Fórum de Esportes e Jogos onde há muitos jogadores e entusiastas de xadrez que passam bastante tempo discutindo e debatendo sobre lances de xadrez. Depende de quem é o seu público-alvo. É muito míope de sua parte verificar e confirmar sobre a minha necessidade, já que você nunca hospedou um fórum de esportes, e sua verificação não é válida em relação ao meu pedido.
Olá @Monkey,
Já existem muitas incorporações baseadas em JavaScript para hospedar um PGN. No entanto, o Discourse atualmente não suporta incorporações JavaScript em suas postagens; apenas incorporações em iFrame são permitidas. Portanto, se o Discourse estiver interessado em ter um plugin disponível para PGNs, tenho certeza de que isso atrairá muitos fóruns baseados em esportes.
Não acho que plugins relacionados ao xadrez sejam uma funcionalidade de nicho, se o Discourse tiver muitos fóruns relacionados a esportes e jogos em sua lista de clientes.
A solução que você forneceu permitirá apenas que usemos os streams do chess.com. No entanto, isso não nos ajudará a nos diferenciar, já que há muitos jogadores que simplesmente hospedam os puzzles diários do Chess.com. Portanto, sua sugestão não é realmente uma solução para o meu problema.
Sou um entusiasta de xadrez e tenho tentado incentivar um fórum finlandês de xadrez a migrar para o Discourse. Por isso, estive investigando exatamente essa questão e testando bastante recentemente. Minha principal recomendação é utilizar o recurso de iframe integrado do Discourse, como alguém já mencionou. Basta procurar por “iframes permitidos” nas configurações de administração e incluir chess.com, lichess.org e talvez alguns outros na lista de permissões. Todos eles suportam iframes em seus respectivos sites. Um usuário pode então copiar e colar uma string como:
iframe src="https://lichess.org/embed/jYSkjcuG?theme=auto&bg=auto" width=600 height=397 frameborder=0></iframe>
Isso cria uma caixa muito elegante. A caixa contém um tabuleiro de xadrez e setas que permitem navegar para frente e para trás no jogo. Se houver comentários na origem, eles também serão exibidos. Se o destinatário realmente precisar do arquivo PGN, por exemplo, para analisar o jogo com sua própria engine, ele poderá acessar o arquivo no site de origem. Tudo o que é necessário é educar um pouco seus usuários, e eles vão adorar.
Olá @rizka,
Tenho um caso muito estranho aqui,
Na pré-visualização, consigo ver o Embed do iFrame. Porém, ao salvar a postagem, o Embed do iFrame não aparece. Estou esquecendo de algo?
Captura de tela após salvar a postagem:
Você vê algum erro no console do seu navegador? (talvez relacionado ao CSP)
Tenho este erro:
Um cookie associado a um recurso de terceiros em https://lichess.org/ foi definido sem o atributo `SameSite`. Ele foi bloqueado, pois o Chrome agora só entrega cookies em solicitações de terceiros se forem definidos com `SameSite=None` e `Secure`. Você pode revisar os cookies nas ferramentas de desenvolvedor em Application>Storage>Cookies e ver mais detalhes em https://www.chromestatus.com/feature/5088147346030592 e https://www.chromestatus.com/feature/5633521622188032.
Configurei as definições para SameSite=None.
Mas isso não ajudou.
Acho que o site que você está incorporando (https://lichess.org/) deveria adicionar essa configuração ao cookie (supondo que eles queiram permitir que outros sites usem seus cookies). Dito isso, não sei se o iframe não é exibido por esse motivo (normalmente cookies são para sessões ou anúncios, então, mesmo que o iframe não tenha uma sessão, acho que ele ainda carregaria).
Atualização
Parece que eles permitem.
Além disso, você pode ver a pré-visualização, e se eu adicionar o iframe aqui no Discourse Meta (diretamente no HTML, através do inspetor do navegador), ele funciona, como na imagem abaixo:
Você pode tentar adicioná-lo diretamente na sua página, usando o inspetor do navegador. Se não funcionar, pode ser alguma regra de CSP ou o Discourse bloqueando iframes (se for CSP, você verá um erro ou aviso no console do navegador).
Aqui no Meta, se eu tentar incluir o iframe, também obtenho uma postagem em branco (embora eu nem consiga ver uma pré-visualização):
<iframe src="https://lichess.org/tv/frame?theme=wood&bg=light" style="width: 400px; height: 444px;" allowtransparency="true" frameborder="0"></iframe>
Atualização 2
A Configuração do Site allowed_iframes pode ser o que você procura (para permitir iframes desse domínio):
Habilitei temporariamente os iframes do lichess.org no try.discourse.org para que qualquer pessoa possa testar o comportamento lá:
Isso ficará ativo até a redefinição diária.
Fica melhor no Firefox:
do que no Chrome:
Olá @supermathie,
Em vez de usar um iframe Embed, tenho um código JavaScript como este:
<link rel="stylesheet" type="text/css" href="https://pgn.chessbase.com/CBReplay.css" />
<div class="cbreplay">
[Event "World Championship 28th"]
[White "Spassky, Boris V"]
[Black "Fischer, Robert James"]
[Site "Reykjavik"]
[Result "1–0"]
[Date "1972.08.06"]
[WhiteElo "2660"]
[BlackElo "2785"]
1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Qb6 8. Qd2 Qxb2 9. Nb3 Qa3 10. Bxf6 gxf6 11. Be2 h5 12. 0-0 Nc6 13. Kh1 Bd7 14. Nb1 Qb4 15. Qe3 d5 16. exd5 Ne7 17. c4 Nf5 18. Qd3 h4 19. Bg4 Nd6 20. N1d2 f5 21. a3 Qb6 22. c5 Qb5 23. Qc3 fxg4 24. a4 h3 25. axb5 hxg2+ 26. Kxg2 Rh3 27. Qf6 Nf5 28. c6 Bc8 29. dxe6 fxe6 30. Rfe1 Be7 31. Rxe6
</div>
É possível usar um código como este para incorporar em postagens? Muitos dos meus usuários preferem uma simples cópia e colagem desses scripts em vez de ir a um site de terceiros para gerar o iframe.
Sim!
Parece que você está muito perto de ter todas as peças necessárias para transformar isso em um componente de tema (acho que isso pode ser feito com um componente de tema, mas não estou super familiarizado com eles, então não leve isso como uma verdade absoluta).
O próximo passo será codificar você mesmo ou contratar alguém para fazer o trabalho, como sugeriu @Monkey.
(Gostaria muito de encarar isso para aprender sobre componentes de tema, mas não posso reservar tempo no momento).
Sim, você pode se basear em um projeto como este:
Existem alguns no GitHub, mas este é um dos principais.
Combine-o com BBCode personalizado: Developer's guide to Markdown extensions
Basta ficar atento a problemas relacionados à integração disso no pipeline de renderização do Ember…
@supermathie está correto — você precisa encontrar um entusiasta disposto a aprender os bastidores e dedicar tempo para implementar, ou contratar alguém no Marketplace
Olá @merefield,
Customizei meu tema para incluir o script:
<link rel="stylesheet" type="text/css" href="https://pgn.chessbase.com/CBReplay.css" />
Também adicionei o CSS “https://pgn.chessbase.com/CBReplay.css” à lista branca para permitir em Embeds.
No entanto, quando copio e colo o script em minha postagem, a tag Div está sendo ignorada e apenas o texto é exibido:
<div class="cbreplay">
[Event "World Championship 28th"]
[White "Spassky, Boris V"]
[Black "Fischer, Robert James"]
[Site "Reykjavik"]
[Result "1–0"]
[Date "1972.08.06"]
[WhiteElo "2660"]
[BlackElo "2785"]
1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Qb6 8. Qd2 Qxb2 9. Nb3 Qa3 10. Bxf6 gxf6 11. Be2 h5 12. 0-0 Nc6 13. Kh1 Bd7 14. Nb1 Qb4 15. Qe3 d5 16. exd5 Ne7 17. c4 Nf5 18. Qd3 h4 19. Bg4 Nd6 20. N1d2 f5 21. a3 Qb6 22. c5 Qb5 23. Qc3 fxg4 24. a4 h3 25. axb5 hxg2+ 26. Kxg2 Rh3 27. Qf6 Nf5 28. c6 Bc8 29. dxe6 fxe6 30. Rfe1 Be7 31. Rxe6
</div>
Preciso fazer algo mais para usar esse script em minhas postagens? Por favor, sugira.
Não tenho tempo para olhar isso agora. Por favor, faça como sugeri.




