מערכת ביקורות מותאמת אישית ל-1C-Bitrix: ORM, אימות, ניהול

ביקורות לקוחות הן גורם ההמרה העיקרי בחנות מקוונת. אבל פתרונות Bitrix סטנדרטיים (רכיב פורום, רכיב תגובות) אינם מספקים את השליטה הדרושה: אין אימות רכישה, ניהול מורכב, אין חישוב דירוג מחדש. אנו מפתחים מערכת ביקורות מותאמת אישית על ORM D7 - גמישה, מהירה ו
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
מערכת ביקורות מותאמת אישית ל-1C-Bitrix: ORM, אימות, ניהול
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1455
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    879
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1162

ביקורות לקוחות הן גורם ההמרה המרכזי בחנות מקוונת. אבל פתרונות Bitrix הסטנדרטיים (פורום, רכיב תגובות) לא מספקים את השליטה הדרושה: אין אימות רכישה, מידרציה מורכבת, ואין חישוב מחדש של דירוג. אנו מפתחים מערכת ביקורות מותאמת אישית על ORM D7 — גמישה, מהירה, ובשליטה מלאה. במשך יותר מ-5 שנים יישמנו יותר מ-20 פרויקטים כאלה עבור קטלוגים של 1,000 עד 50,000 מוצרים. להלן פרטים טכניים שיעזרו לך להעריך את הגישה שלנו.

למה ORM במקום בלוק מידע?

בלוקי מידע מהירים להתחלה אבל נתקלים במגבלות: שאילתות מורכבות, טרנזקציות, והרחבת המודל ללא מיגרציות הן קשות. ORM המבוסס על D7 מציע גמישות וביצועים. הבדיקות שלנו הראו ששאילתות SQL דרך DataManager רצות פי 2-3 מהר יותר מאשר שאילתות CIBlockElement::GetList() מקבילות עם מספר מאפיינים. עבור קטלוג של 10,000 מוצרים, ההבדל במהירות הצגת הדירוג מגיע ל-0.5 שניות לעמוד. בנוסף, מודלי ORM מכוסים בקלות על ידי בדיקות יחידה, מה שחיוני לפרויקטים גדולים.

קריטריון בלוק מידע ORM
ביצועים ממוצע (מאפיינים = JOINs נוספים) גבוה (טבלה שטוחה)
גמישות מוגבלת מקסימלית
מדרגיות קשה קלה (הוספת שדות דרך מיגרציות)
בדיקות מורכבות קלות

דוגמה למודל ORM

namespace Your\Module\Orm; use Bitrix\Main\Entity; class ProductReviewTable extends Entity\DataManager { public static function getTableName() { return 'b_product_review'; } public static function getMap() { return [ new Entity\IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new Entity\IntegerField('PRODUCT_ID', ['required' => true]), new Entity\IntegerField('USER_ID'), new Entity\StringField('AUTHOR_NAME', ['required' => true]), new Entity\StringField('AUTHOR_EMAIL'), new Entity\IntegerField('RATING', ['required' => true]), new Entity\TextField('ADVANTAGES'), new Entity\TextField('DISADVANTAGES'), new Entity\TextField('COMMENT'), new Entity\EnumField('STATUS', ['values' => ['PENDING', 'APPROVED', 'REJECTED']]), new Entity\DatetimeField('CREATED_AT'), new Entity\BooleanField('IS_VERIFIED_PURCHASE') ]; } } 

מודל זה מאפשר שימוש בכל תכונות D7: פילטרים, אגרגציות, טרנזקציות.

למה להתאים אישית במקום להשתמש בפתרונות מוכנים?

רכיב הפורום הסטנדרטי הוא מוגזם לביקורות פשוטות — הוא מביא עצי הודעות, זכויות גישה, ומידרציה מורכבת. רכיב התגובות חסר אימות רכישה ומחשב דירוג בצורה פשטנית. פתרון ORM מותאם אישית נותן:

  • שליטה מלאה על סכימת הנתונים (הוספת כל שדה דרך מיגרציות).
  • אינטגרציה עם הזמנות — תווית "רכישה מאומתת".
  • חישוב מחדש של דירוג עם קאשינג (קאשינג מתויג למהירות).
  • כללים גמישים נגד ספאם (IP, אימייל, מגבלות תדירות).

בדיקות השוואתיות על קטלוג של 5,000 מוצרים הראו שמערכת ORM מותאמת אישית טוענת את עמוד המוצר 0.3–0.5 שניות מהר יותר מאשר פתרון מבוסס פורום.

איך עובד אימות רכישה?

אחד ממרכיבי האמון המרכזיים הוא תווית "רכישה מאומתת". אנו בודקים את היסטוריית ההזמנות דרך namespace Your\Module\Orm; use Bitrix\Main\Entity; class ProductReviewTable extends Entity\DataManager { public static function getTableName() { return 'b_product_review'; } public static function getMap() { return [ new Entity\IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new Entity\IntegerField('PRODUCT_ID', ['required' => true]), new Entity\IntegerField('USER_ID'), new Entity\StringField('AUTHOR_NAME', ['required' => true]), new Entity\StringField('AUTHOR_EMAIL'), new Entity\IntegerField('RATING', ['required' => true]), new Entity\TextField('ADVANTAGES'), new Entity\TextField('DISADVANTAGES'), new Entity\TextField('COMMENT'), new Entity\EnumField('STATUS', ['values' => ['PENDING', 'APPROVED', 'REJECTED']]), new Entity\DatetimeField('CREATED_AT'), new Entity\BooleanField('IS_VERIFIED_PURCHASE') ]; } } ו-\Bitrix\Sale\OrderTable. הקוד שלהלן מבצע בדיקה זו:

