Az 1C-bites fejlesztők - a minősítések létrehozzák saját rangsorolási feltételeit

Míg a "Ratings" dokumentációja fejlesztés alatt áll, meg szeretném mutatni egy példát a saját minősítési kritériumom megvalósításáról.

Először is megmondom, hogy mi a minősítés és hogyan számítják ki.
A minősítés olyan kritériumokból álló becslés, mint például "felhasználói üzenetek szavazása" vagy "tevékenység a fórumon".
Minden kritérium az eredmények alapján saját logikát használ. Ennek a megközelítésnek köszönhetően bármilyen képletet megvalósíthatunk.

Az 1C-bites fejlesztők - a minősítések létrehozzák saját rangsorolási feltételeit

Értékelés kritériumai és képletek

Amikor a kritériumok eredményeit kiszámítjuk, kiszámítjuk a végeredményt.
Ez akár kritériumok összege, akár átlagérték lehet.

Most lépjünk tovább a minősítési kritérium létrehozásához.
Hozzon létre például egy új kritériumot: "A szavazó a felhasználó számára".
A modulok fórumán és blogján más szempontokat is láthat.


A kritérium létrehozása három szakaszból áll:
1. Hozzon létre egy osztályt és regisztrálja az eseményeket;
2. Konfigurálja a kritériumokat és írja le a számítási funkciókat;
3. Adja hozzá a minősítési szavazás összetevőit a kód megfelelő részeihez;


Hozzon létre egy osztályt és regisztrálja az eseményeket.

Az 1C-bites fejlesztők - a minősítések létrehozzák saját rangsorolási feltételeit

A minősítési kritérium fájl létrehozása


A modul gyökerén ezt az osztályt be kell illeszteni az include.php fájlba.


A függvény a $ arConfigs tömbhöz tartozik. amelyben van adat a minősítésről és a kritérium beállításairól.

A számlálás előtt el kell végeznie a CRatings :: AddComponentResults ($ arConfigs) funkciót; és törölje az összes régi számítást.

Ezután írja a számítási logikát, és adja hozzá az eredményt a b_rating_component_results táblához
A RATING_ID a minősítési azonosító.
MODULE_ID - annak a modulnak az azonosítója, amelyre számít.
A szavazás típusa a RATING_TYPE.
NAME a kritérium azonosítója.
A (z) COMPLEX_NAME a kritérium összetett azonosítója.
ENTITY_TYPE_ID - Az értékelő objektum.
ENTITY_ID az értékelő objektum azonosítója, esetünkben a felhasználói azonosító.
CURRENT_VALUE - az adott ENTITY_ID kritériumának kiszámításának eredménye, esetünkben ez az összes felhasználó szavazat összege, megszorozva a minősítési beállításban megadott együtthatóval.
Az eredmények hozzáadásakor javaslom az INSERT ... SELECT konstrukció használatát a projektterhelés minimalizálásához a minősítés újraszámításakor. A tevékenység számlálásának példáján (nagyszámú bejegyzéssel) a program használata a számlálási időt 30-ról 0,6 másodpercre csökkentette!

funkció OnGetRatingObject
A funkció elérhető objektumokat ad a minősítéshez

Valószínűleg a jövőbeni frissítésekben ez a funkció átkerül az CRatalitási osztályba.

funkció OnAfterAddRating
funkció OnAfterUpdateRating
Ezekben a funkciókban a bevitt adatok (a konfigurációs tömbben megadott mezők) felhasználói bevitele hívásra kerül, a minősítés hozzáadásakor és szerkesztésénél fogva működik.


funkció __CheckFields
A felhasználói bevitel ellenőrzése (a konfigurációs tömbben megadott mezők) a minősítés mentése vagy szerkesztése közben.

Itt ellenőriznie kell a kritériumok által használt összes mezőt.

függvény __AssembleConfigDefault
Segédfunkció, amely összegyűjti az alapértelmezett értékeket a konfigurációs tömb által megadott mezőkre.

Valószínűleg a jövőbeni frissítésekben ez a funkció átkerül az CRatalitási osztályba.

Adja hozzá a "szavazó szavazat" összetevőjét (bitrix: rating.vote)
Minden olyan helyen, ahol szavazási szavazást szeretne megjeleníteni, hozzá kell adnia egy hívást a bitrix összetevőhöz: rating.vote.

A bitrix: rating.vote komponens kétféleképpen működik:
1. Automatikusan fogadja az adatokat - egy hívásra, például egy felhasználói kártyára van szükség.
2. Adatot kell küldenie az összetevőnek - használnia kell több hívásra, például a fórumüzenetekben.


Példaként meg kell adnunk, hogy melyik kódot adjuk hozzá a sablonhoz a komplex fórum összetevőhöz (a .default sablon alapján).

Nyissa meg a fájl fórumát \ sablonok \ (a sablonodat) \ bitrix \ forum.topic.read \ (sablonod) \ template_message.php

Milyen gyakran fordul elő a minősítés?

Jó kérdés, pontosan megmondom, hogy a számítás hogyan történik.

A minősítések számítása két szakaszban történik:
1. A kritériumok eredményeinek számítása logikájuk alapján;
2. A minősítési eredmények kiszámítása a kritériumok kiszámításának eredményei alapján;

A kritériumok eredményeit a REFRESH_TIME érték alapján újraszámolják (egy óra múlva kerekítve).
Például, ha REFRESH_TIME = 3600 értéket állít be - a kritérium kiszámításra kerül óránként, ha REFRESH_TIME = 7000 értéket állít be - minden második órában.

A minősítés eredménye óránként számolódik a "minősítési kritériumok" már számított eredménye alapján. Ha ebben a futtatási kritériumot nem vettük figyelembe, az adatokat az utolsó számításból vettük.

Láttam az ügynököt, az ügynökök listáján, aztán nem rendszeres

Az ügynök rendszeres, minden órában végrehajtja a CRatings :: Calculate (ID-rating) funkciót, amely a következő végrehajtási időt egy óra múlva váltja át.


És még egy dolog:
A minősítés létrehozásakor, szerkesztésénél és minősítésénél az adminisztrációs területről - az összes minősítési kritériumot kötelezően újraszámítjuk, ez azért van így, hogy azonnal láthassuk az eredményt.

8-800-250-1860 Kapcsolat Oldaltérkép
Weboldal tervezés -