القدرة على إضافة قسم مخصص من الروابط إلى الشريط الجانبي

نريد السماح للمستخدمين بإضافة قسم مخصص من الروابط إلى الشريط الجانبي الخاص بهم.

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

نعتقد أنها يمكن أن تعمل على النحو التالي:

  1. مربع اختيار لـ “إظهار القسم المخصص”.
    إذا تم تحديده، يظهر القسم المخصص فوق قسم الفئات ويجب أن تحتوي القيم على اسم صالح ورابط صالح واحد على الأقل لـ “حفظ التغييرات”.
  2. مربع نص لاسم القسم المخصص (الافتراضي: روابطي، لا يمكن أن يكون فارغًا).
  3. زر لـ “إضافة رابط”. عند النقر عليه، يظهر مربع حوار لإضافة رابط.
  4. الروابط المضافة تظهر زرًا لإزالتها.

مربع حوار إضافة رابط

  1. يحتوي مربع حوار إضافة رابط على صندوقي نص: الاسم، عنوان URL.
  2. لا يمكن أن يكون الاسم فارغًا، وقد يتضمن رموزًا تعبيرية (يجب عرضها في الشريط الجانبي).
  3. يجب أن يكون عنوان URL رابطًا إلى داخل موقع Discourse نفسه*.
  4. الحفظ يضيف الرابط، والإلغاء يتجاهله.

عند تكوين قسم مخصص صالح وحفظه، سيعرض الشريط الجانبي هذا القسم فوق “الفئات”.

* لماذا؟

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

نعتقد أن إضافة الروابط اليوم ستكون قيمة لأنها ستسمح للأشخاص بالوصول بسهولة إلى أشياء مثل “الأخطاء المفتوحة في الشريط الجانبي” وتمكننا من الاستفادة من أي تحسينات مستقبلية لقوائم المواضيع مثل عوامل تصفية قوائم المواضيع المحسنة. طالما أن الأشياء لها عنوان URL، يمكن للأشخاص إضافتها إلى الشريط الجانبي الخاص بهم.

نعتقد أن المستخدمين سيرغبون في القدرة على إضافة أقسام متعددة وإعادة ترتيبها، لكننا سنبقي ذلك خارج النطاق في البداية.

16 إعجابًا

سؤال واحد حول هذا، @mcwumbly. يبدو هذا كاستراتيجية للسماح للمستخدم بإضافة روابط شخصية إلى الشريط الجانبي. هل سيسمح هذا النهج لأصحاب المواقع بإضافة روابط يراها جميع المستخدمين؟

تلميح - أعتقد أنه يجب أن يفعل. :slight_smile:

5 إعجابات

نعم، أعتقد أنه يمكن توسيعه بالتأكيد للقيام بشيء كهذا، وأرى كيف ستكون هذه ميزة أكثر فائدة لبعض المواقع من ميزة المستخدم.

8 إعجابات

أنا حقًا أحب هذه الفكرة. :+1:

فقط بعض الأسئلة:

  1. هل سيكون هناك حد لعدد الروابط المخصصة التي يُسمح للمستخدم بإضافتها؟

  2. هل سيتم اقتطاع نهاية الروابط (في الشريط الجانبي) كما في النموذج الأولي التالي؟ (سأكون سعيدًا بذلك).
    وإذا كان الأمر كذلك، فهل سيتمكن المستخدم من قراءة نصها بالكامل في تلميح (إذا مرر مؤشر الماوس فوق الروابط)؟

سؤال جيد. ربما نحتاج إلى وضع بعض الحدود، لكنه ليس شيئًا ناقشناه بالتفصيل. ما نوع الحدود التي تأمل في رؤيتها (أو تجنبها)؟

إعجاب واحد (1)

في البداية، اعتقدت أن 10 روابط قد تكون كافية، لكنني أعتقد أن أعضاء المنتدى الآخرين سيرغبون في المزيد. ربما 20. لهذا السبب، سأحاول بـ 20 وأنتظر ملاحظات المستخدمين وأرى ما إذا كانوا يطلبون المزيد (لكنني أعتقد أن 20 هو بالفعل عدد جيد).

إعجاب واحد (1)

لإطالة “سهولة الاستخدام” لهذه الميزة، سيكون من الرائع السماح للمستخدم بسحب وإفلات الروابط (أي رابط من صفحة Discourse الحالية) مباشرة إلى الشريط الجانبي.

