# Kapcsolódó elemek összekapcsolása űrlappal

> JetEngine űrlap építése, amellyel a látogatók a weboldalról kapcsolhatnak össze gyermek- és szülőelemeket, vagy hozhatnak létre új elemet kapcsolattal.

A kapcsolatokat a weboldalról, űrlappal is kezelheted. Ez a fejezet a JetEngine saját űrlapjaival (**JetEngine → Űrlapok**) dolgozik. Az űrlap két utólagos művelettel (post-submit action) dolgozik: az **Insert/Update Post** hozza létre vagy frissíti a bejegyzést, a **Connect Relation Items** pedig a kapcsolatot. A feliratok a JetEngine űrlapmodul felületén angolul is látszhatnak, ezért az alábbi leírás az angol neveket is megadja.

A példákban az **Ország** a szülő, a **Túra** a gyermek bejegyzéstípus. A mezők nevében (Name) csak kisbetűs latin betű, kötőjel és aláhúzás lehet, szóköz nem.

## Meglévő gyermekek hozzárendelése egy szülőhöz

1. A **JetEngine → Űrlapok** oldalon kattints az **Új hozzáadása** gombra, és add meg az űrlap címét.
2. Az alapból létrejövő **Hidden Field** és **Submit Button** maradjon. A rejtett mező beállításait ne módosítsd: ez adja a szülő azonosítóját.
3. Kattints az **Add Field** gombra, és vegyél fel egy lista jellegű mezőt, például **Checkboxes Field**-et (több kiválasztható érték). Add meg a nevét, a címkéjét, és ha kell, a leírását és a kötelező jelölést.
4. A **Fill Options From** mezőben válaszd a **Posts** forrást, a bejegyzéstípus a gyermek típus (Túra).
5. A **Default** mező **Dynamic tags** gombjával nyiss meg egy ablakot, és állítsd be: **Source**: „Related items”; **From Relation**: a kapcsolat; **From Object**: a gyermek (a mezőben a már kapcsolt gyermekek legyenek kipipálva); **Initial Object ID From**: marad az **Aktuális objektum ID-ja**. Kattints a **Done** gombra.
6. Szükség esetén állítsd be a további mezőket (**Add Prev Page Button**, **Field Visibility**, egyedi CSS-osztály), és az **Apply Changes** gombbal mentsd a mezőt. A **Submit Button** feliratát is átírhatod.
7. A **Post-submit Actions / Notifications Settings** fülön szerkeszd az alapértelmezett **Send Email** műveletet (ceruza ikon): a típus **Insert/Update Post**, a **Post Type** a szülő bejegyzéstípus, az állapot lehet üres, a mezőleképezés marad. Az **Apply Changes** gombbal mentsd.
8. Az **Add Notification** gombbal vegyél fel még egy műveletet: típus **Connect Relation Items**, a **Relation** a kapcsolat, a **Parent Item ID** a rejtett mező, a **Child Item ID** a gyermeklistát mutató mező, az **Update Context** értéke „We updating parent items for the child object”. **Apply Changes**.
9. A **Messages Settings** részben átírhatod a felhasználónak megjelenő üzeneteket.
10. Kattints a **Publish** gombra.

Az űrlapot a szülő önálló sablonjába teheted: **Crocoblock → Theme Builder**, a szülő sablonjának **Szerkesztés** gombja, majd tedd fel a **Form** widgetet, a szolgáltató legyen **JetEngine**, és válaszd ki az űrlapot. Beállítható a mezők elrendezése, a címke HTML-címkéje, a beküldés típusa és a gyorsítótárazás. Tedd közzé.

A frontenden a szülő oldalán megjelenik az űrlap, a kapcsolt gyermekek kipipálva. A beküldés után a kipipált elemek bekerülnek a szülő gyermeklistájába.

> **Figyelem**
>
> Ha a szülőhöz már vannak kapcsolt gyermekek, az űrlapon kipipálva jelennek meg. Ha kiveszed a pipát, és beküldöd az űrlapot, a gyermek leválik a szülőről.

## Új szülő létrehozása gyermekek kapcsolásával

1. Hozz létre új űrlapot, és töröld az alapértelmezett mezőket.
2. Vegyél fel egy **Text Field**-et a szülő nevének (például az ország nevének).
3. Vegyél fel egy **Checkboxes Field**-et a gyermekek kiválasztásához: a **Fill Options From** a **Posts**, a bejegyzéstípus a gyermek típus.
4. Add hozzá a **Submit Button**-t.
5. A **Post-submit Actions** részben az alapértelmezett **Send Email** műveletet cseréld **Insert/Update Post** műveletre. A műveletek sorrendje számít: fentről lefelé futnak, és új bejegyzésnél előbb be kell szúrni a bejegyzést. A bejegyzéstípus a szülő típus, az állapot **Published**, a mezőleképezésben a szövegmező a **Post Title**, a jelölőnégyzet marad az alapértéken.
6. Vegyél fel egy **Connect Relation Items** műveletet: a kapcsolat, a megfelelő **Parent Item ID** és **Child Item ID**, az **Update Context** üres.
7. Mentsd (**Publish**), tedd az űrlapot egy oldalra a **Form** widgettel, és próbáld ki.

A beküldés után az új szülő bejegyzés szerkesztőoldalán a kijelölt gyermekek kapcsolva vannak.

## Szülő hozzárendelése egy gyermekhez

1. Új űrlap, a rejtett mező marad. Vegyél fel egy listamezőt, például **Radio Field**-et (csak egy szülő választható).
2. A **Fill Options From** a **Posts**, a bejegyzéstípus a szülő típus.
3. A **Default** mező **Dynamic tags** ablakában a **Source** „Related items”, a **From Relation** a kapcsolat, a **From Object** a szülő, a **Initial Object ID From** az **Aktuális objektum ID-ja**.
4. Az **Insert/Update Post** művelet bejegyzéstípusa most a gyermek típus.
5. A **Connect Relation Items** műveletben a **Parent Item ID** a rádiómező, a **Child Item ID** a rejtett mező (`post_id`), az **Update Context** értéke „We updating children items for the parent object”.
6. Mentsd, és tedd az űrlapot a gyermek bejegyzéstípus önálló sablonjába.

A beküldés után a gyermek szerkesztőoldalán a szülő kapcsolva van.

## Új gyermek létrehozása szülő kijelölésével

1. Új űrlap; töröld az alapértelmezett mezőket. Vegyél fel egy **Text Field**-et az új gyermek nevének (például `tour-name`), és egy **Radio Field**-et a szülő kiválasztásához (**Posts** forrás, a szülő bejegyzéstípus). Add hozzá a **Submit Button**-t.
2. Az **Insert/Update Post** műveletet tedd az első helyre (új bejegyzésnél ez fontos; frissítő űrlapnál, ahol a rejtett mező adja a bejegyzés azonosítóját, a sorrend nem számít). A bejegyzéstípus a gyermek típus, az állapot **Published**, a mezőleképezésben a névmező legyen a **Post Title**.
3. A **Connect Relation Items** műveletben a **Parent Item ID** a szülőt kiválasztó mező, a **Child Item ID** az `inserted_post_id`, az **Update Context** üres.
4. Mentsd, és tedd az űrlapot egy tetszőleges oldalra.

A beküldés után létrejön az új gyermek bejegyzés, és a szülő kapcsolva van hozzá.

Kapcsolatok leválasztása űrlappal: [Kapcsolódó elemek leválasztása űrlappal](https://hub.hellowp.io/hu/plugins/jet-engine/kapcsolatok-urlap-lekapcsolas/).
