nodebb-plugin-aliexpress-preview
v1.1.0
Published
Click-to-preview tooltip for AliExpress links in posts - server fetches and caches the product title/image/price once per URL.
Readme
nodebb-plugin-aliexpress-preview
סמל קטן (זכוכית מגדלת) ליד כל קישור ל-aliexpress.com בתוך פוסט - לחיצה עליו פותחת חלונית קטנה עם תמונת המוצר, שמו, ומחירו (אם נמצא), בלי לצאת מהפורום. עובד זהה במחשב ובנייד (זו לחיצה, לא ריחוף).
מה זה כולל
- בשרת (
library.js, מותקן כפלאגין) - שולף פעם אחת בלבד לכל קישור (לתמיד, לכל הפורום) את תגיות ה-og:title/og:image/og:descriptionואת המחיר (מ"נתונים מובנים" JSON-LD, או מתגיותproduct:price:*כגיבוי) מדף המוצר, שומר ב-DB של הפורום, ומחזיר ללקוח. כתובות שאינן https על דומיין aliexpress.com (או תת-דומיין שלו) נדחות מיידית - אי אפשר להשתמש בזה כ"פרוקסי" לשליפת כתובות אחרות. - בדפדפן (
static/lib/aliexpress-preview-client.js, מודבק ב-Custom JS) - מוסיף את הסמל ליד כל קישור כזה, ומציג את החלונית בלחיצה עליו.
שימו לב: אין כאן אפשרויות מוצר (צבע/מידה/סוג) - אלה כמעט תמיד לא זמינות בקוד ה-HTML הראשוני של הדף (נטענות בנפרד ע"י קוד ה-JavaScript של עלי אקספרס עצמה מתוך מבנה פנימי לא-מתועד), ולכן הוחלט במפורש לא לכלול אותן - זה היה דורש הנדסה לאחור הרבה יותר שברירית מהתמונה/שם/מחיר.
התקנה - שלב 1: הפלאגין בשרת
- פרסמו את התיקייה הזו ל-npm (
npm publish --access publicמתוך תיקיית הפלאגין). - ב-ACP → הרחבות → תוספים → מציאת תוספים - חפשו
aliexpress-preview, התקינו, הפעילו, ואז "בניה מחדש והפעלה מחדש".
התקנה - שלב 2: קוד הלקוח
מדביקים את כל התוכן של static/lib/aliexpress-preview-client.js ב-ACP →
מראה חיצוני → תוכן מותאם אישית → Custom JavaScript - מתחת לקוד הקיים,
לא במקומו.
איך זה עובד בפועל
- ליד כל קישור לעלי אקספרס מופיע סמל עגול קטן עם זכוכית מגדלת, צמוד לקישור בצדו הימני. הקישור עצמו ממשיך לעבוד רגיל - הסמל הוא תוספת, לא שינוי של הקישור.
- לחיצה על הסמל פותחת חלונית עם "טוען תקציר מוצר...", ואז תמונה + שם + מחיר (מה שנמצא - אם לא הצלחנו לשלוף כלום, החלונית נעלמת בשקט, בלי הודעת שגיאה מציקה). לחיצה שנייה על אותו סמל סוגרת את החלונית.
- לחיצה על "פתח באתר" בתוך החלונית ממשיכה לעלי אקספרס כרגיל (בלשונית חדשה).
- כל קישור נשלף מעלי אקספרס פעם אחת בלבד לכל הפורום, לתמיד - התוצאה נשמרת ב-DB. כל לחיצה נוספת (גם ממשתמש אחר, גם בעוד חצי שנה) נשלפת מהמסד המקומי בלבד, בלי לגעת בעלי אקספרס שוב.
- יש הגבלת קצב בסיסית (עד 20 בקשות שליפה לדקה למשתמש/IP) כדי שאף אחד לא יוכל להציף את השרת בבקשות.
מגבלה אמיתית שכדאי לדעת עליה
עלי אקספרס יכולה בעתיד לחסום/לשנות את מבנה הדף שלה בכל רגע (הגנות אנטי-בוט, קאפצ'ות וכו') - זה סיכון מובנה בכל דבר שמבוסס על שליפת דף חיצוני, ולא עניין של תקינות הקוד. בדיקה ידנית שעשינו לפני הבנייה הראתה ששליפה בסיסית עם User-Agent של דפדפן רגיל עובדת, אבל אין לזה הבטחה לטווח ארוך. אם זה יפסיק לעבוד - החלונית פשוט לא תופיע (בלי לשבור שום דבר אחר בפורום), וצריך יהיה לבדוק מחדש מה השתנה.
ביצועים
העומס בפועל זניח: הבקשה החוצה לעלי אקספרס קורית פעם אחת בלבד לכל קישור ייחודי (לא בכל לחיצה, לא לכל משתמש), עם timeout קצר (8 שניות) ותקרת גודל קריאה (600KB - קצת יותר מרק ה-head, כי נתוני המחיר לפעמים יושבים רחוק יותר בדף) כדי שזה לעולם לא "יתקע" משאב בשרת.