سيشير مؤشر (بين الروابط التي تمت إضافتها مسبقًا إلى قسم “روابطي”) إلى مكان وضع الرابط.

نموذج أولي (انقر بزر الماوس الأيمن \u003e “فتح الصورة في علامة تبويب جديدة” لرؤية الرسوم المتحركة بالحجم الكامل):

anim01

ربما يمكن للصفحة التالية المساعدة في تنفيذ السحب والإفلات؟

7 إعجابات

أود أن أتمكن من تعيين روابط افتراضية لموقعي، والتي يمكن للمستخدمين تجاهلها. هذا من شأنه أن يجعل هذا أفضل بشكل صارم من روابط الرأس المخصصة التي أستخدمها الآن، كما أراها.

3 إعجابات

+1 على إضافة روابط مخصصة. كانت لدينا بعض الروابط المخصصة المضافة إلى القائمة المنسدلة الأصلية. سيكون من الجيد إضافتها مرة أخرى، بشكل مشابه لكيفية وجود “أعياد الميلاد” و “المستندات” في Discourse تحت خيار “المزيد”.

4 إعجابات

يا جماعة!\n\nأتساءل كيف يمكنني إضافة روابط إلى الشريط الجانبي الجديد.\n\n

\n\nلا يبدو أن هناك أي موصل في تلك المنطقة…\n\n\n\nما هي الطريقة الأكثر فعالية للقيام بذلك؟\n\n—\n\n### تعديل\n\nتم نقل سؤالي إلى هنا… لست متأكدًا لماذا بما أنني أسأل عن نفس الشيء حقًا.\n\nعلى أي حال، إليك ما فعلته لحلها. إنها ليست حلاً جميلاً ويجب أن تكون هناك طريقة للتكامل مع نظام القوالب الخاص بـ discourse.\n\nإليك الطريقة:\n\n\u003cscript\u003e\n let logo = \"\" // لقد قمت بإزالة مسارات SVG لأنكم لستم بحاجة إليها.\n const div = document.createElement('div') // إنشاء الرابط المراد إضافته\n div.className = 'sidebar-section-link-wrapper' // إضافة الفئات ذات الصلة\n div.innerHTML = `\n \u003ca title=\"جميع المواضيع\" href=\"https://www.latranchee.com\" id=\"ember12\" class=\"sidebar-section-link sidebar-section-link-everything sidebar-row ember-view\"\u003e\n \u003cspan class=\"sidebar-section-link-prefix icon\"\u003e\n \u003csvg viewBox=\"0 0 100 100\" class=\"logoIcon\" xmlns=\"http://www.w3.org/2000/svg\"\u003e${logo}\u003c/svg\u003e\n \u003c/span\u003e\n \u003cspan class=\"sidebar-section-link-content-text\"\u003e الصفحة الرئيسية \u003c/span\u003e\n \u003c/a\u003e\n ` // ملء الرابط\n \n $( document ).ready(() =\u003e { // هذا ضروري للانتظار حتى ينتهي ember من عمله\n // إضافة التنقل على سطح المكتب\n let desktop = document.getElementsByClassName('sidebar-section-content')[0];\n if(desktop) desktop.prepend(div)\n \n // إضافة التنقل على الهاتف المحمول\n let hamburger = document.getElementById('toggle-hamburger-menu').addEventListener(\"click\", addMobileNav);\n function addMobileNav () {\n setTimeout(function(){ // فرض الانتظار حتى يتم تحميل التنقل\n document.getElementsByClassName('sidebar-section-content')[0].prepend(div);\n }, 0);\n }\n })\n\u003c/script\u003e\n\n\nالنتيجة على سطح المكتب…\n\n\n\n\u0026 النتيجة على الهاتف المحمول:\n\n\n\nحتى يكون هناك طريقة أفضل، هذا ما يجب أن يكون!\n\n### تعديل #2\n\nتم تنظيف الكود بحيث يتم تحميل التنقلات من مصفوفة من الكائنات.\n\n\n\u003cscript\u003e\n let rss = `\u003cpath d=\"M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,18A1.5,1.5 0 0,0 9,16.5A1.5,1.5 0 0,0 7.5,15M6,10V12A6,6 0 0,1 12,18H14A8,8 0 0,0 6,10M6,6V8A10,10 0 0,1 16,18H18A12,12 0 0,0 6,6Z\"\u003e\u003c/path\u003e`\n let mdiSchool = `\u003cpath d=\"M12,3L1,9L12,15L21,10.09V17H23V9M5,13.18V17.18L12,21L19,17.18V13.18L12,17L5,13.18Z\"\u003e\u003c/path\u003e`\n let logo = `\u003cg xmlns=\"http://www.w3.org/2000/svg\" fill=\"#0e1e2b\"\u003e\n \u003cpath d=\"M77.4 196.2 c-8 -6.9 -11.4 -16.9 -11.4 -33.2 0.1 -20.9 2.4 -30.2 6.7 -27.4 2.9 1.8 4.3 9.4 5.4 28.9 0.9 16.5 1.4 19.8 3.6 25 1.3 3.3 2.5 6.7 2.6 7.5 0.3 2.6 -3.6 2.1 -6.9 -0.8z\"/\u003e\n \u003cpath d=\"M2.9 167.3 c-5.1 -6.1 11.2 -24.2 21.9 -24.3 2.6 0 2.7 1.1 0.6 5.5 -1.4 3 -12.6 13.5 -14.3 13.5 -0.4 0 -1.4 1.2 -2.1 2.6 -2 3.6 -4.5 4.8 -6.1 2.7z\"/\u003e\n \u003cpath d=\"M87.4 160.5 c-1.9 -1.9 -2.4 -3.4 -2.2 -5.8 0.4 -4.5 3.2 -4.7 7.4 -0.6 3.9 3.8 4.1 4.9 1.6 7.2 -2.5 2.3 -3.9 2.1 -6.8 -0.8z\"/\u003e\n \u003cpath d=\"M126.5 158.9 c-6 -3 -10 -7.4 -17 -18.6 -7.6 -12.2 -8.2 -13.8 -5.8 -15.2 2.8 -1.5 7.3 1.8 21.3 15.4 6.9 6.8 13.5 12.6 14.7 12.9 2.7 0.8 3.9 4.2 2.3 6.1 -1.8 2.2 -10.7 1.8 -15.5 -0.6z\"/\u003e\n \u003cpath d=\"M36.2 156.7 c-1.5 -1.8 -1.8 -7.8 -0.4 -10.3 1.9 -3.6 3.8 -4.7 6.1 -3.4 1.7 0.9 2.1 2 2.1 6.1 0 2.8 -0.5 5.9 -1 7 -1.2 2.2 -5.2 2.5 -6.8 0.6z\"/\u003e\n \u003cpath d=\"M121.5 116 c-0.8 -2.5 1.1 -5.1 3 -4.4 2 0.8 2.7 3.4 1.4 5 -1.7 2 -3.7 1.7 -4.4 -0.6z\"/\u003e\n \u003cpath d=\"M4.3 113 c-2.6 -1.1 -2.8 -1.9 -1 -4.4 1.5 -2 7.5 -2.9 9.5 -1.4 1.8 1.5 1.5 4.6 -0.7 5.8 -2.3 1.2 -4.8 1.2 -7.8 0z\"/\u003e\n \u003cpath d=\"M32.7 82 c-6.3 -4 -10.3 -9.9 -13.2 -19.4 -2.5 -8.8 -4 -24 -2.7 -29.5 0.9 -4.2 3.4 -6.1 6 -4.5 1.7 1.1 1.9 2 4.6 17.9 1.8 10.8 7.3 22.5 14.1 30.3 2.8 3.1 4.5 5.8 4.1 6.7 -1 2.6 -7.7 1.8 -12.9 -1.5z\"/\u003e\n \u003cpath d=\"M133.6 80.4 c-2.1 -2.1 -2 -2.9 0.6 -5.4 2.8 -2.6 6.6 -3.6 8.6 -2.3 2.5 1.5 2.4 2.9 -0.3 6.2 -2.9 3.4 -6.4 4 -8.9 1.5z\"/\u003e\n \u003cpath d=\"M93.3 73.3 c-2 -0.8 -1.6 -2.8 2.6 -11.1 7.1 -14.1 10.8 -19.4 22.7 -31.9 9.8 -10.5 12.1 -12.4 14.3 -12.1 1.5 0.2 2.7 1 2.9 2 0.6 3.2 -18 29.9 -29.4 42.1 -6 6.5 -11.1 11.7 -11.4 11.6 -0.3 0 -1.1 -0.3 -1.7 -0.6z\"/\u003e\n \u003cpath d=\"M61.7 56.2 c-2.7 -3 -3.3 -7.9 -1.2 -10.2 1 -1.1 2.4 -2 3.1 -2 2.1 0 4.4 4.2 4.4 8 0 5.6 -3.1 7.7 -6.3 4.2z\"/\u003e\n \u003cpath d=\"M96.2 18.8 c-4.2 -4.2 4 -19.3 8.8 -16.3 1.8 1.1 1 6.9 -1.7 12.2 -2.6 5.3 -4.7 6.5 -7.1 4.1z\"/\u003e\n \u003c/g\u003e`\n\n const div = document.createElement(\"div\")\n div.className = \"sidebar-section-link-wrapper\"\n div.innerHTML = `\n \u003ca href=\"https://www.latranchee.com\" class=\"sidebar-section-link sidebar-section-link-everything sidebar-row\"\u003e\n \u003cspan class=\"sidebar-section-link-prefix icon\"\u003e\n \u003csvg viewBox=\"0 0 100 100\" class=\"logoIcon\" xmlns=\"http://www.w3.org/2000/svg\"\u003e${logo}\u003c/svg\u003e\n \u003c/span\u003e\n \u003cspan class=\"sidebar-section-link-content-text\"\u003e الصفحة الرئيسية \u003c/span\u003e\n \u003c/a\u003e\n `\n\n const customHeader = document.createElement(\"div\")\n customHeader.className = \"sidebar-section-wrapper sidebar-section-community\"\n customHeader.innerHTML = `\n \u003cdiv class=\"sidebar-section-header-wrapper sidebar-row\"\u003e\n \u003cbutton id=\"ember11\" class=\"sidebar-section-header sidebar-section-header-collapsable btn-flat btn no-text\" type=\"button\"\u003e\n \u003cspan class=\"sidebar-section-header-text\"\u003e معسكر التدريب \u003c/span\u003e\n \u003c/button\u003e\n \u003c/div\u003e\n \u003cdiv class=\"sidebar-section-content\" id=\"customNavigation\"/\u003e\n `\n\n $(document).ready(function () {\n // إنشاء الروابط\n const links = [\n { title: \"الصفحة الرئيسية\", src: \"https://www.latranchee.com\", svg: logo, viewbox: \"0 0 100 100\" },\n { title: \"الدورات\", src: \"https://www.latranchee.com/formations\", svg: mdiSchool, viewbox: \"2 -2 16 16\" },\n { title: \"المدونة\", src: \"https://www.latranchee.com/blogue\", viewbox: \"1 -3 16 16\", svg: rss },\n ]\n\n // الهاتف المحمول\n let hamburger = document.getElementById(\"toggle-hamburger-menu\")\n if (hamburger) {\n hamburger.addEventListener(\"click\", addCustomLinks)\n } else {\n addCustomLinks()\n }\n \n let bool = false;\n function addCustomLinks() {\n setTimeout(function () {\n // فرض الانتظار حتى يتم تحميل التنقل\n const sidebar = document.getElementsByClassName(\"sidebar-sections\")[0]\n if (sidebar) {\n sidebar.prepend(customHeader)\n if (bool) return;\n // الحصول على معرف customNav\n const customNavigation = document.getElementById(\"customNavigation\")\n if (customNavigation) {\n links.filter(function (link) {\n let linkDiv = document.createElement(\"div\")\n linkDiv.className = \"sidebar-section-link-wrapper\"\n linkDiv.innerHTML = `\u003ca href=\"${link.src}\" class=\"sidebar-section-link sidebar-section-link-everything sidebar-row ember-view\"\u003e\n \u003cspan class=\"sidebar-section-link-prefix icon\" id=\"link_${link.title}\"\u003e\u003c/span\u003e\n \u003cspan class=\"sidebar-section-link-content-text\"\u003e ${link.title} \u003c/span\u003e\n \u003c/a\u003e\n `\n customNavigation.append(linkDiv)\n let linkIcon = document.getElementById(\"link_\" + link.title)\n if (linkIcon \u0026\u0026 link.svg) {\n linkIcon.innerHTML = `\u003csvg viewBox=\"${link.viewbox}\" class=\"logoIcon\" xmlns=\"http://www.w3.org/2000/svg\"\u003e ${link.svg}\u003c/svg\u003e`\n }\n })\n }\n }\n bool = true\n }, 0)\n \n }\n })\n\u003c/script\u003e\n \n\n\n\nآمل أن يساعد هذا شخصًا ما!

