# Integráció a JetEngine-nel

> Értékelések listasablonja, Jet Reviews Query lekérdezés, átlagos értékelés megjelenítése és felhasználói profil SQL-lekérdezéssel.

A JetEngine-nel az értékeléseket listaelemként is megjelenítheted a **Listing Grid** widgetben, egyedi lekérdezéssel szűrheted őket, az átlagos pontszámot pedig bárhol kiírhatod dinamikus címkével. A fejezethez az Elementor (ingyenes változat), a JetReviews és a JetEngine kell, legalább egy létező értékeléstípussal és egy jóváhagyott értékeléssel.

## Listasablon az értékelésekhez

### Új listaelem

1. Nyisd meg a **JetEngine → Listings/Components** oldalt, és kattints az **Add New Item** gombra.
2. A **Listing source** mezőben válaszd a **JetReviews** értéket.
3. Add meg a **Listing Item Name** mezőben a sablon nevét.
4. A **Listing View** mezőben válaszd ki a szerkesztőt (Elementor, blokkszerkesztő, Bricks vagy Timber/Twig). Az Elementor esetén válaszd az **Elementor** értéket.
5. Kattints a **Create Listing Item** gombra.

### A sablon tartalma

Az értékelés adatait a JetEngine dinamikus widgetjeivel jeleníted meg, elsősorban a **Dynamic Field** widgettel.

1. A **Dynamic Field** widget **Source** értékét hagyd **Post/Term/User/Object Data** értéken.
2. Az **Object Field** listában a **JetReviews** csoportból válaszd ki a megjelenítendő mezőt: **Author Name** (szerző neve), **Title** (cím), **Content** (szöveg), **Date** (dátum), **Likes** és **Dislikes**. Minden mezőhöz külön **Dynamic Field** widget kell.
3. A dátumot „2 napja” formában is kiírhatod: kapcsold be a **Filter field output** kapcsolót, a **Callback** listában válaszd a **Human readable time difference** értéket, majd kapcsold be a **Customize field output** kapcsolót, és a `%s` után írd be, hogy „ ezelőtt”.
4. A pontszámot a **Rating** widget mutatja: kattints a **Rating** mező melletti adatbázis ikonra, és válaszd a **Review Property** dinamikus címkét. A címke beállításai között a **Type** értéke legyen **Rating**.
5. A kedvelés és a nemtetszés számlálójához adj hozzá két **Dynamic Field** widgetet a **Likes** és **Dislikes** objektummezővel, és állítsd be a **Field Icon** ikonokat.
6. Kattints a **Publish** gombra.

### Lekérdezés (Query Builder)

Alapból a **Listing Grid** az összes értékelést mutatja. Egy egyedi lekérdezéssel szűkítheted, például az aktuális bejegyzés értékeléseire:

1. Nyisd meg a **JetEngine → Query Builder** oldalt, és kattints az **Add New** gombra.
2. Add meg a lekérdezés nevét, a **Query Type** értéke legyen **Jet Reviews Query**.
3. A **Jet Reviews Query** részben a **Source** értéke **Post**.
4. A **Source ID** mező melletti adatbázis ikonnal válaszd a **Current ID** makrót.
5. Szükség esetén állítsd be a többi mezőt, majd kattints az **Add/Update Query** gombra.

### A lista elhelyezése az egyedi oldalon

1. Nyisd meg az egyedi bejegyzés oldalsablonját az Elementorban.
2. Tedd az oldalra a **Listing Grid** widgetet, és válaszd ki a létrehozott listasablont. Ilyenkor az összes értékelés látszik.
3. A **Custom Query** részben kapcsold be a **Use Custom Query** kapcsolót, és válaszd ki a létrehozott lekérdezést. Innentől csak az aktuális bejegyzés értékelései jelennek meg.

## Az átlagos értékelés és az értékelések száma

Az átlagos pontszám az értékelések blokkja felett automatikusan megjelenik. Ha a blokkon kívül, például az egyedi oldal tetején vagy a **Listing Grid** minden elemében is látni szeretnéd, használd a **Rating** widgetet dinamikus címkével.

### Egyedi oldalon

