كيفية استبدال النص والتحديث ديناميكيًا

نحتاج إلى إضافة إخلاء مسؤولية أو إفصاح إلى منشورات معينة (حوالي 100 منها وما زالت تتزايد). قد يتغير الإفصاح في المستقبل، لذا أود إضافة [DISCLOSURE-GOES-HERE] إلى كل منشور من المنشورات المائة. يمكننا إضافته يدويًا، فهذه ليست مشكلة. ولكن عندما نقوم بتحديث الإفصاح الخاص بنا في المستقبل، أريد فقط تغييره في مكان واحد.

ما جربته:

  1. الكلمات المراقبة (Watched Words). المشكلة هي أن المنشورات الحالية لا تعرض الإفصاح المحدث حتى تقوم بتعديل المنشور. هذا يلغي الغرض من حالة الاستخدام هذه.

  2. جافاسكريبت لاستبدال innerHTML للعنصر. لا بد أنني فعلت ذلك بشكل خاطئ - فقد تسبب هذا في أخطاء حول استبدال عقدة فرعية:

    <script type="text/discourse-plugin" version="0.8">
        var disclosures = "• إفصاحات هامة: نحن لسنا مسؤولين، إلخ، إلخ."
        api.decorateCooked($elem => {
            var el = $elem[0];
            el.innerHTML = el.innerHTML.replace('[DISCLOSURE-GOES-HERE]', disclosures);
        });
    </script>
    
  3. مكون سمة الربط التلقائي (Auto-linkify theme component). أحببته لأشياء أخرى، لكنني أريد عرض نص الإفصاح، وليس رابطًا للإفصاح.

  4. أعلم أنه يمكنك استبدال النص من وحدة تحكم Rails، لكنني أريد أن يحتفظ به المشرفون.

لقد قمت بأشياء مماثلة بناءً على الرمز الموجود في مكون ربط الكلمات تلقائيًا.

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

إذا لم تقم بتغيير الإخلاء بشكل متكرر، فربما يمكنك إعادة خبز جميع المشاركات التي تطابق نمطًا عند تغييره.

هذا الحل له ميزة عدم إعادة عرض هذا النص على كل مشاركة في كل مرة يتم عرضها.

5 إعجابات

هناك نهج نصي سيساعد هنا أيضًا: اجعل رسالة الإفصاح “دائمة الخضرة”، واربط بتفاصيل التحذير. بدلاً من…

إفصاحات هامة: نحن لسنا مسؤولين أو عرضة للمساءلة أو حتى على علم بالمطالبات الواردة في هذا الموضوع.

…اختر شيئًا مثل:

إفصاحات هامة: يحتوي هذا الموضوع على محتوى قد يحتاج إلى مزيد من السياق، متوفر في قائمة الإفصاحات

بعد ذلك، يمكن أن يكون الجزء الأكبر من تحديثك هو تلك الصفحة الواحدة، والتي يمكن أن تكون أيضًا موضوعًا في Discourse (سهل التحرير/التحديث!). :slight_smile:

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