إعجابَين (2)

+1 من جانبي هنا. المزيد من التخصيص للشريط الجانبي مثل الروابط المخصصة أو ربما المزيد من الأزرار في الأعلى سيكون رائعًا!

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

إعجاب واحد (1)

هذا مثال آخر آمل أن يكون مفيدًا لشخص ما، بناءً على الأمثلة المذكورة أعلاه. لا يضيف هذا الرمز قسمًا جديدًا تمامًا، ولكنه يضيف روابط إضافية إلى أسفل لوحة “المزيد” في قسم “المجتمع” (ولكن قبل روابط الأسئلة الشائعة و"حول" في التذييل). وهو يدعم أيقونات FontAwesome (بافتراض إضافتها في إعدادات الموقع) والروابط الخارجية. وهو يتعامل مع الحالات الاستثنائية حيث يتم إغلاق الشريط الجانبي وإعادة فتحه، و/أو يتم طي قسم المجتمع وإعادة توسيعه. وهو يعمل على سطح المكتب والجوال.

أنا لست خبيرًا في JavaScript، لذا أعتذر عن أي رمز سيء أو غير أمثل. على موقعي، على الأقل، يبدو أنه يعمل كما هو مقصود.

فقط قم بإلقاء هذا الرمز في علامة التبويب “Header” لمكون سمة وقم بتخصيصه حسب الحاجة:

