# Globális lekérdezések és Lekérdezéskezelő

> Újrahasznosítható lekérdezések: létrehozás, használat, szerkesztés, leválasztás, szervezés, import és export, jogosultság és hibaelhárítás.

A globális lekérdezéssel egyszer elmentesz egy lekérdezési ciklus beállítást, és az egész oldalon újra felhasználhatod. A **Lekérdezéskezelő** a szerkesztő felülete, ahol ezeket a lekérdezéseket létrehozod, szerkeszted, rendezed, importálod és exportálod.

![A Lekérdezéskezelő a Bricks szerkesztőben](./kepek/dinamikus-tartalom-lekerdezeskezelo.webp)

*A Lekérdezéskezelő a Bricks szerkesztőben* (https://minta-bolt.hu/lekerdezes-teszt/?bricks=run)

A képen a **Lekérdezéskezelő** látható a **Böngésző** ablakban: bal oldalon a **Kategóriák**, jobb oldalon a **Lekérdezések** listája, alul az **Új lekérdezés neve ...** mező, a jobb felső sarokban az importálás és az exportálás ikonja.

Akkor érdemes globális lekérdezést használni, ha több ciklusnak ugyanazt a lekérdezési logikát kell használnia. Például:

- „Legfrissebb hírek” kártyák több nyitóoldalon,
- egy egységes termékkarusszel-lekérdezés,
- egy újrahasznosítható csapattag-lekérdezés,
- egy könyvtárlista meghatározott szerepkörökkel, rendezéssel és lapozással,
- egy összetett, PHP-lekérdezésszerkesztővel megírt lekérdezés, amelyet egy helyen szeretnél tartani,
- egy megosztott API-lekérdezés beállítása.

Egyszeri ciklusokhoz nincs szükség globális lekérdezésre. Ha a lekérdezés csak egy elemhez tartozik, használj helyi lekérdezést.

## Helyi és globális lekérdezés

- A **helyi lekérdezés** az összes beállítását közvetlenül a ciklus elemében tárolja.
- A **globális lekérdezés** a teljes beállítást az oldal globális Bricks adataiban tárolja. A ciklus elem csak a globális lekérdezés azonosítójára hivatkozik.

Amikor a Bricks egy globális lekérdezésre hivatkozó ciklust jelenít meg, előbb feloldja a globális lekérdezést, majd a feloldott beállításokat úgy futtatja, mintha azok a ciklus saját lekérdezésbeállításai lennének. Ennek következményei:

- A globális lekérdezés szerkesztése minden rá hivatkozó ciklust frissít.
- A leválasztás átmásolja az aktuális beállításokat a helyi ciklusba.
- Ha a globális lekérdezés törlődik vagy hiányzik, a hivatkozó ciklusoknak nincs mentett globális beállításuk.
- A globális lekérdezés tartalmazhat szokásos lekérdezésvezérlőket, API-lekérdezés beállításait és PHP-lekérdezésszerkesztő beállításait is.

## Globális lekérdezés létrehozása ciklusból

1. Jelölj ki egy támogatott ciklus elemet (például Tárolót vagy Blokkot).
2. Kapcsold be a **Lekérdezési ciklus** kapcsolót.
3. Állítsd be a lekérdezést helyi lekérdezésként.
4. A **Lekérdezés** vezérlőben kattints a **Létrehozás (Globális lekérdezés)** ikonra.
5. Add meg a nevet.
6. Szükség esetén adj meg leírást és kategóriát.
7. Hozd létre a lekérdezést.

![A Lekérdezés vezérlő a Típus mezővel, mellette a globális lekérdezés ikonjai](./kepek/dinamikus-tartalom-lekerdezes-vezerlo.webp)

*A Lekérdezés vezérlő a Típus mezővel, mellette a globális lekérdezés ikonjai* (https://minta-bolt.hu/lekerdezes-teszt/?bricks=run)

A képen a **Lekérdezés** vezérlő felső sorában két ikon látszik a **Típus** felirat mellett: a bal oldali a **Létrehozás (Globális lekérdezés)**, a jobb oldali a **Lekérdezéskezelő** megnyitására szolgál.

A létrehozás után a Bricks a ciklushoz rendeli az új globális lekérdezés azonosítóját: a ciklus mostantól a globális lekérdezésre hivatkozik a teljes helyi beállítás tárolása helyett. Használj beszédes neveket: a „Három legfrissebb ingatlan” jobb, mint a „Lekérdezés 1”.

## Globális lekérdezés létrehozása a Lekérdezéskezelőben

A Lekérdezéskezelőt így nyithatod meg:

- az eszköztáron: **Kezelés → Lekérdezéskezelő**,
- a parancspalettáról: **Kezelés: Lekérdezés**,
- a **Lekérdezés** vezérlő ikonjairól.

A Lekérdezéskezelőben:

1. Hozz létre egy új lekérdezést (az **Új lekérdezés neve ...** mezővel).
2. Jelöld ki a lekérdezést.
3. Add meg a nevét, kategóriáját és leírását.
4. Állítsd be a lekérdezés beállításait.
5. Mentsd a szerkesztőt.

A lekérdezés ezután elérhető minden olyan ciklusnak, amely használhat globális lekérdezést.

## Globális lekérdezés használata

1. Jelölj ki egy ciklus elemet.
2. Kapcsold be a **Lekérdezési ciklus** kapcsolót.
3. Nyisd meg a **Lekérdezés** vezérlőt.
4. Kattints a földgömb (kiválasztó) vezérlőre.
5. Válassz egy globális lekérdezést.

Ha még nincs globális lekérdezés, a földgömb vezérlő nem jelenik meg. A kiválasztás után a ciklus a globális lekérdezés azonosítóját tárolja, a beállításokat a szerkesztő és a frontend is a globális lekérdezésből olvassa.

## Globális lekérdezés szerkesztése

Kétféleképpen szerkesztheted:

- a Lekérdezéskezelőben,
- annak a ciklusnak a **Lekérdezés** vezérlőjében, amely a globális lekérdezésre hivatkozik.

Beépített szerkesztésnél a Bricks jelzi, hogy megosztott lekérdezést szerkesztesz. A módosítások globálisak: minden olyan ciklust érintenek, amely arra az azonosítóra hivatkozik. Apró, egyértelmű módosításokhoz használhatod a beépített szerkesztést. Ha nevek, kategóriák, leírások, importálás, exportálás vagy több mentett lekérdezés összevetése a cél, a Lekérdezéskezelő a megfelelő hely.

## Globális lekérdezés leválasztása

A leválasztás a globális lekérdezésre mutató hivatkozást visszaalakítja helyi lekérdezéssé. Ilyenkor:

1. A Bricks megkeresi az aktív globális lekérdezést.
2. A globális lekérdezés beállításait átmásolja az aktuális ciklusba.
3. Eltávolítja a globális lekérdezés azonosítóját a ciklusról.
4. A ciklus további szerkesztései már nem hatnak az eredeti globális lekérdezésre.

Akkor válaszd, ha egy példánynak variációvá kell válnia. Ha például öt oldal használja a „Három legfrissebb bejegyzés” lekérdezést, de az egyik oldalon hatot kell mutatni, először azt az egy ciklust válaszd le.

## Szervezés a Lekérdezéskezelőben

A globális lekérdezéseknek ezek az adatai vannak:

- **Név:** a lekérdezés azonosításához kötelező.
- **Leírás:** választható, a csapatnak ad támpontot.
- **Kategória:** választható csoportosítás.
- **Beállítások:** maga a lekérdezés beállítása.

A kategóriák nagyobb oldalakon segítenek, ha a globális lekérdezések több területhez tartoznak (blog, termékek, események, tagok). A Lekérdezéskezelőben a **Kategóriák** oszlopban az **Új kategória neve ...** mezővel adhatsz hozzá kategóriát; a **Mind** és a **Kategorizálatlan** sor a szűréshez van.

Kerüld a sok majdnem azonos lekérdezést. Ha két lekérdezés csak az oldalankénti bejegyzésszámban tér el, döntsd el, hogy ez a különbség legyen-e helyi, vagy a megosztott lekérdezést kell átnevezni a valódi céljához.

## Import és export

A Lekérdezéskezelő a kijelölt globális lekérdezéseket JSON-ként exportálja. Az exportált adat tartalmazza:

- a kijelölt lekérdezéseket,
- a kijelölt lekérdezések által használt kategóriákat.

Importáláskor a Bricks a hiányzó lekérdezéseket és kategóriákat adja hozzá az aktuális oldalhoz. Ha egy importált lekérdezés azonosító szerint már létezik, a Bricks meglévőként kezeli, és nem duplikálja vakon.

Használd:

- újrahasznosítható lekérdezésdefiníciók áthelyezésére oldalak között,
- kezdő lekérdezéskönyvtár megosztására ügyfélprojektek között,
- a globális lekérdezések mentésére nagyobb módosítások előtt.

Importálás után nyisd meg az egyes lekérdezéseket, és ellenőrizd a bejegyzéstípusokat, taxonómiákat, meta kulcsokat, API-végpontokat és a dinamikus adatra vonatkozó feltételezéseket. Az egyik oldalon érvényes lekérdezés is üres eredményt adhat egy másikon, ha az adatmodell eltér.

## Jogosultság

A Lekérdezéskezelő elérését a **Hozzáférés a lekérdezéskezelőhöz** szerkesztői jogosultság szabályozza (a **Bricks → Beállítások → Szerkesztői hozzáférés** oldalon találod). Aki nem rendelkezik vele, az nem hozhat létre, szerkeszthet, választhat le vagy kezelhet globális lekérdezést a Lekérdezéskezelő vezérlőivel. Meglévő globális lekérdezést ettől még kiválaszthat, ha vannak elérhető globális lekérdezések. Ez csapatoknál fontos, mert egy globális lekérdezés módosítása egyszerre sok oldalt érinthet. Ezt a jogosultságot csak olyan felhasználóknak add meg, akik értik a megosztott lekérdezések módosításának oldalszintű hatását.

## Multisite tárolás

Multisite telepítésen a Bricks a globális lekérdezéseket a főoldalról is olvashatja, ha a multisite beállítás ezt kéri. A globális lekérdezések kategóriáinak külön főoldal-beállításuk van. A szokásos szerkesztői mentés a lekérdezések és kategóriák módosításait az aktuális oldalra menti. Ha egy multisite lekérdezés hiányzik, váratlanul közös vagy váratlanul helyi, ellenőrizd a főoldali lekérdezésbeállítást és azt is, hol történt az utolsó mentés.

## Globális lekérdezés és PHP-lekérdezésszerkesztő

A globális lekérdezés tartalmazhat PHP-lekérdezésszerkesztő kódot. Fontos tudnivalók:

- A PHP-lekérdezésszerkesztő kódjának futtatásához a kódvégrehajtást engedélyezni kell.
- A lekérdezésszerkesztő kódja alá van írva.
- Hiányzó vagy érvénytelen aláírás esetén a kód nem fut.
- A kódellenőrzés (Code Review) a globális lekérdezések lekérdezésszerkesztő kódját is tartalmazhatja.
- A globális lekérdezésben szerkesztett kód minden, a lekérdezést használó ciklust érint.

PHP-szerkesztőkódhoz csak akkor használj globális lekérdezést, ha a központosítás megéri a nagyobb hatókört. Egyszeri, különleges lekérdezésnél a helyi lekérdezés biztonságosabb.

## Globális lekérdezés és API-lekérdezés

A globális lekérdezés tárolhatja az API-lekérdezés beállításait. Ez akkor hasznos, ha több ciklusnak ugyanabból a végpontból, ugyanazzal a válaszútvonallal, hitelesítéssel, gyorsítótár-időtartammal és lapozásbeállítással kell olvasnia.

Ha egy globális lekérdezésre hivatkozó ciklusban szerkeszted az API-beállításokat, a Bricks a globális lekérdezés beállításait frissítheti, nem csak a helyi ciklusét. Kezeld úgy, mint bármelyik globális módosítást: minden példány megváltozhat.

Az API-ablakban létrehozott API-lekérdezési parancsikonok a böngésző helyi tárolójában (localStorage) vannak. Nem kerülnek mentésre globális lekérdezésadatként, és nem osztódnak meg más felhasználókkal.

## Globális lekérdezés és lekérdezési szűrők

A lekérdezési szűrők a ciklus elemét célozzák, nem a globális lekérdezés definícióját. Ezért egy globális lekérdezést több helyen is használhatsz, és mindegyik ciklus köré más szűrőelrendezést tehetsz. Minden szűrőelemnek a megfelelő ciklus azonosítóját kell céloznia. Ha módosítod a globális lekérdezés objektumtípusát vagy alap lekérdezésbeállításait, az az összes szűrt példányra hatással lehet.

## Sablonimport és távoli sablonok

A sablonok és az importált tartalom tartalmazhat olyan ciklusokat, amelyek globális lekérdezésre hivatkoznak, vagy globális lekérdezésadatot hordoznak. Import után ellenőrizd, hogy a várt globális lekérdezések megérkeztek-e, és az adott oldal adatai támogatják-e őket. Gyakori ellenőrzések:

- A ciklus még mindig érvényes globális lekérdezésre hivatkozik?
- A globális lekérdezés olyan bejegyzéstípusokat használ, amelyek léteznek ezen az oldalon?
- A taxonómia- és meta mezőnevek léteznek?
- Az API-hitelesítéshez új konstans vagy hitelesítő adat kell?
- A lekérdezésszerkesztő kódjához érvényes aláírás kell?

## Gyakorlati munkamenet

Újrahasznosítható lekérdezéshez:

1. Építsd fel és teszteld a lekérdezést helyileg egy cikluson.
2. Ellenőrizd a kimenetet, a lapozást, a szűrőket és a dinamikus adatot.
3. Mentsd el globális lekérdezésként.
4. Nevezd el a céljának megfelelően.
5. Adj leírást, amely megmondja, hol használandó.
6. Alkalmazd a többi cikluson.
7. Későbbi szerkesztésnél ellenőrizd a fő felhasználási helyeket.

Egyszeri variációhoz:

1. Alkalmazd a globális lekérdezést.
2. Válaszd le.
3. Végezd el a helyi módosításokat.
4. Nevezd át a helyi burkoló elemet vagy szakaszt, hogy a későbbi szerkesztők tudják, hogy a különbség szándékos.

## Hibaelhárítás

**Hiányzik a földgömb ikon.** Még nincs globális lekérdezés, vagy az aktuális ciklus már globális lekérdezésre hivatkozik. Aki nem rendelkezik a lekérdezéskezelő-hozzáféréssel, az meglévő globális lekérdezést kiválaszthat, de nem hozhat létre, nem szerkeszthet, nem választhat le és nem kezelhet.

**Egy ciklus több oldalon is megváltozott.** A ciklus valószínűleg globális lekérdezést használ. Nyisd meg a **Lekérdezés** vezérlőt, és nézd meg, hivatkozik-e globális lekérdezés azonosítójára. Ha csak egy oldalon kell változtatnod, szerkesztés előtt válaszd le a ciklust.

**A globális lekérdezés ki van választva, de a kimenet üres.** Ellenőrizd a globális lekérdezés beállításait, majd az oldal adatait. Hiányzó bejegyzéstípus, kifejezés, felhasználói szerepkör, meta kulcs, API-válasz vagy lekérdezésszerkesztő-aláírás mind okozhat üres kimenetet.

**A leválasztott ciklus még mindig kapcsolódónak tűnik.** A leválasztás után mentsd a szerkesztőt, és nyisd meg újra a **Lekérdezés** vezérlőt. A ciklusnak helyi lekérdezésbeállításokat kell mutatnia, nem csak egy globális lekérdezés azonosítóját.

**Az importált lekérdezések nincsenek rendezve.** Az importált kategóriák csak azokhoz a kijelölt lekérdezésekhez kerülnek át, amelyek használják őket. Ha az aktuális oldal más szervezést használ, rendeld újra a kategóriákat a Lekérdezéskezelőben.

**A csapattagok nem tudják szerkeszteni a lekérdezéseket.** Ellenőrizd a felhasználó szerkesztői jogosultságait, és a **Hozzáférés a lekérdezéskezelőhöz** jogot csak azoknak add meg, akik oldalszintű lekérdezésmódosítást végezhetnek.
