# Haladó funkciók: új kifejezés, előbeállítás, számított mező, horgok

> Új kifejezés felvétele az űrlapról, bejegyzés szerkesztése előbeállítással, kifejezések frissítése, számított mező és fejlesztői horgok.

Ez a fejezet a **Hierarchical Select** blokk azon lehetőségeit gyűjti össze, amelyek az alapbeállításokon túl
a bejegyzések kezeléséhez, a számított mezőkhöz és a fejlesztéshez kellenek.

## Mielőtt elkezdesz

- A blokknak és minden szintjének **Név** értéke kötelező. Név nélkül a mező nem működik. A **Címke** és a **Helykitöltő** üresen is maradhat.
- A **Form field name** legyen egyedi. A szintek nevei is egyediek legyenek az egész űrlapon belül.
- Forrásként csak hierarchikus osztályozás választható, ezért a címkék (tag) nem jelennek meg a listában.

## A szintek ablaka: biztonságos törlés

A **Szintek szerkesztése** ablakban egy **Safe deleting** kapcsoló is van. Bekapcsolva a **Delete** gombra kattintva
még egyszer rákérdez a rendszer, biztosan törölni akarod-e a szintet. Ha zavar, kikapcsolhatod.

## Új kifejezés felvétele az űrlapról

A **Kézi bevitel engedélyezése** a második szinttől érhető el. Ha az előző szinten kiválasztott kifejezésnek nincs gyermeke, a lista helyén szövegmező jelenik meg, és a beküldő beírhat egy új kifejezést. A beküldés után a szövegmező helyett újra lista látszik, az új kifejezés pedig megjelenik az osztályozásban.

Hogy az új kifejezés tényleg bekerüljön az osztályozásba:

1. Add hozzá az űrlaphoz az **Insert/Update Post** beküldés utáni műveletet.
2. A **Fields Map** részben a Hierarchical Select blokk szintjeinél válaszd a **Post Term** lehetőséget, és add meg az osztályozás nevét.

Bekapcsolt **Számított érték lekérése a kifejezés metaadataiból** mellett a kézi bevitel nem érhető el.

## Kifejezések frissítése bejegyzés mentésekor

Ha a bejegyzés kifejezéseit az űrlappal szeretnéd frissíteni:

1. A blokkban a **Kifejezés értéke innen** listából válaszd a **Kifejezés ID** értéket.
2. Az **Insert/Update Post** műveletben, a **Fields Map** részben jelöld ki azokat a szinteket, amelyek kifejezését a bejegyzéshez menteni akarod (**Post Term** és az osztályozás neve).

## Bejegyzés szerkesztése az űrlapról (előbeállítás)

Ha az űrlappal meglévő bejegyzést szerkesztenek, állítsd be az űrlap **Preset Settings** részét: válaszd a **Post Term** lehetőséget, és mellé az első szint osztályozásának nevét.

- Ha a mentett kifejezésnek vannak gyermekei, az űrlapon a teljes hierarchia kitöltve jelenik meg a szinteken.
- Ha a szintnél be van kapcsolva a **Kézi bevitel engedélyezése**, és a kifejezésnek nincs gyermeke, a lista helyett szövegmező látszik.
- Ha a bejegyzésnek több ága is van, az űrlapon csak az egyik ág jelenik meg.

## Számított mező kifejezés metaadatából

Ha a kifejezések metaadatmezőjében számok vannak (például egy kedvezmény százaléka), ezek bekerülhetnek az űrlap számított mezőjébe.

1. A blokkban kapcsold be a **Számított érték lekérése a kifejezés metaadataiból** beállítást.
2. Add meg a számot tartalmazó metaadatmező kulcsát vagy azonosítóját a **A számított értékhez tartozó kifejezés metaadatmezőjének kulcsa vagy ID-je** mezőben.
3. A számított mező képletébe írd be a szint makróját: `%FIELD::szint_neve%`, ahol a `szint_neve` a szint **Név** értéke. Minden szinthez külön makró kell. A fogaskerék ikonnal a szintek nevei egyszerűen beszúrhatók.

Például ha az egyik szinten a kiválasztott kifejezés értéke 10, a másikon 40, a két makró összege 50 lesz, így az űrlap 50 százalékos kedvezményt számol.

```text
%FIELD::kupon% + %FIELD::kedvezmeny%
```

## Fejlesztői horgok (PHP)

A kifejezések lekérdezése három szűrővel testreszabható:

| Horog | Mit csinál |
| --- | --- |
| `jet-form-builder/hr-select/taxonomies-list` | Megváltoztatja a `get_taxonomies` függvény hívásának első argumentumát. |
| `jet-form-builder/hr-select/query-terms-params` | A kifejezések lekérdezésének argumentumait módosítja; megkapja a mezőobjektumot is, amelyben a blokk összes beállítása a `block_attrs` mezőben van. |
| `jet-form-builder/hr-select/prepare-terms` | Egyedi feldolgozást tesz lehetővé a megkapott kifejezéseken; megkapja a szülő kifejezés azonosítóját és a mező paramétereit. |

## Példák a felhasználásra

- Hirdetésfeladás: jármű típusa, gyártója, modellje.
- Termékfrissítés többszintű hierarchiával (például Férfi, Kollekció, Farmer).
- Álláspályázat: cég típusa, munkakör, állás típusa.
- Ingatlanhirdetés: megye, majd város.
- Szakember regisztrálása: osztály, majd szakterület.
- Utazási szolgáltatás: ország, város, látnivaló típusa.
- Eseményre regisztráció: származási hely, étkezési igény.
