J’essaie d’intégrer un fichier PGN dans un sujet. Cela nécessite d’inclure du CSS et du JavaScript dans le sujet. Quelqu’un pourrait-il s’il vous plaît m’aider à savoir comment utiliser le CSS et le JavaScript dans un sujet ?
Cela n’est pas possible dans Discourse. Qu’est-ce qu’un fichier PGN ? Pouvez-vous décrire votre objectif un peu plus clairement ?
PGN signifie Portable Game Notation. En général, tous les coups d’une partie d’échecs peuvent être exportés au format texte et lus à l’aide d’un lecteur PGN pour rejouer la partie.
Voici à quoi cela ressemble généralement :
[Event "Championnat du monde 28e"]
[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
Ce serait sûrement un plugin amusant ! Ajout de l’étiquette « pull request welcome » à ce sujet.
Serait-il possible de publier les notes de partie sur un site comme chess.com, puis d’utiliser le code d’intégration qu’ils fournissent pour votre site web ?
Pas seulement Chess.com.
Je peux jouer une partie sur n’importe quelle plateforme d’échecs en ligne. Je devrais pouvoir copier mon PGN et le publier sur mon forum.
Salut @codinghorror,
Cela serait vraiment génial d’avoir un tel plugin ![]()
Vous réalisez à quel point c’est niche ?
Cela ne devrait PAS être une fonctionnalité de Discourse. 98 % des forums ne l’utiliseront jamais.
Vous avez trois options :
- Le coder vous-même
- Engager quelqu’un pour le coder
- Utiliser la solution que j’ai proposée il y a 13 heures, qui résout votre problème
Salut @Monkey,
Oui, je reconnais que vous avez tout à fait raison.
Nous avons animé un forum très technique pendant 15 ans (unix, linux) et comptions de nombreux joueurs d’échecs parmi nos membres (moi y compris), mais personne ne s’intéressait aux échecs dans le forum (nous avons installé plusieurs plugins liés aux échecs au fil des ans).
Ce qui a le mieux fonctionné, c’était simplement que les membres intéressés par la pratique des échecs ou par les échecs en général se rencontrent sur l’un des excellents sites d’échecs en ligne qui existent.
Je peux donc confirmer que jouer aux échecs dans les forums constitue un très petit créneau, en raison de toutes les excellentes alternatives disponibles.
Intégrer du code provenant de l’un des sites d’échecs en ligne les plus populaires serait, je suis d’accord, une excellente approche à adopter.
Bonjour @neounix,
Vous animez un forum technique, et votre public n’est donc peut-être pas intéressé par les échecs. Je peux héberger un forum dédié au sport et aux jeux vidéo où se trouvent de nombreux joueurs et passionnés d’échecs qui passent beaucoup de temps à discuter et débattre des coups d’échecs. Cela dépend de qui constitue votre public cible. Il est très myope de vérifier et confirmer mes besoins alors que vous n’avez jamais animé de forum sportif, et votre vérification n’est donc pas valide par rapport à ma demande.
Bonjour @Monkey,
Il existe déjà de nombreux嵌ets (embeds) basés sur JavaScript pour héberger des PGN. Cependant, Discourse ne prend actuellement pas en charge les embeds JavaScript dans les publications ; seuls les embeds iFrame sont autorisés. Par conséquent, si Discourse est intéressé par la mise à disposition d’un plugin pour les PGN, je suis convaincu que cela attirera de nombreux forums axés sur le sport.
Je ne pense pas que les plugins liés aux échecs soient une fonctionnalité de niche, surtout si Discourse compte de nombreux forums sportifs et liés aux jeux vidéo dans sa liste de clients.
La solution que vous avez proposée nous permettra uniquement d’utiliser les flux de chess.com. Cela ne nous aidera pas à nous différencier, car de nombreux joueurs hébergeront simplement les énigmes quotidiennes de Chess.com. Votre suggestion n’est donc pas réellement une solution à mon problème.
Je suis un passionné d’échecs et j’essaie d’encourager un forum d’échecs finlandais à passer à Discourse. J’ai donc examiné cette question précise et j’ai fait quelques tests récemment. Ma recommandation principale est d’utiliser la fonctionnalité iframe intégrée de Discourse, comme quelqu’un l’a déjà mentionné. Il vous suffit de rechercher « iframes autorisées » dans les paramètres d’administration et d’ajouter chess.com, lichess.org et peut-être quelques autres sites à la liste blanche. Tous prennent en charge les iframes de leur côté. Un utilisateur peut alors copier et coller une chaîne comme :
iframe src="https://lichess.org/embed/jYSkjcuG?theme=auto&bg=auto" width=600 height=397 frameborder=0></iframe>
Une boîte très élégante est créée. Elle contient un échiquier et des flèches qui vous permettent de naviguer en avant et en arrière dans la partie. Si la source contient des commentaires, ils sont également affichés. Si le destinataire a vraiment besoin du fichier PGN, par exemple pour analyser la partie avec son moteur, il peut accéder au fichier sur le site source. Tout ce qu’il faut, c’est un peu d’éducation de vos utilisateurs, et ils l’adoreront.
Bonjour @rizka,
J’ai un cas très étrange ici,
Dans l’aperçu, je vois l’intégration iFrame. Cependant, lorsque j’enregistre le message, l’intégration iFrame n’est pas visible. Est-ce que je manque quelque chose ici ?
Capture d’écran après l’enregistrement du message :
Voyez-vous des erreurs dans la console de votre navigateur ? (peut-être liées à la CSP)
J’ai cette erreur :
Un cookie associé à une ressource inter-site sur https://lichess.org/ a été défini sans l'attribut `SameSite`. Il a été bloqué, car Chrome ne livre désormais les cookies avec des requêtes inter-site que s'ils sont définis avec `SameSite=None` et `Secure`. Vous pouvez consulter les cookies dans les outils de développement sous Application>Stockage>Cookies et voir plus de détails sur https://www.chromestatus.com/feature/5088147346030592 et https://www.chromestatus.com/feature/5633521622188032.
J’ai configuré les paramètres sur SameSite=None.
Mais cela ne fonctionne pas.
Je pense que le site que vous intégrez (https://lichess.org/) devrait ajouter ce paramètre au cookie (en supposant qu’ils souhaitent permettre à d’autres sites d’utiliser leurs cookies). Cela dit, je ne sais pas si l’iframe n’est pas affichée à cause de cela (généralement, les cookies servent pour les sessions ou les publicités, donc même si l’iframe n’a pas de session, je pense qu’elle se chargerait quand même).
Mise à jour
Il semble qu’ils autorisent.
De plus, vous pouvez voir l’aperçu, et si j’ajoute l’iframe ici sur Discourse Meta (directement dans le HTML, via l’inspecteur du navigateur), cela fonctionne, comme sur l’image ci-dessous :
Vous pourriez essayer de l’ajouter directement sur votre page en utilisant l’inspecteur du navigateur. Si cela ne fonctionne pas, cela pourrait être dû à une règle CSP ou à Discourse qui bloque les iframes (si c’est une règle CSP, vous devriez voir une erreur ou un avertissement dans la console du navigateur).
Ici sur Meta, si j’essaie d’inclure l’iframe, j’obtiens aussi un message vide (bien que je ne puisse même pas voir l’aperçu) :
<iframe src="https://lichess.org/tv/frame?theme=wood&bg=light" style="width: 400px; height: 444px;" allowtransparency="true" frameborder="0"></iframe>
Mise à jour 2
Le paramètre du site allowed_iframes pourrait être ce que vous cherchez (pour autoriser les iframes provenant de ce domaine) :
J’ai temporairement activé les iframes de lichess.org sur try.discourse.org afin que chacun puisse tester le comportement :
Cela restera actif jusqu’au réinitialisation quotidienne.
Cela rend mieux sur Firefox :
que sur Chrome :
Salut @supermathie,
Au lieu d’utiliser une intégration par iframe, j’ai un code JavaScript comme celui-ci :
<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>
Est-ce qu’un code comme celui-ci peut être utilisé pour intégrer des publications ? Beaucoup de mes utilisateurs préfèrent un simple copier-coller de tels scripts plutôt que de devoir aller sur un site tiers pour générer l’iframe.
Oui !
Il semble que vous soyez très près d’avoir tous les éléments nécessaires pour transformer cela en composant de thème (je pense que cela peut être fait avec un composant de thème, mais je ne suis pas très familier avec eux, donc ne prenez pas cela pour acquis).
La prochaine étape sera soit de le coder vous-même, soit d’embaucher quelqu’un pour faire le travail, comme l’a suggéré @Monkey.
(J’aimerais beaucoup m’attaquer à cela pour apprendre les composants de thème, mais je ne peux pas me libérer du temps pour le moment).
Oui, tu pourrais peut-être t’en inspirer en te basant sur un projet comme celui-ci :
Il y en a quelques-uns sur GitHub, mais c’est l’un des principaux.
Combine-le avec du BBCode personnalisé : Developer's guide to Markdown extensions
Il faut juste faire attention aux pièges liés à l’intégration dans le pipeline de rendu d’Ember…
@supermathie a raison : tu dois trouver un passionné prêt à apprendre les ficelles du métier et à consacrer du temps à l’implémentation, ou engager quelqu’un dans Marketplace.
Salut @merefield,
J’ai personnalisé mon thème pour inclure le script :
<link rel="stylesheet" type="text/css" href="https://pgn.chessbase.com/CBReplay.css" />
J’ai ajouté la feuille de style CSS “https://pgn.chessbase.com/CBReplay.css” à la liste blanche pour autoriser son utilisation dans les intégrations.
Lorsque je copie-colle le script dans mon message, la balise Div est ignorée et seul le texte s’affiche :
<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>
Dois-je faire autre chose pour utiliser ce script dans mes messages ? Je vous remercie de vos suggestions.
Je n’ai pas le temps de regarder cela pour le moment. Veuillez faire ce que je suggère.




