Dezvoltatorii 1C-bitrix - evaluările vă creează propriile criterii de clasificare

În timp ce documentația pentru "Evaluări" este în curs de dezvoltare, vreau să prezint un exemplu de realizări ale propriului criteriu de evaluare.

În primul rând, vă spun ce este ratingul și cum este calculată.






O evaluare este o estimare care constă dintr-un set de criterii, de exemplu, cum ar fi "votarea pentru un mesaj de utilizator" sau "activitatea pe un forum".
Fiecare criteriu, pe baza rezultatelor sale, utilizează logica proprie. Datorită acestei abordări este posibilă implementarea oricărei formule.







Dezvoltatorii 1C-bitrix - evaluările vă creează propriile criterii de clasificare

Criterii de evaluare și formule

Când se calculează rezultatele criteriilor, se calculează scorul final.
Aceasta poate fi fie o sumă de criterii, fie o valoare medie.

Acum, să trecem la modul de creare a criteriului dvs. de evaluare.
De exemplu, creați un nou criteriu "Vot pentru utilizator".
Puteți vedea exemple de alte criterii în forumul și blogul modulului.


Crearea unui criteriu constă în trei etape:
1. Creați o clasă și înregistrați evenimente;
2. Configurați criteriile și scrieți funcțiile de calcul;
3. Adăugați componentele votului de vot în partea dreaptă a codului;


Creați o clasă și înregistrați evenimentele.

Dezvoltatorii 1C-bitrix - evaluările vă creează propriile criterii de clasificare

Crearea unui fișier de criterii de rating


La rădăcina modulului dvs., trebuie să includeți această clasă în fișierul include.php.


Funcția este furnizată cu array $ arConfigs. în care există date privind ratingul și date privind setările criteriului.

Înainte de a număra, trebuie să efectuați funcția CRatings :: AddComponentResults ($ arConfigs); și ștergeți toate calculele vechi.

Apoi scrieți logica de calcul, adăugați rezultatul la tabela b_rating_component_results
RATING_ID este ID-ul de rating.
MODULE_ID - identificatorul modulului pentru care este înregistrat.
RATING_TYPE este tipul de vot.
NAME este identificatorul criteriului.
COMPLEX_NAME este un identificator complex al criteriului.
ENTITY_TYPE_ID - Obiectul de evaluare.
ENTITY_ID este identificatorul obiectului de evaluare, în cazul nostru este ID-ul utilizatorului.
CURRENT_VALUE - rezultatul calculării criteriului pentru un anumit ENTITY_ID, în cazul nostru este suma tuturor voturilor per utilizator înmulțită cu coeficientul specificat în setarea de rating.
Când adăugăm rezultate, recomand cu tărie utilizarea constructului INSERT ... SELECT pentru a minimiza sarcina proiectului atunci când recalculați evaluarea. Pe exemplul numărării activității pe forum (cu un număr mare de intrări), utilizarea acestui design a redus timpul de numărare de la 30 la 0,6 secunde!

funcția OnGetRatingObject
Funcția oferă obiecte disponibile pentru evaluare

Cel mai probabil, în actualizările viitoare, această funcție va fi mutată la clasa CRatings.

funcția OnAfterAddRating
funcția OnAfterUpdateRating
În aceste funcții, se numește intrarea utilizatorului introdusă (câmpurile specificate în matricea de configurare), funcționează la adăugarea și editarea ratingului.


funcția __CheckFields
Verificarea intrărilor de utilizator (câmpurile specificate în matricea de configurare) în timp ce salvați sau editați ratingul.

Aici trebuie să verificați toate câmpurile pe care le utilizați în criterii.

funcția __AssembleConfigDefault
O funcție auxiliară care colectează valorile implicite pentru câmpurile specificate de matricea de configurare.

Cel mai probabil, în actualizările viitoare, această funcție va fi mutată la clasa CRatings.

Adăugați componenta "vot de vot" (bitrix: rating.vote)
În toate locurile în care doriți să afișați un vot de rating, trebuie să adăugați un apel la componenta Bitrix: rating.vote.

Componenta bitrix: rating.vote funcționează în două moduri:
1. Primeste automat date - este necesar sa o folositi pentru un singur apel, de exemplu, intr-un card de utilizator.
2. Trebuie să trimiteți date către componentă - trebuie să-l utilizați pentru mai multe apeluri, de exemplu, în mesaje pe forum.


De exemplu, vom specifica ce cod să adăugați în șablonul dvs. pentru componenta complexă a forumului (bazată pe șablonul .default).

Deschideți forumul de fișiere \ templates \ (șablonul dvs.) \ bitrix \ forum.topic.read \ (șablonul dvs.) \ template_message.php

Cât de des se face renumele ratingului?

Întrebare bună, vă voi spune exact cum se face calculul.

Calcularea ratingurilor are loc în două etape:
1. Numărarea rezultatelor criteriilor pe baza logicii lor;
2. Calcularea rezultatelor de rating pe baza rezultatelor calculului criteriilor;

Rezultatele criteriilor sunt recalculate pe baza valorii REFRESH_TIME (rotunjită la o oră mai târziu).
De exemplu, dacă setați Timp_de_Actualizare = 3600 - criteriu va fi calculată în fiecare oră, dacă setați Timp_de_Actualizare = 7000 - în fiecare secundă oră.

Rezultatul evaluării se calculează în fiecare oră, pe baza rezultatelor deja calculate ale "criteriilor de rating". Dacă un criteriu din această rulare nu a fost luat în considerare, datele sunt luate din ultimul calcul.

L-am văzut pe Agent, pe lista agenților, atunci nu este periodic

Agentul este periodic, execută la fiecare oră funcția CRatings :: Calculate (ID-rating), care schimbă timpul de execuție următor la o oră.


Și încă un lucru:
Când creați, editați și clasificați ratingul din zona de administrare - toate criteriile de rating sunt recalculate obligatoriu, acest lucru se face pentru a avea ocazia de a vedea imediat rezultatul.

8-800-250-1860 Contactați-ne Harta site-ului
Website design -





Trimiteți-le prietenilor: