# Értékelések a felhasználói profiloldalon

> Egy felhasználó írt értékeléseinek, valamint a bejegyzéseire kapott értékelések átlagának és számának kiírása a JetEngine Profile Builder egyedi felhasználói oldalán.

Két gyakori feladat a felhasználói profiloldalon: kiírni az összes értékelést, amelyet a felhasználó írt, és kiírni a felhasználó bejegyzéseire kapott értékelések átlagát, számát és listáját. Mindkettő SQL-lekérdezéssel megy, a `jet_reviews` adatbázistáblából.

## Követelmények

- A JetEngine, az egyedi felhasználói oldallal (**Profile Builder**).
- A JetReviews.
- Az első feladathoz Elementor (ingyenes változat is elég) vagy a blokkszerkesztő.

## A felhasználó által írt értékelések

### 1. Az egyedi felhasználói oldal beállítása

1. Hozz létre egy statikus oldalt az **Oldalak** menüben.
2. Nyisd meg a **JetEngine → Profile Builder** oldalt, kapcsold be a **Single user page** kapcsolót, és a hasonló nevű mezőben válaszd ki az új oldalt.
3. Készíts egy sablont, amely majd az értékeléseket mutatja, és rendeld hozzá a **User Page** rész egyik eleméhez.
4. Kattints a **Save** gombra.

### 2. SQL-lekérdezés

1. Nyisd meg a **JetEngine → Lekérdezéskészítő** oldalt, és add hozzá az új lekérdezést.
2. A **Lekérdezés típusa** legyen **SQL/AI lekérdezés**, a **From table** mezőben pedig `jet_reviews`.
3. A **Where** feltételnél hasonlítsd össze az értékelés szerzőjét a lekérdezett felhasználóval: **Column** `author`, **Compare** **Equal**, **Value** a **Queried user ID** makró.
4. Mentsd a lekérdezést (**Add/Update Query**).

### 3. Listaelem

1. Nyisd meg a **JetEngine → Listázások/komponensek** oldalt, és kattints az **Új elem hozzáadása** gombra.
2. A **Listing source** értéke legyen **Query Builder**, és válaszd ki az előbb létrehozott SQL-lekérdezést.
3. Kattints a **Create Listing Item** gombra.
4. A **Dynamic Field** widgettel írd ki az értékelés adatait: az **Object Field** listában minden elérhető mező megtalálható. Annyi widgetet tegyél a sablonra, amennyi mező kell.
5. Mentsd a sablont (**Publish/Update**).

### 4. A lista a profiloldalon

1. Nyisd meg az Elementorban a profiloldalhoz rendelt sablont.
2. Tedd rá a **Listing Grid** widgetet, válaszd ki a létrehozott listasablont, és mentsd.
3. Nézd meg a profiloldalt: a felhasználó összes értékelése megjelenik.

## A felhasználó bejegyzéseire kapott értékelések

Itt azokat az értékeléseket gyűjtöd össze, amelyeket mások a felhasználó bejegyzéseihez írtak, és kiírod az átlagukat, a darabszámukat és a listájukat.

### SQL-lekérdezés

1. A **JetEngine → Lekérdezéskészítő** oldalon add hozzá az új lekérdezést, a **Lekérdezés típusa** legyen **SQL/AI lekérdezés**.
2. Az **Egyedi SQL-lekérdezés** (Custom SQL Query) lapon a **From table** értéke `jet_reviews`, és kapcsold be a **Use Join** kapcsolót.
3. Kapcsold hozzá a `posts` táblát. A **Join Type** legyen **Inner Join**; a **When current table column** értéke `ID`, az **Is equal to other table column** értéke `post_id`.
4. Add meg a **Where** feltételeket:
   - **Column** `posts.post_author`, **Compare** **Equal**, **Value** **Queried user ID**, **Type** **Numeric**. Így a lekérdezett felhasználó bejegyzései jönnek.
   - **Column** `posts.post_type`, **Compare** **Equal**, **Value** a kívánt bejegyzéstípus slugja.
   - Egy harmadik feltétellel kizárhatod azokat az értékeléseket, amelyeket a szerző a saját bejegyzéséhez írt. Ha ezeket is be akarod számítani, hagyd ki.
5. Kattints az **Add Query** gombra.

### Az átlag és a darabszám

1. Nyisd meg Elementorban a **Profile Builderben** beállított profilsablont.
2. Tegyél rá egy **Heading** widgetet, és kattints a dinamikus címke ikonra.
3. Válaszd a **Dynamic Function** címkét. A **Function** értéke legyen **SQL Query Results**, a **Query Column** a `rating`, az **Additional Function** pedig **Average**.
4. Az **Advanced** lapon a **Before** és **After** mezővel szöveget írhatsz a szám elé és mögé.
5. Egy második **Heading** widgetbe a darabszám kerül: válaszd a **Query Results Count** makrót és a létrehozott lekérdezést; a **Returned Count** maradjon az alapértéken. Itt is használhatod a **Before** és **After** mezőt.
6. Mentsd a sablont, és nézd meg a profiloldalt: az átlag és az értékelések száma megjelenik.

### Az értékelések listája

1. A **JetEngine → Listázások/komponensek** oldalon add hozzá az új elemet. A **Listing source** értéke legyen **Query Builder**, válaszd ki az SQL-lekérdezést, és adj nevet a sablonnak.
2. A szerkesztőben **Dynamic Field** widgetekkel írd ki a lekérdezés mezőit. Az adatot a **Query** objektum alatti mezőkből kell választani, különben nem jelenik meg semmi.
3. A szerzőhöz egy **Dynamic Field** widgetben az `author` forrást használd. Ez a felhasználó azonosítóját tárolja; megjelenítendő névvé alakításához olyan visszahívás kell, mint a „Get user data by ID”. Ez alapból nincs a **Callback** listában, ezért külön kell hozzáadni a webhelyhez egy kis kóddal (a JetEngine visszahívásokat egyéni kóddal lehet bővíteni).
4. A dátumhoz egy másik **Dynamic Field** widgetben használd a **Format date** visszahívást a kívánt dátumformával.
5. Mentsd a sablont, majd a profiloldal sablonjába tedd be a **Listing Grid** widgetet ezzel a listasablonnal.

Az eredmény: a felhasználó profiloldalán megjelenik a bejegyzéseire kapott értékelések átlaga, száma és listája.
