مرحبًا بالمجتمع،
هل جرب أحدكم تضمين جداول البيانات في محتوى الموضوع؟ هل هناك أي إضافة أو سمة مناسبة لذلك؟
شكرًا لكم،
مرحبًا بالمجتمع،
هل جرب أحدكم تضمين جداول البيانات في محتوى الموضوع؟ هل هناك أي إضافة أو سمة مناسبة لذلك؟
شكرًا لكم،
لقد حاولت إنشاء جداول تحتوي على بعض الروابط إلى صور داخل خلية واحدة لكنني فشلت. انظر: كيف أصنع جدولاً جميلاً في منشور؟
لذلك، بالتعويض، لا أعتقد أن منصة Discourse الأساسية ستسمح بذلك.
إذا كان ذلك ممكنًا، فأود معرفة كيفية القيام به.
بما أن الموقع الذي أعمل عليه لا يمكنه إضافة إضافات أخرى وفقًا للخطة/الاتفاق، لم أستطع متابعة هذا المسار من الخيارات.
نعم، لا أعرف كيفية تنفيذ هذا.
ليس القارب الكامل، لكنه ربما كافٍ لتبدأ به.
| الاسم | الوظيفة | المكتب | العمر | تاريخ البدء | الراتب |
|---|---|---|---|---|---|
| أيري ساتو | محاسب | طوكيو | 33 | 2008/11/28 | $162,700 |
| أنجيلا راموس | الرئيس التنفيذي (CEO) | لندن | 47 | 2009/10/09 | $1,200,000 |
| أشتون كوكس | مؤلف تقني مبتدئ | سان فرانسيسكو | 66 | 2009/01/12 | $86,000 |
| برادلي غريير | مهندس برمجيات | لندن | 41 | 2012/10/13 | $132,000 |
| بريندن واغنر | مهندس برمجيات | سان فرانسيسكو | 28 | 2011/06/07 | $206,850 |
| برييل ويليامسون | أخصائي تكامل | نيويورك | 61 | 2012/12/02 | $372,000 |
| برونو ناش | مهندس برمجيات | لندن | 38 | 2011/05/03 | $163,500 |
| قيصر فانس | دعم ما قبل البيع | نيويورك | 21 | 2011/12/12 | $106,450 |
| كارا ستيفنز | مساعد مبيعات | نيويورك | 46 | 2011/12/06 | $145,600 |
| سيدر كيلي | مطور جافا سكريبت أول | إدنبرة | 22 | 2012/03/29 | $433,060 |
| الاسم | الوظيفة | المكتب | العمر | تاريخ البدء | الراتب |
تم إنشاء HTML أعلاه عن طريق فتح رابط المقدم (باستخدام Chrome)، الضغط على F12،
اختيار HTML في عارض الكود
ثم (في نظام Windows) انقر بزر الماوس الأيمن واختر نسخ → نسخ OuterHTML
ثم ألصقها في هذا المنشور.
أعلم أنه لا يحتوي على كل المزايا الإضافية للأصل، لكن على الأقل يمكنك مقارنة هذا HTML بالأصل ومعرفة ما يقوم Discourse بتصفية منه لتتعلم ما يمكنك وما لا يمكنك فعله.
أيضًا، إذا كان بإمكان شخص يتمتع بمزيد من الثقة تحويل هذا إلى ويكي حتى يتمكن الآخرون من عرض HTML الخام، فسأكون ممتنًا.
آمل أن يكون ذلك مفيدًا
تعديل
توسيعًا حول القص واللصق، قمت بقص الصفحة كاملة ولصقها في منشور على try.discourse.org لمعرفة ما إذا كانت أزرار الفرز ستنتقل بنجاح. للأسف، لم ينجح الأمر.
هذه النتيجة مجرد جدول Markdown مدعوم من Discourse:
عظيم. لكن هل يتضمن وظائف جدول بيانات مثل الفرز والبحث؟
لا.
أفضل تخمين لدي لكيفية القيام بذلك هو استخدام JavaScript، لكنني لا أعرف كم منها سيتم تصفيته من Discourse. عندما واجهت نفس سلسلة المشاكل، توصلت في النهاية إلى استنتاج أنه سيكون من الأسهل وضع الصفحة التي تحتوي على المعلومات في مكان آخر وتوفير رابط. لا تحاول إجبار Discourse على أن يكون شيئًا ليس عليه، ولا تحاول تجاوز الأمان الذي يوفره Discourse، فهو موجود لسبب وجيه.
هذا صحيح، وخياري الأفضل هو إضافة جدول البيانات في صفحة HTML وتضمينه في موضوع Discourse باستخدام إطار مضمن (iframe).
تُعد Datatables إضافة لـ jQuery. ويمكن تنفيذ إضافات jQuery بسهولة نسبية في Discourse. هناك عدة أمثلة على ذلك مثل مكونات موضوع Tiles و Slick المعرض.
في جوهر الأمر، ما تحتاج إلى فعله هو إنشاء مُزيّن (decorator) للمنشورات التي تحتوي على جداول تريد استهدافها باستخدام dataTables.
لقد قمت بإنشاء مثال يوضح كيفية القيام بذلك هنا
كما أنشأت معاينة له في منشئ المواضيع هنا
https://theme-creator.discourse.org/theme/Johani/discourse_datetables
من الواضح أن الأمر لا يزال بسيطًا بعض الشيء في الوقت الحالي، وينقصه بعض الأنماط، لكنه يجب أن يكون نقطة انطلاق جيدة حيث تعمل الفرز والبحث والترقيم بشكل صحيح.
هذا لا يصدق
شكراً جزيلاً لك
لدي عدة جداول أود تضمينها في منتداي، وطريقتك تعمل بشكل مثالي. لقد أنشأت ملف مُهيئ لمكون السمة هذا:
import { apiInitializer } from 'discourse/lib/api';
import loadScript from 'discourse/lib/load-script';
export default apiInitializer('0.11.1', (api) => {
api.decorateCookedElement(
(elem, helper) => {
const dataTables = $('[data-wrap="dataTables"] table', elem);
if (!dataTables.length) return;
loadScript('https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js').then(
() => {
$.fn.dataTable.ext.errMode = 'throw';
dataTables.dataTable({
ajax: {
url:
'https://gist.githubusercontent.com/USERNAME/MY_GIST_ID/raw/data.json',
dataSrc(data) {
return data.map((x) => {
return {
id: x.my_id,
title: `${x.number} - ${x.title}`,
};
});
},
},
columns: [
{ data: 'id', title: 'My ID' },
{ data: 'title', title: 'My Title' }
],
dom: 'Bfrt',
});
}
);
},
{ id: 'discourse-my-custom-data-tables', onlyStream: true }
);
});
ثم أقوم بتحميل الجدول في المنشور باستخدام ما يلي:
[wrap=dataTables]
<table></table>
[/wrap]
ومع ذلك، هناك عدة أمور أود تخصيصها لكل جدول، ولا أعرف كيف أفعل ذلك.
على سبيل المثال:
أود استخدام معرف Gist مختلف لكل جدول. يجب أن يكون ذلك سهلاً نسبيًا من خلال تمرير سمة إلى wrap ثم الوصول إليها باستخدام elem.children[0].dataset.gist:
[wrap=dataTables gist="some_gist_id"]
<table></table>
[/wrap]
ولكن ماذا لو أردت جداول متعددة، كل منها يحتوي على كود معالجة مختلف في دالة dataSrc أو معاملات column أو dom مختلفة؟
هل توجد طريقة لتمرير ملف إعدادات JS إلى dataTables.dataTable()؟
هل يوجد عدد محدد من المتغيرات من المرجح استخدامها للجداول المختلفة، أم ستحتاج إلى استخدام متغيرات مخصصة لكل جدول؟
تخصيص واحد لكل جدول.
منهجيتي الحالية هي إنشاء ملفات JS مساعدة تحتوي على تكوينات مختلفة واختيار بينها عبر سمة في كتلة [wrap]. ثم أقوم بما يلي:
dataTables.dataTable(Object.assign(commonConfig, specificConfig(myAttributes)))
لكنني سأكون فضوليًا لمعرفة ما إذا كانت هناك حل أكثر مرونة.