<script>
const links = [
    // قد تحتاج أيقونات FontAwesome إلى إضافتها في إعدادات الموقع إذا لم تظهر بشكل صحيح
    { title: "حسابي", src: "/my/billing/subscriptions", icon: "file-invoice-dollar" },
    { title: "دليل المستخدم", src: "/u?asc=true&cards=yes&order=username&period=all", icon: "address-book" },
    { title: "المستندات", src: "/docs", icon: "book-reader" },
    { title: "موقع خارجي", src: "https://google.com/", icon: "globe" }
]

$(document).ready(function () {
    if (document.getElementById("toggle-hamburger-menu")) {
        // نحن في وضع العرض للجوال
        addToggleListener(document.getElementById("toggle-hamburger-menu"))
    } else {
        // نحن في وضع العرض لسطح المكتب
        addToggleListener(document.getElementsByClassName("btn-sidebar-toggle")[0])
        addHeaderListener()
        addMoreListener()
    }

    function addToggleListener(toggleEl) {
        if (toggleEl) {
            toggleEl.addEventListener("click", function () {
                // انتظر قليلاً لتحميل الشريط الجانبي
                setTimeout(function() {
                    let sidebar = document.getElementsByClassName("sidebar-section-header").length
                    if (sidebar) {
                        addHeaderListener()
                        addMoreListener()
                    }
                }, 100)
            })
        }
    }

    function addHeaderListener() {
        let communityHeader = document.getElementsByClassName("sidebar-section-header")[0]
        if (communityHeader) {
            communityHeader.addEventListener("click", function () {
                // انتظر قليلاً لتوسع القسم
                setTimeout(function() {
                    let communitySection = document.getElementById("sidebar-section-content-community")
                    if (communitySection) {
                        addMoreListener()
                    }
                }, 100)
            })
        }
    }
    
    function addMoreListener() {
        let buttonMore = document.getElementsByClassName("sidebar-more-section-links-details")[0]
        if (buttonMore) {
            buttonMore.addEventListener("click", addCustomLinks)
        }
    }
    
    function addCustomLinks() {
        // انتظر قليلاً حتى يتم تحميل التنقل
        setTimeout(function () {
            const parentEl = document.getElementsByClassName("sidebar-more-section-links-details-content-main")[0]
            let linksAlreadyAdded = document.getElementsByClassName("sidebar-section-custom-link").length
        
            if (parentEl && !linksAlreadyAdded) {
                links.filter(function (link) {
                    let linkDiv = document.createElement("li")
                    let linkTitleTrim = link.title.replace(/\s+/g, '')
                    linkDiv.className = "sidebar-section-link-wrapper sidebar-section-custom-link"
                    linkDiv.innerHTML = `<a href="${link.src}" class="sidebar-section-link sidebar-section-link-everything sidebar-row ember-view">
                            <span class="sidebar-section-link-prefix icon" id="link_${linkTitleTrim}"></span>
                            <span class="sidebar-section-link-content-text"> ${link.title} </span>
                        </a>
                      `
                    parentEl.append(linkDiv)
                    
                    let linkIcon = document.getElementById("link_" + linkTitleTrim)
                    if (linkIcon && link.icon) {
                        linkIcon.innerHTML = `<svg viewBox="0 0 640 512" class="fa d-icon svg-icon prefix-icon svg-string d-icon-${link.icon}" xmlns="http://www.w3.org/2000/svg">
                                <use xlink:href="#${link.icon}"></use>
                            </svg>
                        `
                    }
                })
            }
        }, 100)
    }
})
</script>
4 إعجابات

@Ryan_Hyer رائع! لقد اكتشفت طريقة لجعل العناصر تظهر (أو تستمر في الظهور) بعد حدث تبديل البرجر، وهي المشكلة التي كنت أواجهها هنا:

الكود الخاص بك منظم ونظيف للغاية أيضًا. بفضل ذلك، تمكنت من تعديله لعرض ما أريده في قائمة المجتمع دون أن يكون مخفيًا تحت المزيد:

الرأس:

<script>

const links = [
    // قد تحتاج أيقونات FontAwesome إلى إضافتها في إعدادات الموقع إذا لم تظهر بشكل صحيح
    { title: "دليل المستخدم", src: "/u?asc=true&cards=yes&order=username&period=all", icon: "address-book" },
    { title: "الوثائق", src: "/docs", icon: "book-reader" },
    { title: "موقع خارجي", src: "https://google.com/", icon: "globe" }
]

$(document).ready(function () {
    if (document.getElementById("toggle-hamburger-menu")) {
        // نحن في وضع الهاتف المحمول
        addToggleListener(document.getElementById("toggle-hamburger-menu"))
    } else {
        // نحن في وضع سطح المكتب
        addToggleListener(document.getElementsByClassName("btn-sidebar-toggle")[0])
        addCustomLinks()
    }

    function addToggleListener(toggleEl) {
        if (toggleEl) {
            toggleEl.addEventListener("click", function () {
                // انتظر قليلاً حتى يتم تحميل الشريط الجانبي
                setTimeout(function() {
                    let sidebar = document.getElementsByClassName("sidebar-section-header").length
                    if (sidebar) {
                        addCustomLinks()
                    }
                }, 100)
            })
        }
    }
    
    function addCustomLinks() {
        // انتظر قليلاً حتى يتم تحميل التنقل
        setTimeout(function () {
            const parentEl = document.getElementsByClassName("sidebar-section-content")[0]
            let linksAlreadyAdded = document.getElementsByClassName("sidebar-section-custom-link").length
        
            if (parentEl && !linksAlreadyAdded) {
                links.filter(function (link) {
                    let linkDiv = document.createElement("li")
                    let linkTitleTrim = link.title.replace(/\s+/g, '')
                    linkDiv.className = "sidebar-section-link-wrapper sidebar-section-custom-link"
                    linkDiv.innerHTML = `<a href="${link.src}" class="sidebar-section-link sidebar-section-link-everything sidebar-row ember-view">
                            <span class="sidebar-section-link-prefix icon" id="link_${linkTitleTrim}"></span>
                            <span class="sidebar-section-link-content-text"> ${link.title} </span>
                        </a>
                      `
                    parentEl.append(linkDiv)
                    
                    let linkIcon = document.getElementById("link_" + linkTitleTrim)
                    if (linkIcon && link.icon) {
                        linkIcon.innerHTML = `<svg viewBox="0 0 640 512" class="fa d-icon svg-icon prefix-icon svg-string d-icon-${link.icon}" xmlns="http://www.w3.org/2000/svg">
                                <use xlink:href="#${link.icon}"></use>
                            </svg>
                        `
                    }
                })
            }
        }, 100)
    }
})
</script>

و CSS المكمل:

.sidebar-section-content {
  display: flex; /* إعداد تخطيط مرن لإعادة ترتيب الأشياء */
  flex-direction: column;
  .sidebar-more-section-links-details {
    order: +1;
  }
}

.sidebar-wrapper li a.sidebar-section-link-about {
    display: none;
}

.sidebar-wrapper li a.sidebar-section-link-faq {
    display: none;
}

.sidebar-more-section-links-details-content-secondary .sidebar-section-link.sidebar-section-link-about {
    display: none;
}

.sidebar-more-section-links-details-content-secondary .sidebar-section-link.sidebar-section-link-faq {
    display: none;
}
إعجابَين (2)

أردت فقط لفت انتباهك إلى هذا الموضوع الذي ظهر للتو:

يرجى تقديم ملاحظات في هذا الموضوع!

6 إعجابات

تم إغلاق هذا الموضوع تلقائيًا بعد 42 ساعة. لم يعد يُسمح بالردود الجديدة.