# Dinamikus címkék

> Mi a dinamikus címke, hogyan használod Elementorban, és mit adnak a JetEngine saját címkéi, a modulok és a kapcsolódó bővítmények címkéi.

A dinamikus címke (Dynamic Tag) az Elementor szolgáltatása: a mező tartalmát nem kézzel írod be, hanem egy adatforrásból veszi. A JetEngine saját címkékkel bővíti a listát, és a modulok, valamint a kapcsolódó Crocoblock-bővítmények további címkéket adnak hozzá. A címkékkel megjeleníthetsz egyedi mezőket, kifejezések, felhasználók és beállítóoldalak értékeit, ismétlő mezők tételeit, lekérdezések eredményét és még sok mást.

A címkék Elementorban érhetők el. A blokkszerkesztőben és Bricksben a [Dynamic Field](https://hub.hellowp.io/hu/plugins/jet-engine/dinamikus-tartalom-dinamikus-mezo/) elem és társai töltik be ugyanezt a szerepet.

## A címke használata

1. Nyiss meg egy oldalt az Elementorban, és húzz rá egy widgetet, például a **Kép** widgetet.
2. A vezérlő (például a **Kép kiválasztása**) jobb alsó sarkában találod a **Dinamikus címkék** gombot (hengerre emlékeztető ikon). Kattints rá.
3. A megnyíló listában azok a címketípusok szerepelnek, amelyek az adott vezérlőhöz használhatók. Válaszd ki a megfelelőt.
4. A **Field** (mező) listából válaszd ki, melyik metamezőből jöjjön az adat. A lista csak az adott típusú, megfelelő formátumú mezőket mutatja. A lépések minden widgetnél ugyanezek.
5. Szükség esetén add meg a további beállításokat, például a **Fallback** értéket, amely akkor jelenik meg, ha a fő adat hiányzik.

Egyes címkéknél (például **User Image** és **User Field**) megjelenik egy **Context** (környezet) lista is, amely pontosabban meghatározza a felhasználót:

| Környezet | Jelentése |
|---|---|
| **Current User (global)** | Az a felhasználó, akinek az oldalt létrehozták. |
| **Current User (for current scope)** | Az éppen feldolgozott felhasználó. Ha egy felhasználólista elemei a felhasználók bejegyzéseit mutatják, ez a rákattintott felhasználó mezőjét adja, nem a belépettét. |
| **Queried User** | A belépett felhasználó, vagy akinek az azonosítója az URL-ben szerepel. |
| **Current Post Author** | A megnyitott bejegyzés szerzője. |
| **Current CCT Author** | A megnyitott egyedi tartalomtípus-tétel szerzője. A CCT listázási sablonjában a szerző adatait jeleníti meg. |
| **Related Items From…** | A létrehozott kapcsolat kapcsolódó elemei. |

## A JetEngine képcímkéi

Ezek a **Kép** widgetnél alapból megjelennek, ha a JetEngine aktív:

- **Custom Image**: az egyedi bejegyzéstípushoz hozzáadott metamező képe.
- **Term Image**: az egyedi taxonómiához létrehozott metamező képe.
- **Image from options**: egy beállítóoldal metamezőjéből jövő kép.
- **User Image**: a felhasználói profilhoz adott metamező képe.

## A JetEngine mezőcímkéi

Ezek a szöveget vagy hivatkozást kezelő widgeteknél (például **Szövegszerkesztő**, **Gomb**, **Címsor**) szerepelnek:

- **Custom Field**: az egyedi bejegyzéstípus metamezőjének értéke.
- **Term Field**: az egyedi taxonómia metamezőjének értéke.
- **Option**: a beállítóoldalra beírt adat.
- **User Field**: a felhasználói profil metamezője.
- **Current Object Field**: SQL-lekérdezésből vagy a Lekérdezéskészítőből származó adat (lásd lent).
- **Query Results Count**: a Lekérdezéskészítővel létrehozott lekérdezés eredményeinek száma (lásd lent).
- **Repeater Field**: ismétlő mező adatai (lásd lent).
- **Macros**: makrókódok használatához (lásd lent).
- **Dynamic Function**: számítások mezőértékekkel (lásd [Dinamikus függvény](https://hub.hellowp.io/hu/plugins/jet-engine/dinamikus-tartalom-dinamikus-fuggveny/)).

### Query Results Count

A címke a lekérdezés összes találatának és az oldalon éppen látható találatoknak a számát mutatja. A Lekérdezéskészítővel létrehozott lekérdezésekkel működik.

A **Settings** (beállítások) fülön:

- **Query**: a lekérdezés (lapozással), amely az alatta lévő widgetre vonatkozik.
- **Returned Count**:
  - **Total query results count**: az összes lapozási oldal találatainak száma.
  - **Currently visible query results count (per page)**: az aktuális oldal találatainak száma.
  - **Custom format for several counters**: egyedi formátum több számlálóhoz. A formátumot a **Format** mezőben állíthatod be a rendelkezésre álló makrókkal.

A **Advanced** (haladó) fülön:

- **Before** és **After**: a szám előtti és utáni szöveg. Szóközökkel elválaszthatod a számtól.
- **Fallback**: az a szöveg, amely akkor jelenik meg, ha az adatot nem lehet kiírni.

A címke a Dinamikus láthatósággal együtt is használható: például egy elem megjelenhet csak akkor, ha a lekérdezésnek van találata.

#### A számláló megjelenítése

1. Hozz létre egy lekérdezést a Lekérdezéskészítővel, készíts **Listing Grid** widgetet, tedd egy oldalra, és alkalmazd rajta a lekérdezést.
2. Húzz egy **Címsor** (Heading) widgetet a **Listing Grid** fölé. A **Cím** mezőnél kattints a **Dinamikus címkék** gombra, és válaszd a **Query Results Count** címkét.
3. A **Settings** fülön válaszd ki a lekérdezést és a **Returned Count** értékét, az **Advanced** fülön pedig add meg a **Before**, **After** és **Fallback** mezőket.
4. Kattints az **Update** gombra.

Ha a lekérdezésben nincs lapozás, az összes és az éppen látható találatok száma megegyezik, így mindegy, melyiket választod.

#### Számláló lapozott lekérdezéshez

A találatok oldalankénti számát a **Pagination** (lapozás) widgettel és a Lekérdezéskészítő lapozásával állíthatod be. A lapozás a bejegyzések, a hozzászólások és a WC termékek lekérdezésénél érhető el.

1. Nyisd meg a **JetEngine → Lekérdezéskészítő** oldalt, kattints az **Új hozzáadása** gombra, nevezd el a lekérdezést, és válaszd ki a lekérdezés típusát (a példában **Bejegyzések lekérdezése**).
2. Nyisd meg a **Lapozás** fület, és add meg az **Posts Per Page** értékét.
3. Kattints az **Add Query** (vagy **Update Query**) gombra.
4. Egy oldalon tedd a **Listing Grid** widgetet, alá a **Pagination** widgetet. Az Elementor szerkesztőben a lapozás oldalainak alapértelmezett száma mindig 10; a frontenden a tényleges oldalszám jelenik meg.
5. A **Listing Grid** fölé tegyél két oszlopot, mindegyikbe egy **Címsor** widgetet. Az elsőnél a **Dinamikus címkék** gombbal válaszd a **Query Results Count** címkét, a lekérdezést és a **Currently visible query results count (per page)** értéket; az **Advanced** fülön a **Before** és **After** mezőbe írhatsz szöveget (szóközökkel elválaszthatod a számtól). A másodiknál a **Total query results count** értéket állítsd be.
6. Kattints az **Update** gombra.

**Fontos:** az olyan widgetekben, mint a **Listing Grid**, az általános beállításoknál is megadhatod a bejegyzések számát, de a lekérdezés lapozása felülírja. Ha a lekérdezés lapozásánál 5-öt, a **Listing Grid** beállításainál 6-ot adsz meg, a bejegyzések száma 5 lesz. Használhatod csak a **Pagination** widgetet és a **Listing Grid** beállításait is, de a **Query Results Count** címke csak a lekérdezés lapozási beállításaival működik.

A makróval is kiírhatod a számot: lásd a `%query_count%` makrót a [Makrók útmutatója](https://hub.hellowp.io/hu/plugins/jet-engine/dinamikus-tartalom-makrok/) fejezetben.

### Query Calculations

A címke számításokat végez a Lekérdezéskészítő lekérdezésének eredményén. Kis adatmennyiségnél (200-400 tétel a lekérdezés eredményében) hasznos, illetve ott, ahol a Dynamic Function nem használható, például REST API lekérdezéseknél. Használhatod az értékelés (Rating) widgetben, folyamatjelzőkben, vagy más lekérdezések dinamikus argumentumaként. Így megjelenítheted például azokat a termékeket, amelyek ára az átlagár fölött vagy alatt van.

A címke egyszerű számot ad vissza, és AJAX-os szűrőkérésekkor nem frissül.

| Beállítás | Mit csinál |
|---|---|
| **Query** | A lekérdezés, amelyen számolni kell. |
| **Property** | A számítás forrása. „Posts Query” típusú lekérdezésnél itt bejegyzés-metamezőt is megadhatsz. |
| **Calculation Function** | A számítás típusa (lásd lent). |
| **Decimals** | A tizedesjegyek száma. |
| **Decimals Separator** | A tizedesjel (például „.” vagy „,”). |
| **Thousands Separator** | Az ezreselválasztó (például „.” vagy „,”). |

A számítási függvények:

- **Sum**: az összes számérték összege.
- **Average**: az értékek számtani közepe.
- **Minimum**: a legkisebb érték.
- **Maximum**: a legnagyobb érték.
- **First**: az első tétel értéke.
- **Last**: az utolsó tétel értéke.
- **Standard Deviation**: szórás, azt mutatja, mennyire szóródnak az értékek az átlag körül. Minél nagyobb, annál nagyobb az ingadozás.
- **Variance**: variancia, az átlagtól való eltérések négyzetének átlaga.
- **Median**: medián, a sorba rendezett értékek középső eleme.
- **Mode**: módusz, a leggyakrabban előforduló érték.

### Current Object Field

A címke a következő esetekben használható:

- bejegyzés, felhasználó, kifejezés és hozzászólás metaadatainak megjelenítésére;
- SQL-lekérdezésből érkező adat összegyűjtésére;
- a Lekérdezéskészítőben megadott feltételek szerint lekért adatok használatára;
- az objektum lekért adatának megjelenítésére az oldalon, vagy a Dinamikus láthatóság feltételeiben egy elem elrejtésére vagy megmutatására;
- két vagy több adatbázistábla (például a USERMETA és egy tagsági tábla) használatára: ilyenkor a Lekérdezéskészítőben állítsd össze a lekérdezést, és a **Current Object Field** címkével írd ki az eredményt.

### Repeater Field

A címke megadja, melyik ismétlő mező adatai és milyen formában kerüljenek a vezérlőbe. A beállításablakban a **Context** határozza meg, honnan jönnek az adatok:

- **Current Repeater Item Object**: az aktuális ismétlő tételt használja. Elsősorban „Repeater” típusú lekérdezéssel készült listázásnál használd. Az ismétlő listázás támogatása visszafelé kompatibilitás miatt marad meg.
- **Repeater Items List**: az aktuális objektum (például bejegyzés) összes ismétlő tételét lekéri.
- **Nth Repeater Item**: az aktuális objektum egy meghatározott ismétlő tételét kéri le.

A kiválasztott kontextustól függően ezek a mezők jelennek meg:

- **Repeater Field**: az ismétlő mező kiválasztása a JetEngine mezőlistájából.
- **Item Index**: a lekérendő tétel sorszáma. A számozás 0-tól indul, az első tétel indexe 0.
- **Repeater Subfield**: az ismétlő mezőn belüli mező kézi megadása.
- **Return Format**: a lekért adat átalakítása, mielőtt a widgetvezérlőhöz jut:
  - **Raw**: változtatás nélküli érték. Akkor használd, ha az alsó mező már olyan formátumú, amilyet a vezérlő vár, például képazonosító, ha a vezérlő képazonosítót kér.
  - **Concatenated String**: az értékeket egyetlen szöveggé fűzi a **Glue** (kötőelem) szerint. Ha az érték szöveg vagy szám, előbb a `wp_parse_list()` feldolgozza, majd a kapott tömböt a kötőelemmel összefűzi. Egy tétel „a b c d” alsó mezőjéből „a, b, c, d” lesz; három tétel „1”, „2” és „3” értékéből „1, 2, 3”. A formátum olyan vezérlőknél hasznos, amelyek vesszővel tagolt értéket várnak, például a JetElements diagram widgetjében.
  - **Array**: az ismétlő alsó mezőinek értékeit egy tömbbe gyűjti. Akkor használd, ha a vezérlő tényleges tömböt vár.
  - **Image**: képobjektummá alakítja az értéket (`id` és `url` elemmel). Ha az érték tömb vagy több értéket tartalmaz, az elsőt használja. Az Elementor **Kép** widgetjéhez való.
  - **Image Array (Gallery)**: képobjektumok tömbjét adja, galéria típusú vezérlőkhöz, például az Elementor alap **Galéria** widgetjéhez.

#### Példa: ismétlő mező egy csúszka widgetben

A példában egy bejegyzés ismétlő mezőjéből töltöd fel egy csúszka (Slider) widget diáit, ahelyett hogy minden értéket kézzel beírnál. A módszer más, dinamikus címkét támogató widgettel is ugyanígy működik. Szükséges hozzá az ingyenes Elementor és az aktív JetEngine.

1. Hozz létre egy egyedi bejegyzéstípust vagy metaboxot, és vegyél fel benne **Ismétlő** (Repeater) mezőt. A példában az ismétlőnek két **Szöveg** mezője (cím és alcím), egy **Média** mezője és egy **Szövegmező** (textarea) típusú mezője van.
2. Kattints a bejegyzéstípus szerkesztőjében a **Bejegyzéstípus frissítése** gombra.
3. Töltsd ki az ismétlő tételeit azokon a bejegyzéseken, ahol meg akarod jeleníteni az adatot, és mentsd a bejegyzést.
4. Szerkeszd azt az oldalt, ahol a widget lesz, és add hozzá a csúszkát.
5. A diák vezérlőjénél (például **Kép** vagy **Cím**) kattints a **Dinamikus címkék** ikonra, és válaszd a **Repeater Field** címkét.
6. A **Context** legyen **Nth Repeater Item**, a **Repeater Field** listában válaszd ki az ismétlő mezőt, az **Item Index** mezőbe írd a tétel sorszámát (0-tól indul), a **Repeater Subfield** mezőbe pedig az alsó mező nevét.
7. A **Return Format** szöveges mezőnél legyen **Concatenated String**, képnél **Image**. A **Concatenated String** formátumnál megjelenik a **Glue** mező, ahol a szavakat elválasztó karaktert adod meg. A **Fallback** mező a **Concatenated String**, az **Image** és az **Image Array (Gallery)** formátumnál érhető el, kitöltése nem kötelező.
8. Ugyanígy állítsd be a kép, az alcím, a leírás és a gombok szövegének vagy hivatkozásának címkéjét is, és tedd közzé az oldalt.

A dinamikus beállítást minden diához külön kell megadnod: a logika nem öröklődik az egyik diáról a következőre. A frontenden a csúszka az ismétlő tételeinek tartalmát mutatja.

### Macros

A **Macros** címke a JetEngine bővítmény aktiválása után azonnal elérhető. Csak JetEngine-widgetekben (Listing Grid, Dynamic Link) és a dinamikus címkéket támogató funkciókban használható, például a bejegyzések lekérdezésének beállításaiban. A makrókódokat kézzel írhatod be, vagy kiválaszthatod a **Macros** listából. A makrók teljes listáját a [Makrók útmutatója](https://hub.hellowp.io/hu/plugins/jet-engine/dinamikus-tartalom-makrok/), a Lekérdezéskészítőben való használatukat a [Makrók a Lekérdezéskészítőben](https://hub.hellowp.io/hu/plugins/jet-engine/dinamikus-tartalom-makrok-lekerdezeskeszitoben/) fejezet írja le.

## Modulok bekapcsolása után megjelenő címkék

Az alábbi címkék a **JetEngine → Vezérlőpult → Modulok** oldalon bekapcsolt modulokkal jelennek meg.

### REST API modul

A **REST API-listázások** modullal megjelenik a **REST API Image** és a **REST API Field** címke. Egy másik webhely metamezőinek adatait mutatják, amelyeket REST API-n keresztül kapsz meg. Képnél jelenleg csak a kép azonosítója jeleníthető meg.

### Egyedi tartalomtípusok modul

Az **Egyedi tartalomtípusok** modul a **Custom Content Type Image** és a **Custom Content Type Field** címkét adja. A CCT metamezőjének értékét mutatják.

### Adattárak

Az **Adattárak** modullal megjelenik a **Data Stores: Post Count** és a **Data Stores: Store Count** címke: a kedvelések és az adattárban lévő elemek számlálója. A **Data Stores: Get Store** címke a bejegyzéseket megjelenítő widgetek (például a Listing Grid) lekérdezési beállításaiban található. Segítségével a widget az adattár elemeit mutathatja, vagy kihagyhatja őket. Így például az általános rácsban megjeleníthető a felhasználó kedvencnek jelölt elemei.

### Profilkészítő

A **Profilkészítő** modul a **Profile Page URL** címkét adja, amely csak az URL-t kezelő funkciókban érhető el (például a **Címsor** widget hivatkozásában). A címke a profiloldalak egyikére mutató hivatkozást állít elő.

- **Profile Page**: a Profilkészítőben létrehozott oldalak listája.
- **Context**: **Queried User** (a belépett vagy az URL-ben megadott felhasználó oldala), **Current Post Author** (a bejegyzés szerzőjének profiloldala), **Current CCT Item author** (a CCT-tétel szerzőjének profiloldala).
- **Add Query Argument**: ha be van kapcsolva, a profiloldal URL-jét lekérdezési argumentumokkal egészítheted ki.

### Térképes listák

A **Térképes listák** modul bekapcsolása után megjelenik az **Open Map Listing Popup** címke is. Olyan funkciókban használható, amelyek URL-t adnak az oldalhoz (például a **Címsor** hivatkozása), és megnyit egy térképes listázási felugró ablakot. Olyan oldalon nem működik, ahol nincs Map Listing widget.

- **Specific post ID**: a megnyitandó bejegyzés azonosítója a térképes listázásban.
- **Trigger**: a felugró ablak a hivatkozás fölé vitt egérre vagy kattintásra jelenjen-e meg.
- **Zoom**: a térkép nagyítása a megadott szám szerint. Ha a jelölő klaszterben van, a nagyítási szintnek magasabbnak kell lennie a megadottnál, hogy a klaszter szétnyíljon.
- **Scroll to map**: a felugró ablak megnyitásakor automatikusan a térképhez görget.

## Dynamic Function

A címke a JetEngine aktiválása után azonnal megjelenik. Beállításait a [Dinamikus függvény](https://hub.hellowp.io/hu/plugins/jet-engine/dinamikus-tartalom-dinamikus-fuggveny/) fejezet írja le.

## Más Crocoblock-bővítmények címkéi

- **JetAppointment**: a „JetAppointments Booking: add booking to Google calendar” címke olyan hivatkozást ad, amellyel az időpont hozzáadható a Google Naptárhoz.
- **JetBooking**: az alábbi címkék a szálláspéldány oldalán vagy a foglalási példányok listázási sablonjában használhatók.
  - **Accommodation Status**: a foglalás aktuális állapota. A **Settings** fülön az **Available Label**, a **Pending Label** és a **Reserved Label** szövege testre szabható.
  - **Booking Price**: a foglalási ár a kiválasztott időszak szerint (ha a látogató dátumot szűr, vagy a foglalási űrlapot használja), figyelembe véve a szezonális és hétvégi árakat. Beállítások: **Period Start** és **Period End** (dátum `Y-m-d` formátumban, például „1996-04-09”, vagy dinamikus címke), **Currency** (pénznem jele), **Currency Position** („Before” vagy „After”).
  - **Bookings count**: az adott példány adott időszakban leadott foglalásainak száma. A **Period Start** és a **Period End** `Y-m-d H:i:s` vagy `Y-m-d` formátumban adható meg.
  - **Price per day/night**: a napi vagy éjszakai ár. A **Show Price** lehetőségei: **Default** (az árbeállítások fül „Price per 1 day/night” mezőjének értéke), **Min Price** vagy **Max Price** (a legalacsonyabb vagy legmagasabb ár, figyelembe véve az alap-, szezonális és hétvégi árakat), **Prices Range** (a legalacsonyabb és legmagasabb ár közötti tartomány). A **Change Dynamically** kapcsoló a bejelentkezési és kijelentkezési dátumhoz igazítja az árat, de csak akkor működik megfelelően, ha az oldalon ott a megfelelő foglalási űrlap. Itt is van **Currency** és **Currency Position**.
  - **Units count**: a foglalásra szabad egységek száma (például hány szoba szabad még). Nincs külön beállítása.
- **JetReviews**: **Average Rating** (a bejegyzés vagy felhasználó átlagos értékelése), **Reviews Info** (az értékelések száma), **Review Average Rating** (a beküldött értékelések átlagos pontszáma), **Review Property** (egy beküldött értékelés adata, például azonosító, szerző, dátum, pontszám, tetszések és nem tetszések száma).
- **JetSmartFilters**: a **URL with filtered value** címke előre szűrt eredményt adó URL-t készít.
- **WooCommerce**: a **WooCommerce Product Image** és a **WooCommerce Product Field** címke WooCommerce-adatokat húz be a JetEngine listázásaihoz.

## Dinamikus adatok Bricksben

A Bricks saját dinamikus adatrendszere (Dynamic Data) is együttműködik a JetEngine-nel: a JetEngine egyedi mezőinek adatait a Bricks dinamikus címkéi is lekérik. A tartalom a környezettől függően automatikusan változik.

Az elemek beállítópaneljében kattints a villám (bolt) ikonra, és megnyílik a dinamikus adatok listája. A dinamikus adat a JetEngine saját dinamikus elemeinél (Dynamic Field, Dynamic Image és társaik) is használható. A Bricks-integráció az egyedi bejegyzéstípusok, a metaboxok (egyedi mezők), a taxonómiák, a kapcsolatok és a beállítóoldalak adatait is eléri. Az egyedi tartalomtípusok mezőinek Bricksben való megjelenítéséről a [CCT-mezők Bricksben](https://hub.hellowp.io/hu/plugins/jet-engine/meta-mezok-cct-bricks/) fejezet szól.

### Current Object Field

A **Current Object Field** címke az aktuális objektum adatát írja ki. Alakja `{je_current_object_field}`, a kettőspont után pedig az egyedi mező neve vagy kulcsa áll:

```
{je_current_object_field:_ID}
{je_current_object_field:age}
{je_current_object_field:name}
```

A címke használható:

- bejegyzés, felhasználó, kifejezés és hozzászólás tulajdonságainak megjelenítésére;
- SQL-lekérdezés és ismétlő mezők adatainak összegyűjtésére;
- a Lekérdezéskészítőben a feltételek szerint lekért adatok használatára.

## Gyakori kérdések

**Mi az a dinamikus címke?** Olyan megoldás, amellyel kézi beírás helyett dinamikusan jeleníthetsz meg tartalmat. A JetEngine címkéi egyedi mezőkből, bejegyzésekből, felhasználókból, taxonómiákból, beállítóoldalakról és ismétlő mezőkből is tudnak adatot lekérni, és átadják a támogatott widgetvezérlőknek.

**Hol használhatom őket?** A támogatott Elementor-widgetvezérlőkben és a kompatibilis Crocoblock-widgetekben és funkciókban. Az elérhető címkék a vezérlőtől és a megjeleníteni kívánt adat típusától függnek.

**Miért nem jelenik meg adat a címkénél?** Ellenőrizd, hogy a kiválasztott forrásban van-e érték, és hogy a **Context** és a mező beállításai helyesek. Győződj meg arról is, hogy a címkét olyan vezérlőben használod, amely támogatja a kiválasztott adattípust, és hogy az aktuális bejegyzés, felhasználó vagy listázási elem tartalmazza a várt adatot.

**Használhatok címkét egyedi és ismétlő mezőkkel?** Igen. A címkék le tudják kérni a JetEngine egyedi mezőinek, köztük az ismétlő mezőknek és alsó mezőiknek az értékét. A címkétől és a célvezérlőtől függően megadhatod azt is, hogyan adódjon vissza az érték (nyers érték, szöveg, tömb vagy képadat).