1. Nyisd meg a **Crocoblock → Theme Builder** oldalt, és az egyedi oldal sablonját az Elementorban.
2. Húzd a **Rating** widgetet az oldalra, például a cím alá.
3. A **Rating** mező mellett kattints a dinamikus címke gombra, és válaszd az **Average Rating** címkét. Beállításai: **Source** (**Post** vagy **User**), **Type** (**Percent** vagy **Ratio**), **Ratio Bond**, **Decimals Count**. Az **Advanced** részben a **Before**, **After** és **Fallback** mezők adhatók meg.
4. Állítsd be a megjelenést a **Style** lapon, majd kattints a **Publish** gombra.

A **Review Average Rating** címke a JetReviews felhasználói értékeléseinek átlagát adja, ugyanezekkel a beállításokkal, de a **Source** mező nélkül.

### Listaelemben

Nyisd meg a listasablont (**JetEngine → Listings/Components**) az Elementorban, tedd rá a **Rating** widgetet, és állítsd be ugyanúgy. Mentés után a **Listing Grid** minden elemében megjelenik az adott elem átlagos értékelése.

### Az értékelések száma

A régi **Star Rating** widget **Title** mezőjéhez a **Reviews Info** címke tartozik, amelynek **Type** listájában a **Reviews Count** (csak a szám) és a **Reviews Count Label** (a szám és a „Reviews” szó) választható.

## Felhasználó bejegyzéseinek átlagos értékelése a profiloldalon

Ez a példa azt mutatja, hogyan jelenítheted meg egy felhasználó által írt bejegyzések értékeléseinek átlagát és számát az egyedi felhasználói profiloldalon. A JetEngine **Profile Builder** modulja és az egyedi felhasználói oldal kell hozzá.

### SQL-lekérdezés

1. Nyisd meg a **JetEngine → Query Builder** oldalt, és kattints az **Add New** gombra.
2. Add meg a nevet, a **Query Type** értéke legyen **SQL/AI Query**.
3. A **Custom SQL Query** lapon a **From table** értéke `jet_reviews`, és kapcsold be a **Use Join** kapcsolót.
4. 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`.
5. Add meg a **Where** feltételeket:
   - `posts.post_author` **Equal** **Queried user ID**, **Type**: **Numeric**. Így azokat a bejegyzéseket kapod, amelyeket a lekérdezett felhasználó írt.
   - `posts.post_type` **Equal**, az **Value** mezőbe a kívánt bejegyzéstípus slugja.
   - Ha ki akarod zárni azokat az értékeléseket, amelyeket maga a szerző írt a saját bejegyzéséhez, vegyél fel egy harmadik feltételt. Ha a szerző értékeléseit is be akarod számítani, ez kimarad.
6. Kattints az **Add Query** gombra.

### Az átlag és a darabszám kiírása

1. Nyisd meg a profiloldalhoz a **Profile Builderben** beállított sablont az Elementorban.
2. Tegyél rá egy **Heading** widgetet, és kattints a dinamikus címke ikonra.
3. Válaszd a **Dynamic Function** értéket. A **Function** értéke legyen **SQL Query Results**, a **Query Column** a `rating`, az **Additional Function** pedig **Average**. Az **Advanced** lapon a **Before** és **After** mezővel szöveget fűzhetsz a szám elé és mögé.
4. Egy másik **Heading** widgetben a darabszámot jelenítsd meg: a **Query Results Count** makrót válaszd, és a létrehozott lekérdezést. A **Returned Count** marad az alapértéken.
5. Mentsd a sablont, és nézd meg a profiloldalt.

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

1. A **JetEngine → Listings** oldalon kattints az **Add New** gombra. A **Listing source** értéke legyen **Query Builder**, válaszd ki a létrehozott lekérdezést, és adj nevet a sablonnak.
2. A szerkesztőben **Dynamic Field** widgetekkel jelenítsd meg a lekérdezés mezőit. Az adatot a **Query** objektum alatti mezőkből válaszd.
3. A szerző megjelenítéséhez egy **Dynamic Field** widgetben az **author** forrás tárolja a felhasználó azonosítóját. Ennek megjelenítési névvé alakításához olyan visszahívás kell, mint a „Get user data by ID”, amely alapból nem érhető el, ezért a webhelyhez külön kell hozzáadni. A dátumhoz használhatod a **Format date** visszahívást.
4. Mentsd a sablont, majd a profiloldal sablonjába tedd be a **Listing Grid** widgetet a létrehozott listasablonnal.

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