بحاجة إلى تضمين PGN (ترميز لعبة الشطرنج) في منشور

أحاول تضمين ملف PGN في موضوع. وهذا يتطلب تضمين CSS و JavaScript في الموضوع. هل يمكن لأحد أن يساعدني في كيفية استخدام CSS و JavaScript في موضوع؟

5 إعجابات

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

4 إعجابات

تعني PGN تدوين الألعاب المحمولة. بشكل عام، يمكن تصدير جميع حركات لعبة شطرنج إلى تنسيق نصي، ويمكن قراءتها باستخدام قارئ PGN وإعادة تشغيل لعبة الشطرنج.
عادة ما تبدو هكذا:

[Event "بطولة العالم 28"]
[White "سباسكي، بوريس ف"]
[Black "فيشر، روبرت جيمس"]
[Site "ريكيافيك"]
[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 إعجابات

سيكون بالتأكيد إضافة ممتعة! أضفت وسم “مطلوب طلبات الدمج” إلى هذا الموضوع.

5 إعجابات

هل من الممكن أن تنشر ملاحظات اللعبة على موقع مثل chess.com، ثم تستخدم كود التضمين الذي يقدمونه لموقعك؟

6 إعجابات

ليس فقط Chess.com.
يمكنني لعب مباراة في أي منصة شطرنج عبر الإنترنت. يجب أن أتمكن من نسخ ملف PGN الخاص بي ونشره في منتداي.

مرحبًا @codinghorror،
سيكون رائعًا حقًا الحصول على إضافة من هذا القبيل :slight_smile:

إعجابَين (2)

هل تدرك مدى تخصص هذا؟
لا ينبغي أن تكون هذه ميزة في Discourse، حيث إن 98% من المنتديات لن تستخدمها أبدًا.

لديك 3 خيارات:

  • قم بكتابة الكود بنفسك
  • استأجر شخصًا لكتابة الكود
  • استخدم الحل الذي قدمته منذ 13 ساعة والذي يحل مشكلتك
إعجاب واحد (1)

مرحبًا @Monkey

نعم، أدرك أنك محق تمامًا.

أقمنا منتدى تقنيًا للغاية لمدة 15 عامًا حتى الآن (يونكس، لينكس)، وكان لدينا العديد من لاعبي الشطرنج كعضو (بما في ذلك أنا)، ولم يكن أحد مهتمًا بالشطرنج في المنتديات (قمنا بتثبيت عدد من الإضافات المتعلقة بالشطرنج على مر السنين).

ما كان يعمل بشكل أفضل هو ببساطة وجود أعضاء مهتمين بلعب الشطرنج أو الشطرنج بشكل عام للالتقاء في أحد مواقع الشطرنج الرائعة المتاحة عبر الإنترنت.

لذلك، يمكنني تأكيد أن هذا مجال متخصص جدًا؛ لعب الشطرنج في المنتديات؛ نظرًا لوجود بدائل رائعة أخرى متاحة.

أوافق على أن تضمين كود من أحد مواقع الشطرنج عبر الإنترنت الأكثر شهرة سيكون طريقًا ممتازًا للمضي قدمًا.

4 إعجابات

مرحبًا @neounix،

أنت تستضيف منتدى تقني، وبالتالي قد لا يهتم جمهورك بالشطرنج. يمكنني استضافة منتدى رياضي ولألعاب الفيديو حيث يوجد العديد من لاعبي الشطرنج والهواة الذين يقضون وقتًا طويلاً في مناقشة ومناظرة حول تحركات الشطرنج. الأمر يعتمد على من هو جمهورك المستهدف. إنه ضيق الأفق أن تتحقق وتؤكد بشأن متطلباتي لأنك لم تستضد أبدًا منتدى رياضي، وبالتالي فإن تحققك غير صالح فيما يتعلق بطلبه.

مرحبًا @Monkey،

هناك بالفعل العديد من أدوات التضمين (Embeds) القائمة على جافا سكريبت لاستضافة ملفات PGN. لكن ديسكورش لا يدعم حاليًا أدوات التضمين القائمة على جافا سكريبت في منشوراتها، بل يسمح فقط بأدوات التضمين عبر iFrame. لذلك، إذا كان ديسكورش مهتمًا بتوفير إضافة (Plugin) لملفات PGN، فأنا متأكد تمامًا من أن ذلك سيجذب العديد من المنتديات الرياضية.

لا أعتقد أن الإضافات المتعلقة بالشطرنج هي ميزة متخصصة (niche feature) إذا كان لدي ديسكورش العديد من المنتديات الرياضية والألعاب في قائمة عملائها.

الحل الذي قدمته سيمكننا فقط من استخدام ما يتم بثه من موقع chess.com. لكن هذا لن يساعدنا في التميز، حيث يوجد العديد من اللاعبين الذين سيستضيفون ببساطة ألغاز اليوم من موقع Chess.com. وبالتالي، فإن اقتراحك ليس في الواقع حلاً لمشكلتي.

3 إعجابات

أنا مهووس بالشطرنج، وسعتُ لتشجيع منتدى شطرنج فنلندي على الانتقال إلى Discourse. لذلك، كنتُ أبحث في هذا السؤال بالتحديد وجربت الأمر مؤخرًا. توصيتي الأولى هي استخدام ميزة iframe المدمجة في Discourse، كما ذكر شخص ما سابقًا. كل ما عليك فعله هو البحث عن “الإطارات المسموحة” في إعدادات المشرف وإضافة chess.com وlichess.org (وربما مواقع أخرى) إلى القائمة البيضاء. جميع هذه المواقع تدعم الإطارات من جانبها. يمكن للمستخدم بعد ذلك نسخ ولصق نص مثل:

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

سيتم إنشاء مربع أنيق جدًا يحتوي على رقعة شطرنج وأسهم للتنقل ذهابًا وإيابًا داخل اللعبة. إذا كانت هناك تعليقات على المصدر، فستظهر أيضًا. وإذا احتاج المستلم حقًا إلى ملف PGN، على سبيل المثال لتحليل اللعبة باستخدام محركه، فيمكنه الوصول إلى الملف على موقع المصدر. كل ما يلزم هو تثقيف مستخدميك قليلًا، وسيحبون الفكرة.

6 إعجابات

مرحبًا @rizka،

لدي حالة غريبة جدًا هنا،


في المعاينة، يمكنني رؤية تضمين iFrame. لكن عند حفظ المنشور، لا يظهر تضمين iFrame. هل أغفلت شيئًا هنا؟
لقطة شاشة بعد حفظ المنشور:

هل ترى أي أخطاء في وحدة تحكم المتصفح؟ (ربما تتعلق بسياسة المحتوى الآمن CSP)

لدي هذه الرسالة خطأ:

تم تعيين ملف تعريف ارتباط (cookie) مرتبط بمورد عبر موقع (cross-site) على https://lichess.org/ دون استخدام السمة `SameSite`. وقد تم حظره، حيث أن متصفح Chrome الآن لا ينقل ملفات الارتباط مع الطلبات عبر المواقع إلا إذا تم تعيينها بـ `SameSite=None` و `Secure`. يمكنك مراجعة ملفات الارتباط في أدوات المطور تحت Application > Storage > Cookies، ومعرفة المزيد من التفاصيل في https://www.chromestatus.com/feature/5088147346030592 و https://www.chromestatus.com/feature/5633521622188032.

لقد قمت بتعيين الإعدادات إلى SameSite=None.
لكن هذا لم يُجدِ نفعًا.

أعتقد أن الموقع الذي تقوم بتضمينه (https://lichess.org/) يجب أن يضيف هذا الإعداد إلى ملف تعريف الارتباط (بافتراض أنهم يريدون السماح لمواقع أخرى باستخدام ملفات تعريف الارتباط الخاصة بهم). مع ذلك، لا أعرف ما إذا كان عدم ظهور إطار الـ iframe يعود إلى ذلك (عادةً ما تُستخدم ملفات تعريف الارتباط للجلسات أو الإعلانات، لذا حتى لو لم يكن لإطار الـ iframe جلسة نشطة، أعتقد أنه سيظل يتم تحميله).

تحديث

يبدو أنهم يسمحون بذلك.

علاوة على ذلك، يمكنك معاينة النتيجة، وإذا أضفت إطار الـ iframe هنا في موقع discourse meta (مباشرة في HTML، عبر أداة فحص المتصفح)، فإنه يعمل، كما هو موضح في الصورة أدناه:

يمكنك تجربة إضافته مباشرة في صفحتك باستخدام أداة فحص المتصفح. إذا لم يعمل، فقد يكون ذلك بسبب قاعدة CSP أو لأن discourse يحظر إطارات الـ iframe (إذا كانت المشكلة متعلقة بـ CSP، فستظهر لك رسالة خطأ أو تحذير في وحدة تحكم المتصفح).

هنا في موقع meta، إذا حاولت تضمين إطار الـ iframe، أحصل أيضًا على منشور فارغ (على الرغم من أنني لا أستطيع حتى رؤية المعاينة):

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

تحديث 2

قد يكون إعداد الموقع allowed_iframes هو ما تبحث عنه (للسماح بإطارات الـ iframe من هذا النطاق):

لقد قمت بتفعيل إطارات الويب (iframes) الخاصة بـ lichess.org مؤقتًا على try.discourse.org حتى يتمكن أي شخص من تجربة السلوك هناك:

سيستمر هذا حتى إعادة التعيين اليومية.

يبدو أفضل في Firefox:

مقارنة بـ Chrome:

5 إعجابات

مرحبًا @supermathie،

بدلاً من استخدام تضمين iframe، لدي كود JavaScript مثل هذا:

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

هل يمكن استخدام كود مثل هذا للتضمين في المنشورات؟ يفضل الكثير من مستخدمينا نسخ ولصق مثل هذه الأكواد ببساطة بدلاً من الانتقال إلى موقع ويب تابع لجهة خارجية لتوليد iframe.

نعم!

يبدو أنك قريب جدًا من امتلاك جميع العناصر اللازمة لتحويل هذا إلى مكون سمة (أعتقد أنه يمكن القيام بذلك باستخدام مكون سمة، لكنني لست ملمًا جدًا بها، لذا لا تأخذ هذا على أنه حقيقة مؤكدة).

الخطوة التالية ستكون إما برمجتها بنفسك أو توظيف شخص للقيام بالعمل كما اقترح @Monkey.

(أود جدًا التعامل مع هذا لتعلم المزيد عن مكونات السمة، لكنني لا أستطيع تخصيص الوقت لذلك في الوقت الحالي)

5 إعجابات

نعم، قد تتمكن من الاعتماد على مشروع مثل هذا:

هناك عدة مشاريع على GitHub، لكن هذا أحد أبرزها.

اجمعها مع كود BBCode مخصص: Developer's guide to Markdown extensions

عليك فقط الحذر من بعض المشاكل المتعلقة بدمج هذا داخل خط أنابيب عرض Ember …

صحيح ما قاله @supermathie - تحتاج إلى العثور على متحمس مستعد لتعلم الأساسيات وقضاء الوقت في التنفيذ، أو توظيف شخص في قناة Marketplace

4 إعجابات

مرحبًا @merefield،

لقد قمت بتخصيص سمة موقعي لتشمل السكربت التالي:

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

لقد أضفت CSS “https://pgn.chessbase.com/CBReplay.css” إلى القائمة البيضاء للسماح به في التضمينات.
عند نسخ السكربت ولصقه في منشوري، يتم تجاهل وسم Div ويُعرض النص فقط:

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

هل يجب عليّ فعل أي شيء آخر لاستخدام هذا السكربت في منشوراتي؟ أرجو التوجيه.

لا أملك وقتًا للنظر في هذا الآن. يرجى اتباع ما أقترحه.