إيقاف مكون سمة لافتة البحث

خلال الأشهر القليلة الماضية، كنا نعمل على ميزة شريط ترحيب تُعد جزءًا من المنتج الأساسي لـ Discourse. يُعد شريط الترحيب الأساسي هذا بمثابة ترحيب للزوار الجدد والعودة إلى مجتمعك، ويسهل عليهم البحث عن المحتوى الذي يهم احتياجاتهم واهتماماتهم. مع وجود هذا الشريط الأساسي الجديد، نقوم الآن بإيقاف استخدام مكون قالب “شريط البحث” لتقليل تعقيد عروض منتجاتنا وضمان استفادة جميع مستخدمي Discourse من التحسينات المستمرة في الميزة الأساسية.

في هذا الموضوع، سنغطي ما يعنيه الإيقاف بالنسبة للمستخدمين الحاليين لمكون قالب “شريط البحث”.

إذا كنت عميلًا مُستضافًا لدينا…

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

سيتم خلال هذا النقل نسخ أي نصوص موقع قمت بتحديثها للعنصر النمطي (مثل search_banner.headline، search_banner.subhead، search_banner.search_button_text) وقيم إعدادات مكون القالب show on، plugin outlet، وbackground image إلى إعدادات الميزة الأساسية.

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

بعد هذا النقل، سيتم تعطيل مكون القالب ويمكن حذفه بأمان من صفحة القوالب والمكونات (/admin/config/customize/components).

إذا كنت مستخدمًا مُستضافًا ذاتيًا…

يجب أن تخطط للانتقال من مكون القالب إلى الميزة الأساسية بحلول 15 ديسمبر 2025. يمكنك القيام بذلك يدويًا أو باستخدام النص البرمجي المقدم.

التحويل اليدوي

إليك خريطة توضح كيف ترتبط إعدادات ونصوص موقع مكون شريط البحث مع نفس الميزات في شريط الترحيب الأساسي:

وصف الإعداد مكون شريط البحث النمطي ميزة شريط الترحيب الأساسية
نص العنوان المعروض على شريط الترحيب. search_banner.headline نص الموقع js.welcome_banner.header.anonymous_members و js.welcome_banner.header.logged_in_members نصوص الموقع
نص التوضيح المعروض على شريط الترحيب. search_banner.subhead نص الموقع js.welcome_banner.subheader.anonymous_members و js.welcome_banner.subheader.logged_in_members نصوص الموقع
النص المستخدم لزر البحث على الشريط. \* search_banner.search_button_text نص الموقع js.welcome_banner.search_placeholder نص الموقع
إعداد لتحديد الصفحات التي تظهر فيها شريط الترحيب. إعداد مكون القالب show on إعداد الموقع Welcome banner page visibility
إعداد لتحديد المكان الذي يظهر فيه شريط الترحيب على الصفحة. إعداد مكون القالب plugin outlet إعداد الموقع Welcome banner location
الصورة الخلفية المستخدمة على شريط الترحيب. إعداد مكون القالب background image light إعداد الموقع Welcome banner image

\* ملاحظة: لا تدعم ميزة شريط الترحيب الأساسي زر بحث صريح، لذلك نوصي بربط هذا النص بنص مكان البحث القابل للتخصيص للحصول على نتيجة مشابهة.

التحويل باستخدام النص البرمجي

يتكون التحويل من ثلاث مهام rake يجب تشغيلها بالترتيب التالي:

  1. نقل إعدادات المكون:
    themes:advanced_search_banner:1_migrate_settings_to_welcome_banner
  2. نقل ترجمات المكون:
    themes:advanced_search_banner:2_migrate_translations_to_welcome_banner
  3. تمكين الشريط الأساسي، واستبعاد المكون من القوالب التي تستخدمه، وتعطيل المكون:
    themes:advanced_search_banner:3_exclude_and_disable

ملفات \u003crandom_name\u003e.sh التي يجب تشغيلها داخل الحاوية:

  1. task_1.sh:
#!/bin/bash

cd /var/www/discourse && rake themes:advanced_search_banner:1_migrate_settings_to_welcome_banner
  1. task_2.sh:
#!/bin/bash

cd /var/www/discourse && rake themes:advanced_search_banner:2_migrate_translations_to_welcome_banner
  1. task_3.sh:
#!/bin/bash

cd /var/www/discourse && rake themes:advanced_search_banner:3_exclude_and_disable

من المستحسن تشغيل كل مهمة rake بشكل منفصل للحصول على تحكم أفضل في عملية التحويل.

كما تتوفر مهمة مريحة themes:advanced_search_banner:migrate_all لتشغيل الثلاثة بشكل متتالي، ولكن استخدمها على مسؤوليتك الخاصة.

9 إعجابات

هل تقصد شيئًا مثل هذا؟

#!/bin/bash
cd /var/www/discourse && rake themes:advanced_search_banner:migrate_settings_to_welcome_banner && rake themes:advanced_search_banner:migrate_translations_to_welcome_banner && rake themes:advanced_search_banner:exclude_and_disable

لا أعتقد أن الكثير من المستخدمين الذين يستضيفون أنفسهم سيستنتجون ذلك من <task_1_2_or_3>

هل من المرجح أن تفشل هذه المهام rake؟ هل يمكننا فقط تشغيلها جميعًا في وقت واحد؟ إذا كان الأمر كذلك، فلماذا لا نمتلك مهمة rake واحدة تقوم بجميعها؟

ربما يرغب الناس في شيء مثل هذا:

docker exec -t app bash -c `cd /var/www/discourse && rake themes:advanced_search_banner:migrate_settings_to_welcome_banner && rake themes:advanced_search_banner:migrate_translations_to_welcome_banner && rake themes:advanced_search_banner:exclude_and_disable`

إذن، بالنسبة للأشخاص الذين لا يفهمون كيفية القيام بذلك، فهم يفقدون جميع إعداداتهم القديمة والنصوص المخصصة، أليس كذلك؟

وماذا عن الأشخاص الذين لا يقومون بالترقية مرة أخرى حتى مارس؟ هل لا يزال بإمكانهم تشغيل تلك المهام rake حينها؟ لست متأكدًا من أهمية 15 ديسمبر.

3 إعجابات

سأترك زميلي الذي أنشأ النص البرمجي يساعدك في الجزء الأول من سؤالك، ولكن بالنسبة للأسئلتين الأخيرتين:

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

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

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

5 إعجابات

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

شكرًا لك، لقد قمنا بتحديث قسم ترحيل البرنامج النصي لجعله أوضح.

لا يمكننا ضمان نجاح بنسبة 100٪، ولكننا تأكدنا من أن حالات الفشل غير مرجحة للغاية.

نعم، لقد أضفنا مهمة ملائمة: themes:advanced_search_banner:migrate_all.

3 إعجابات

رائع! أعتقد أن هذا سيساعد كثيرًا. الأشخاص مثلنا لا يمانعون في تشغيل عدد قليل من المهام السريعة داخل حاوية، ولكن معظم المستضيفين الذاتيين، ليس كثيرًا.

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

ما أود فعله هو إيجاد طريقة لمعرفة ما إذا كان مكون السمة مثبتًا، ويفضل أن يكون ذلك من خلال واجهة برمجة التطبيقات. أعتقد أن هذا سيكون لسحب JSON لمكون السمة، وتشغيله من خلال jq والتصفية حسب اسم المكون. أعتقد أن هذا يجب أن يعمل، ولوحة التحكم الخاصة بي لديها مفتاح واجهة برمجة تطبيقات. ثم يمكنني جعل Ansible يقوم بتشغيل المهمة السريعة داخل الحاوية!

3 إعجابات

هل تم تغيير السمات الرسمية التي تقوم بتثبيت المكون تلقائيًا مسبقًا بحيث لا يقوم أحد بتثبيت المكون دون إدراك أنه يحتاج إلى تكوين لافتة الترحيب يدويًا في النواة لكي تعمل السمة في المستقبل؟

3 إعجابات

للعلم فقط، لقد قمت بتنفيذ مهام rake كما هو موصوف ويبدو أنها نجحت كما هو مخطط لها.

rake.txt.md (3.1 كيلوبايت)

إعجابَين (2)

تم تحديث جميع الثيمات الرسمية التي كانت تستخدم شريط البحث (Search Banner) وتم تحويلها لاستخدام شريط الترحيب (Welcome Banner):

4 إعجابات

هل يمكنني طرح سؤال بخصوص هذا؟ لقد استخدمت الوضع الآمن اليوم، وكان ذلك لأن اليوم هو المرة الأولى التي أرى فيها اللافتة بعد الترحيل (إنها معطلة في السمة الحالية الخاصة بي؛ تم تثبيت المكون مع سمة Air، وهي معطلة حاليًا).
لذا، لاحظت أن النصوص الموجودة في اللافتة تتطابق الآن مع نصوص لافتة البحث



ثم، قمت بتغيير لغة الواجهة الخاصة بي إلى اللغة الافتراضية لمنتدى (الألمانية)، ويبدو أنه لم يتم تغيير تلك النصوص.



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

نعم، تم تصميم برنامج الترحيل لترحيل نصوص لافتة البحث الافتراضية إلى نصوص لافتة الترحيب الأساسية.

لماذا تم ترحيل النصوص؟

تم تنفيذ الترحيل لأن لافتة البحث تم تثبيتها باستخدام سمة Air Theme - ولا يتحقق البرنامج النصي مما إذا كانت السمة الأصلية (في حالتك، سمة Air Theme) معطلة، وهو قصور في منطق البرنامج النصي.


يدعم برنامج الترحيل النصي لغات متعددة، إذا تم تعيينها: link to source code.

هذا يعني أنه لم يتم تعيين نصوص ألمانية للافتة البحث، لذلك لم يكن هناك شيء لترحيله.

بصفتي مؤلف برنامج الترحيل النصي، أعتذر عن هذا الإغفال لضمان ترحيل سلس. إذا أغفلت أي شيء في مشاركتك، أخشى أنني لن أتمكن من تقديم أي مساعدة أفضل، حيث لم أعد جزءًا من الفريق الأساسي. إذا كنت لا تزال بحاجة إلى أي مساعدة بخصوص هذا الأمر، فيجب أن يكون الشخص الذي أجرى الترحيل في 2025-12-15 قادرًا على المساعدة.

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

:thinking: ولكن لماذا أرى نصوصًا ألمانية في مكون السمة؟ هذه هي الترجمات الافتراضية التي تمت إضافتها منذ أكثر من عام.

لذا ما زلت لا أفهم حقًا الفرق بين الإنجليزية والألمانية. اللغة الوحيدة التي تبدو فيها نصوص الموقع مُعاد تعريفها هي الإنجليزية. لا الإسبانية، ولا الفرنسية، ولا الصينية، ولكن تمت ترجمة مكون لافتة البحث في كل هذه اللغات.