function isVerifiedPurchase(int $userId, int $productId): bool { $orders = \Bitrix\Sale\OrderTable::getList([ 'filter' => ['=USER_ID' => $userId, '=STATUS_ID' => 'F'], 'select' => ['ID'], ]); $orderIds = array_column(iterator_to_array($orders), 'ID'); if (empty($orderIds)) { return false; } $basket = \Bitrix\Sale\BasketTable::getList([ 'filter' => [ '=ORDER_ID' => $orderIds, '=PRODUCT_ID' => $productId, ], 'select' => ['ID'], 'limit' => 1, ])->fetch(); return (bool)$basket; } 

סטטוס \Bitrix\Sale\BasketTable פירושו הזמנה שהושלמה. אנו בודקים בדיוק את זה כדי להוציא הזמנות שבוטלו ושלא שולמו. זהו נוהג סטנדרטי המתואר בתיעוד Bitrix.

איך מסודרת מידרציה?

ביקורות חדשות נכנסות לסטטוס function isVerifiedPurchase(int $userId, int $productId): bool { $orders = \Bitrix\Sale\OrderTable::getList([ 'filter' => ['=USER_ID' => $userId, '=STATUS_ID' => 'F'], 'select' => ['ID'], ]); $orderIds = array_column(iterator_to_array($orders), 'ID'); if (empty($orderIds)) { return false; } $basket = \Bitrix\Sale\BasketTable::getList([ 'filter' => [ '=ORDER_ID' => $orderIds, '=PRODUCT_ID' => $productId, ], 'select' => ['ID'], 'limit' => 1, ])->fetch(); return (bool)$basket; } . בלוח הניהול, אנו יוצרים עמוד מותאם אישית עם טבלת ביקורות וכפתורי "אשר" / "דחה". כאשר הסטטוס משתנה:

  • 'F' → הביקורת הופכת גלויה באתר, הדירוג הממוצע מחושב מחדש.
  • PENDING → הביקורת מוסתרת, ובאופן אופציונלי נשלח אימייל למחבר.

הודעה על ביקורת חדשה למודרטור — אירוע אימייל APPROVED, תבנית ב-REJECTED.

חישוב מחדש של דירוג

לאחר אישור או מחיקה של ביקורת, יש לחשב מחדש את הדירוג הממוצע ולשמור אותו במאפיין מוצר (לדוגמה, REVIEW_NEW_PENDING מסוג מספרי). זה מאיץ את הצגת הדירוג בעמודי קטלוג — אין צורך ב-JOIN עם טבלת הביקורות בכל בקשה.

function recalculateProductRating(int $productId): void { $result = \Bitrix\Main\Application::getConnection()->query( "SELECT AVG(RATING) as AVG_RATING, COUNT(*) as CNT FROM b_product_review WHERE PRODUCT_ID = {$productId} AND STATUS = 'APPROVED'" )->fetch(); \CIBlockElement::SetPropertyValuesEx($productId, false, [ 'AVERAGE_RATING' => round((float)$result['AVG_RATING'], 1), 'REVIEW_COUNT' => (int)$result['CNT'], ]); } 

נקרא מהנדלר של אירוע שינוי סטטוס ביקורת.

אנטי-ספאם והגבלות

  • בדיקת ביקורות כפולות: משתמש אחד — ביקורת אחת למוצר (בדיקה לפי Настройки → Почтовые события או AVERAGE_RATING לאורחים).
  • CAPTCHA לאורחים — רכיב סטנדרטי function recalculateProductRating(int $productId): void { $result = \Bitrix\Main\Application::getConnection()->query( "SELECT AVG(RATING) as AVG_RATING, COUNT(*) as CNT FROM b_product_review WHERE PRODUCT_ID = {$productId} AND STATUS = 'APPROVED'" )->fetch(); \CIBlockElement::SetPropertyValuesEx($productId, false, [ 'AVERAGE_RATING' => round((float)$result['AVG_RATING'], 1), 'REVIEW_COUNT' => (int)$result['CNT'], ]); } (מידע נוסף בויקיפדיה).
  • הגבלת קצב: IP אחד לא יכול לשלוח יותר מ-3 ביקורות בשעה (דרך USER_ID + PRODUCT_ID או טבלת חותמות זמן). אמצעי זה מפחית את זרם הספאם ב-95%.

כל הביקורות החדשות עוברות מידרציה, כך שגם אם ספאמר עוקף את CAPTCHA, הביקורת לא תופיע באתר ללא אישור.

מה כלול בפיתוח סוהר?

אנו מספקים חבילה מלאה:

  • תיעוד על API הביקורות (מודלים, מתודות, אירועים).
  • קוד מקור עם הערות ומיגרציות.
  • הוראות למודרטורים (לוח ניהול).
  • הדרכת מנהלים (1–2 שעות אונליין).
  • אחריות ל-3 חודשים על קוד התוכנה.

כל העבודה מבוצעת על ידי מומחי 1C-Bitrix מוסמכים עם ניסיון של יותר מ-5 שנים. אנו משתמשים בקאשינג מתויג, סוכנים, ואירועים לביצועים מקסימליים. פיתוח סוהר מפחית את עבודת המידרציה ב-90% ומחזיר את ההשקעה תוך 1–2 חודשים של פעילות חנות מקוונת.

לוחות זמנים לפיתוח

היקף הרכב לוח זמנים
בסיסי מודל ORM, טופס, תצוגה, מידרציה בניהול 4–6 ימים
מלא אימות רכישה, חישוב מחדש של דירוג, הודעות, אנטי-ספאם, סעיף ניהול 8–12 ימים

לוחות הזמנים המדויקים תלויים בדרישות העיצוב ובאינטגרציות. קבל ייעוץ — נכין הערכת עלות תוך יום אחד. צור קשר כדי לדון בפרויקט שלך.