تغيير الأيقونات عالميًا

نعم، اتبع هذا الدليل: Replace Discourse's default SVG icons with custom icons in a theme

إعجابَين (2)

رفع، من فضلك. لدي نفس السؤال.

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

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

إعجابَين (2)

تم تغيير أيقونة الإعجاب مؤخرًا من “القلب” إلى “قارئ الكتب”.

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

Capture166

استخدمت الرأس التالي، مع إضافة جميع الخيارات الممكنة التي خطرت ببالي:

   <script type="text/discourse-plugin" version="0.8">
        api.replaceIcon('d-unliked', 'book-reader');
        api.replaceIcon('d-liked', 'book-reader');
        api.replaceIcon('heart', 'book-reader');
        api.replaceIcon('new read', 'book-reader');
        api.replaceIcon('d-icon-heart', 'book-reader');
        api.replaceIcon('notification.liked', 'book-reader');  // التنبيهات
        api.replaceIcon('notification.liked_2', 'book-reader');  // التنبيهات
        api.replaceIcon('notification.liked_many', 'book-reader');  // التنبيهات

    </script>

تم استبدال القلب في جميع أنحاء المنصة، باستثناء قائمة التنبيهات المنسدلة…

أي أفكار؟

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

حاول إضافة ما يلي أيضًا

api.replaceIcon('notification.liked_consolidated', 'book-reader');

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

شكرًا على الرد، دانييلا!

تمت الإضافة، لكن لا يزال لا يوجد أي تغيير. لا يزال القلب يظهر كأيقونة الإشعارات.

   <script type="text/discourse-plugin" version="0.8">
        api.replaceIcon('d-unliked', 'book-reader');
        api.replaceIcon('d-liked', 'book-reader');
        api.replaceIcon('heart', 'book-reader');
        api.replaceIcon('new read', 'book-reader');
        api.replaceIcon('d-icon-heart', 'book-reader');
        api.replaceIcon('notification.liked', 'book-reader');  
        api.replaceIcon('notification.liked_2', 'book-reader');  
        api.replaceIcon('notification.liked_many', 'book-reader');  
        api.replaceIcon('notification.liked_consolidated', 'book-reader');  

    </script>
    

باستثناء هذه الحالة، استبدلت أيقونة book-reader جميع أيقونات القلب في كل مكان.

ظننت أنها قد تكون صراعًا في الأيقونات، لذا غيّرت من “book-reader” إلى “pencil”، لأنني أعرف أن الإشعارات يمكنها استخدام تلك الأيقونة. لم ينجح الأمر، لا يزال القلب ظاهرًا.

هل لديك أي أفكار؟

لقد حاولت استبدال أيقونة envelope بأيقونة inbox، ولكن التغييرات لا تُطبق على الأيقونات الموجودة داخل لوحة قائمة المستخدم. هل يجب استهدافها بطريقة معينة؟

المقتطف الخاص بي:

// {theme}/javascripts/discourse/api-initializers/init-theme.gjs

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer((api) => {
  api.replaceIcon("envelope", "inbox");
});

مرحباً @jrgong :waving_hand:
هنا يمكنك العثور على بدائل الأيقونات التي تحتوي على الإشعارات.

أضف هذا السطر إلى المقتطف الخاص بك:

api.replaceIcon("notification.private_message", "inbox");
إعجاب واحد (1)