# Nagyszülő és unoka kapcsolatok

> Két kapcsolat összefűzése hierarchiába, az unokák vagy nagyszülők megjelenítése makróval, és a régi kapcsolatok konvertálása.

A nagyszülő-unoka szerkezet két már létező kapcsolatot fűz egy láncba. Például: **Osztályok** (nagyszülő) → **Szolgáltatások** (szülő) → **Orvosok** (gyermek, azaz unoka). Így az osztály oldalán megjeleníthetők az osztályhoz tartozó szolgáltatások orvosai is.

Szükséges: szerkesztő (Elementor ingyenes, blokkszerkesztő vagy Bricks) és aktív JetEngine. A lánc bármilyen objektumtípusból épülhet: például bejegyzés, taxonómia és felhasználó.

## A két kapcsolat felvétele

Előbb a nagyszülő és a szülő közötti kapcsolatot hozd létre.

1. A **JetEngine → Kapcsolatok** oldalon kattints az **Új hozzáadása** gombra.
2. Add meg a nevet (például „osztályok és szolgáltatások”), a **Szülő objektum** (Osztályok), a **Gyermek objektum** (Szolgáltatások) és a **Kapcsolat típusa** (**Egy a többhöz**) értékét.
3. A **Szülőkapcsolat** mezőt ne állítsd be, mert ez a lánc teteje.
4. Mentsd a kapcsolatot.

Ezután a szülő és a gyermek közötti kapcsolat jön.

1. Kattints újra az **Új hozzáadása** gombra.
2. Add meg a nevet („szolgáltatások és orvosok”), a **Szülő objektum** (Szolgáltatások), a **Gyermek objektum** (Orvosok) és a **Kapcsolat típusa** (**Több a többhöz**) értékét.
3. A **Szülőkapcsolat** mezőben válaszd ki az előbb létrehozott nagyszülő-szülő kapcsolatot.
4. Mentsd a kapcsolatot.

Végül rendeld hozzá az orvosokat a szolgáltatásokhoz, a szolgáltatásokat pedig az osztályokhoz a bejegyzések szerkesztőoldalán.

## Az unokák megjelenítése a nagyszülő oldalán

1. A **JetEngine → Lekérdezéskészítő** oldalon hozz létre új lekérdezést (például „Orvosok az osztály oldalán”). A típus attól függ, mi az unoka: bejegyzésnél **Bejegyzések lekérdezése**, felhasználónál **Felhasználók lekérdezése**.
2. Az általános lapon add meg a bejegyzéstípust (Orvosok).
3. A bejegyzések és oldalak lapján nyisd meg az „érmehalom” gombbal a makrók listáját, és válaszd a **Kapcsolódó unokák** makrót. Ha a nagyszülőket akarod megjeleníteni az unoka oldalán, a **Kapcsolódó nagyszülők** makrót válaszd.
4. A makró beállításában az **Unoka-kapcsolat** mezőben jelöld ki a szülő és gyermek közötti kapcsolatot („szolgáltatások és orvosok”), a **A nagyszülő ID-ja** mezőben pedig az **Aktuális objektum ID-ja** értéket (mert az osztály oldalán dolgozol).
5. Kattints az **Alkalmaz** gombra, majd mentsd a lekérdezést.

A makrókat a JetEngine makrógenerátora is előállítja (lásd: [Shortcode- és makrógenerátor](https://hub.hellowp.io/hu/plugins/jet-engine/generatorok/)).

Az oldalon:

1. Nyisd meg a nagyszülő bejegyzéstípus önálló sablonját.
2. Tedd fel a **Listing Grid** elemet (widget, blokk vagy Bricks-elem), és válaszd ki az unokák listázási elemét.
3. Az **Egyéni lekérdezés** lapon kapcsold be az **Egyéni lekérdezés használata** kapcsolót, és válaszd ki a **Kapcsolódó unokák** makróval készült lekérdezést.
4. Mentsd a sablont.

Ugyanígy jeleníthetők meg a nagyszülők az unoka oldalán.

## Régi (legacy) kapcsolatok

A JetEngine 2.11.0 előtt létrehozott régi kapcsolatokat érdemes az új formára konvertálni: nyisd meg a kapcsolatot a **Szerkesztés** gombbal, és kattints a konvertálást végző gombra (angol felirata: „Convert into the new format”). A bejegyzések automatikusan átkerülnek, de a kapcsolatokhoz használt makrókat kézzel kell az újakra cserélned.

A régi kapcsolat csak bejegyzéstípusok között jöhet létre. Nagyszülő-unoka láncot úgy készíthetsz, hogy két régi kapcsolatot felveszel (például Kontinensek → Országok és Országok → Túrák), és az alsó szintű kapcsolat **Szülőkapcsolat** mezőjébe beírod a „nagyszülő to szülő” formát (például „continents to country”).

Megjelenítésük makróval történik, amely csak régi kapcsolatokkal működik. A Listing Grid **Bejegyzés lekérdezés** részében vegyél fel új elemet **Posts & Authors Parameters** típussal, és írd be az egyik makrót:

```
%get_grandparent|bejegyzestipus-slug%
%get_grandchild|bejegyzestipus-slug%
```

- `%get_grandparent|slug%`: a nagyszülő bejegyzést adja. Az unoka (például Túra) oldalán használd, a slug az unoka bejegyzéstípusáé.
- `%get_grandchild|slug%`: a nagyszülő oldalán az unokákat adja. Itt a slug a nagyszülő bejegyzéstípusáé.

A beállítás ugyanígy elérhető Elementorban és a blokkszerkesztőben is.
