nodebb-plugin-topic-card-styles
v1.0.0
Published
Admin-selectable custom card designs for individual topics in list views, starting with a driving-test design.
Readme
nodebb-plugin-topic-card-styles
מאפשר למנהלים לבחור "עיצוב כרטיס" מיוחד לנושא ספציפי, בכל עמודי רשימת נושאים (נושאים אחרונים/קטגוריה/לא נקראו וכו') - במקום השורה הרגילה של NodeBB. כרגע קיים עיצוב אחד: "מבחן דרכים", אבל המנגנון בנוי כך שקל להוסיף עוד עיצובים בעתיד בלי לשנות איך הבחירה עצמה עובדת.
מה זה כולל
- בשרת (
library.js, מותקן כפלאגין) - שומר איזה עיצוב נבחר לכל נושא (SocketPlugins.topicCardStyles.setStyle, מנהלים בלבד), ומחזיר לרשימות את הנתונים הדרושים לצייר את הכרטיס (SocketPlugins.topicCardStyles.getRowData, פתוח לכולם - כדי שכל גולש יראה את הכרטיס המעוצב, לא רק מנהלים). - בדפדפן (
static/lib/topic-card-styles-client.js, מודבק ב-Custom JS) - מוסיף תפריט בחירת עיצוב (למנהלים בלבד, קבוע על כל שורה), ומחליף שורות שנבחר להן עיצוב בכרטיס המעוצב בפועל.
התקנה - שלב 1: הפלאגין בשרת
- פרסמו את התיקייה הזו ל-npm (
npm publish --access publicמתוך תיקיית הפלאגין). - ב-ACP → הרחבות → תוספים → מציאת תוספים - חפשו
topic-card-styles, התקינו, הפעילו, ואז "בניה מחדש והפעלה מחדש".
התקנה - שלב 2: קוד הלקוח
מדביקים את כל התוכן של static/lib/topic-card-styles-client.js ב-ACP →
מראה חיצוני → תוכן מותאם אישית → Custom JavaScript - מתחת לקוד הקיים,
לא במקומו.
איך זה עובד בפועל
- בכל עמוד רשימת נושאים, מנהל רואה על כל שורת נושא (לא רק נושאי "מבחן דרכים") תפריט נגלל קטן "🎨 עיצוב שורה" עם האפשרויות "רגיל (ברירת מחדל)" ו"מבחן דרכים". בחירה שומרת מיידית בשרת ומעדכנת את התצוגה, בלי רענון עמוד.
- נושא שנבחר לו "מבחן דרכים" - כל הגולשים (לא רק מנהלים) רואים אותו כרטיס גדול ומעוצב במקום השורה הרגילה: תמונה גדולה (או שתיים - אחת גדולה ואחת קטנה באותו מלבן, אם יש), כותרת, ושלושה "ריבועי" סטטיסטיקה בשורה אחת למטה - צפיות/פוסטים/הצבעות (באותו רעיון של הריבועים שכבר קיימים בשורות הרגילות של הפורום, רק מסודרים מחדש בתוך הכרטיס).
- בחזרה ל"רגיל" - השורה המקורית של NodeBB פשוט חוזרת להופיע (היא מעולם לא נמחקה, רק הוסתרה) - בלי צורך ברענון עמוד.
מאיפה מגיעות התמונות
קודם כל מנסים את מנגנון ה-thumbnails הרשמי של NodeBB עצמו (אותן
תמונות שכבר מוצגות היום ליד חלק מהשורות ברשימה - תמונה שנבחרה בפועל בזמן
כתיבת/עריכת הפוסט) - זה המקור הכי אמין, כי הוא כבר קיים ועובד בפורום. רק
לנושאים שאין להם thumbnail בכלל (או שהפונקציה הזו לא קיימת בגרסת NodeBB
המותקנת) - יש גיבוי שמחפש תמונה (Markdown  או <img> גולמי)
בתוך תוכן הפוסט הראשי עצמו. אם אין שום תמונה משני המקורות - הכרטיס מוצג
עם סמל 🚗 כללי במקום תמונה.
הוספת עיצוב חדש בעתיד
- ב-
static/lib/topic-card-styles-client.js: מוסיפים{ id, label }חדש למערךSTYLES, ומטמיעים את הציור עצמו ב-renderCard(ענף נוסף לפי ה-id). - ב-
library.js: מוסיפים את אותוidל-KNOWN_STYLES(אחרת השרת ידחה בחירה של העיצוב הזה) - ואם העיצוב צריך נתונים נוספים (כותרת/תמונות וכו', כמו "מבחן דרכים"), מוסיפים אותו גם ל-STYLES_NEEDING_DATA. - מפרסמים מחדש (npm publish + Custom JS) - כמו כל שינוי בפלאגינים האלה.
ביצועים
לכל עמוד רשימה יש קריאה אחת מרוכזת (getRowData) לכל השורות החדשות
שמופיעות בו (לא קריאה נפרדת לכל שורה) - גם בגלילה אינסופית. נושאים
שאין להם עיצוב נבחר (רוב הנושאים בפורום, כברירת מחדל) לא גורמים לשום
שליפה נוספת (לא כותרת, לא תמונות) - רק הבדיקה הבסיסית "איזה עיצוב נבחר
לו" (שאילתה זולה אחת לכל השורות המרוכזות יחד).
