Muss PGN (Schachpartie-Notierung) in einen Beitrag aufnehmen

Ich versuche, eine PGN-Datei in einem Thema einzubetten. Dafür müssen CSS und JavaScript in das Thema integriert werden. Kann mir jemand bitte helfen, wie man CSS und JavaScript in einem Thema verwenden kann?

5 „Gefällt mir“

This is not possible in Discourse. What is a PGN file, can you describe your goal a little more clearly?

4 „Gefällt mir“

PGN steht für Portable Game Notation. Im Allgemeinen können alle Züge einer Schachpartie in ein Textformat exportiert und mit einem PGN-Reader gelesen und die Schachpartie nachgespielt werden.
Es sieht im Allgemeinen so aus:

[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
4 „Gefällt mir“

Das wäre sicher ein lustiges Plugin! Ich füge das Label “Pull Request willkommen” zu diesem Thema hinzu.

5 „Gefällt mir“

Wäre es möglich, dass du die Spielnotizen auf einer Seite wie chess.com veröffentlichst und dann den dort bereitgestellten Embed-Code für deine Website einfügst?

6 „Gefällt mir“

Nicht nur bei Chess.com.
Ich kann ein Spiel auf jeder Online-Schachplattform spielen. Ich sollte in der Lage sein, mein PGN zu kopieren und in meinem Forum zu posten.

Hey @codinghorror,
Es wäre wirklich toll, ein solches Plugin zu haben :slight_smile:

2 „Gefällt mir“

Bist du dir bewusst, wie nischig das ist?
Das sollte KEINE Funktion von Discourse sein, da 98 % der Foren es niemals nutzen werden.

Du hast drei Möglichkeiten:

  • Selbst coden
  • Jemanden beauftragen, es zu coden
  • Die Lösung verwenden, die ich vor 13 Stunden bereitgestellt habe und die dein Problem löst
1 „Gefällt mir“

Hey @Monkey,

ja, ich gebe dir völlig recht.

Wir haben 15 Jahre lang ein sehr technisches Forum (Unix, Linux) betrieben und hatten viele Schachspieler als Mitglieder (mich eingeschlossen), doch niemand zeigte im Forum Interesse an Schach (wir haben im Laufe der Jahre mehrere schachbezogene Plugins installiert).

Am besten funktionierte es einfach, wenn sich Mitglieder, die Schach spielen oder sich allgemein für Schach interessieren, auf einer der großartigen Online-Schachseiten trafen.

Ich kann also bestätigen, dass das Spielen von Schach in Foren eine sehr kleine Nische ist – wegen der vielen großartigen Alternativen, die es gibt.

Das Einbetten von Code von einer der beliebtesten Online-Schachseiten wäre, da stimme ich dir zu, ein guter Weg nach vorn.

4 „Gefällt mir“

Hey @neounix,

Du betreibst ein technisches Forum, daher könnte dein Publikum vielleicht nicht an Schach interessiert sein. Ich kann ein Sport- und Gaming-Forum hosten, in dem es viele Schachspieler und Enthusiasten gibt, die viel Zeit damit verbringen, Schachzüge zu diskutieren und zu debattieren. Es kommt darauf an, wer deine Zielgruppe ist. Es ist so kurzsichtig, meine Anforderung zu überprüfen und zu bestätigen, da du noch nie ein Sportforum betrieben hast, und deine Überprüfung ist in Bezug auf meine Anfrage nicht gültig.

Hallo @Monkey,

Es gibt bereits viele JavaScript-basierte Embeds, um ein PGN zu hosten. Allerdings unterstützt Discourse derzeit keine JavaScript-Embeds in ihren Beiträgen; nur iFrame-Embeds sind erlaubt. Wenn Discourse also Interesse daran hat, ein Plugin für PGNs anzubieten, bin ich mir ziemlich sicher, dass dies viele Sportforen anziehen wird.
Ich glaube nicht, dass schachbezogene Plugins eine Nischenfunktion sind, wenn Discourse viele sport- und gamingbezogene Foren in seiner Kundenliste hat.

Die von dir bereitgestellte Lösung ermöglicht es uns lediglich, die Streams von chess.com zu nutzen. Das hilft uns jedoch nicht, uns zu differenzieren, da es viele Spieler gibt, die einfach die täglichen Rätsel von Chess.com hosten. Daher ist dein Vorschlag tatsächlich keine Lösung für mein Problem.

3 „Gefällt mir“

Ich bin Schachbegeistert und habe versucht, ein finnisches Schachforum dazu zu bewegen, auf Discourse umzusteigen. Daher habe ich mich kürzlich intensiv mit genau dieser Frage beschäftigt und selbst herumprobiert. Meine Top-Empfehlung ist die Nutzung der integrierten Iframe-Funktion von Discourse, wie bereits jemand erwähnt hat. Suchen Sie einfach in den Admin-Einstellungen nach „allowed iframes“ und fügen Sie chess.com, lichess.org und vielleicht einige weitere hinzu. Alle unterstützen Iframes auf ihrer Seite. Ein Benutzer kann dann einen String wie diesen kopieren und einfügen:

<iframe src="https://lichess.org/embed/jYSkjcuG?theme=auto&bg=auto" width=600 height=397 frameborder=0></iframe>

Dadurch wird eine wirklich praktische Box erstellt. Die Box enthält ein Schachbrett mit Pfeilen, mit denen man im Spiel vor- und zurück navigieren kann. Falls der Quellcode Kommentare enthält, werden diese ebenfalls angezeigt. Falls der Empfänger die PGN-Datei benötigt, zum Beispiel um das Spiel mit einer eigenen Engine zu analysieren, kann er auf die Datei auf der Quellseite zugreifen. Es reicht aus, die Benutzer ein wenig zu informieren, und sie werden es lieben.

6 „Gefällt mir“

Hallo @rizka,

ich habe hier einen sehr seltsamen Fall:


In der Vorschau kann ich das iFrame-Embed sehen. Wenn ich den Beitrag jedoch speichere, ist das iFrame-Embed nicht sichtbar. Habe ich etwas übersehen?
Screenshot nach dem Speichern des Beitrags:

Siehst du Fehler in der Browserkonsole? (vielleicht im Zusammenhang mit CSP)

Ich habe diesen Fehler:

Ein Cookie, das mit einer ressourcenübergreifenden Ressource unter https://lichess.org/ verknüpft ist, wurde ohne das Attribut `SameSite` festgelegt. Es wurde blockiert, da Chrome Cookies bei ressourcenübergreifenden Anfragen nur noch liefert, wenn sie mit `SameSite=None` und `Secure` festgelegt sind. Sie können Cookies in den Entwicklertools unter Anwendung>Speicher>Cookies überprüfen und weitere Details unter https://www.chromestatus.com/feature/5088147346030592 und https://www.chromestatus.com/feature/5633521622188032 einsehen.

Ich habe die Einstellungen auf SameSite=None gesetzt.
Das hilft jedoch nicht.

Ich denke, dass die von Ihnen eingebettete Website (https://lichess.org/) diese Einstellung zum Cookie hinzufügen sollte (vorausgesetzt, sie möchten, dass andere Websites ihre Cookies nutzen). Das heißt, ich weiß nicht, ob das iframe deswegen nicht angezeigt wird (normalerweise dienen Cookies Sitzungen oder Werbung, also selbst wenn das iframe keine Sitzung hat, sollte es dennoch geladen werden).

Update

Es scheint, dass sie dies zulassen.

Außerdem können Sie die Vorschau sehen. Wenn ich das iframe hier bei Discourse Meta hinzufüge (direkt im HTML über den Browser-Inspektor), funktioniert es, wie auf dem Bild unten zu sehen:

Sie könnten versuchen, es direkt auf Ihrer Seite hinzuzufügen, indem Sie den Browser-Inspektor verwenden. Wenn es nicht funktioniert, könnte es eine CSP-Regel oder eine Blockierung von iframes durch Discourse sein (bei CSP sollten Sie eine Fehlermeldung oder Warnung in der Browserkonsole sehen).

Hier auf Meta erhalte ich, wenn ich versuche, das iframe einzubinden, ebenfalls einen leeren Beitrag (obwohl ich nicht einmal eine Vorschau sehen kann):

<iframe src="https://lichess.org/tv/frame?theme=wood&bg=light" style="width: 400px; height: 444px;" allowtransparency="true" frameborder="0"></iframe>

Update 2

Die Site-Einstellung allowed_iframes könnte das sein, wonach Sie suchen (um iframes von dieser Domain zuzulassen):

Ich habe die Einbettung von lichess.org auf try.discourse.org vorübergehend aktiviert, damit jeder das Verhalten dort testen kann:

Dies bleibt bis zum täglichen Reset aktiv.

Sieht unter Firefox besser aus:

als unter Chrome:

5 „Gefällt mir“

Hey @supermathie,

Anstatt ein Iframe-Einbettung zu verwenden, habe ich folgenden JavaScript-Code:

<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>

Kann ein solcher Code in Beiträgen eingebettet werden? Viele meiner Benutzer bevorzugen ein einfaches Kopieren und Einfügen solcher Skripte, anstatt auf eine Website eines Drittanbieters zu wechseln, um das Iframe zu generieren.

Ja!

Es sieht so aus, als hättest du fast alle Bausteine, um daraus eine Theme-Komponente zu machen (ich denke, das lässt sich mit einer Theme-Komponente umsetzen, aber ich bin damit nicht ganz vertraut, also nimm das nicht als unumstößliche Regel).

Als Nächstes musst du es entweder selbst programmieren oder jemanden beauftragen, die Arbeit zu erledigen, wie @Monkey vorgeschlagen hat.

(Ich würde das gerne selbst angehen, um mehr über Theme-Komponenten zu lernen, aber ich habe im Moment keine Zeit dafür)

5 „Gefällt mir“

Ja, du könntest es auf einem Projekt wie diesem basieren:

Es gibt ein paar davon auf GitHub, aber dies ist eines der führenden.

Kombiniere es mit benutzerdefiniertem BBCode: Developer's guide to Markdown extensions

Du musst nur auf Fallstricke achten, die mit der Integration in die Ember-Rendering-Pipeline zusammenhängen …

@supermathie hat recht – du musst einen Enthusiasten finden, der bereit ist, sich einzuarbeiten und die Zeit zu investieren, um es umzusetzen, oder jemanden im Marketplace einstellen.

4 „Gefällt mir“

Hey @merefield,

Ich habe mein Theme so angepasst, dass es das folgende Skript enthält:

<link rel="stylesheet" type="text/css" href="https://pgn.chessbase.com/CBReplay.css" />

Ich habe die CSS-Datei “https://pgn.chessbase.com/CBReplay.css” für Einbettungen freigegeben.
Wenn ich das Skript in meinen Beitrag kopiere und einfüge, wird das Div-Tag ignoriert und nur der Text angezeigt:

<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>

Muss ich noch etwas anderes tun, um dieses Skript in meinen Beiträgen zu verwenden? Bitte gib mir einen Hinweis.

Ich habe im Moment keine Zeit, mir das anzusehen. Bitte tu, wie ich vorschlage.