# File Query: adatok CSV-, JSON- és XLSX-fájlból

> A File Query beállításai és három példa: könyvlista CSV-ből, szűrt lista JSON-ból és katalógus XLSX-fájlból, Listing Grid-del megjelenítve.

A **File Query** típus strukturált adatot olvas fájlból, és a kapott adatokat lekérdezés-eredményként használja. A fájl tartalmát így megjelenítheted a Listing Grid-ben anélkül, hogy az adatbázisba importálnád. Támogatott formátumok: CSV, JSON és XLSX.

A lekérdezés a **JetEngine → Lekérdezéskészítő** oldalon készül, a **File Query** típussal.

![A File Query beállításai](./kepek/query-builder-fajl-altalanos.webp)

*A File Query beállításai* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-engine-query&query_action=add)

A kép alsó blokkja a **File Query**: az adattípus, a beviteli mód, a forrásszöveg, a rekordok útvonala, az oldalankénti darabszám, az azonosítóoszlop, a rendezés és a tulajdonságszűrők.

## Beállítások

| Beállítás | Mit csinál |
|---|---|
| **Adattípus** | A fájl formátuma: JSON, CSV vagy XLSX. |
| **Input Mode** | CSV és JSON esetén: **Szövegmező** (a tartalmat közvetlenül beilleszted) vagy **Media Upload** (a Médiatárba töltött fájlból olvas). |
| **Source Text** | Szövegmező módban ide illeszted be a JSON vagy CSV tartalmat. |
| **Source File** | Fájlfeltöltési módnál és XLSX-nél a Médiatárból választott fájl. |
| **Attachment ID** | Opcionális, **Media Upload** módban: a melléklet azonosítója, amellyel dinamikusan felülírhatod a Médiatárból választott fájlt. |
| **Records Path** | JSON-nál pontozott útvonal a rekordokat tartalmazó tömbhöz, ha az adat beágyazott szerkezetben van. |
| **Row Delimiter**, **Column Delimiter** | CSV-nél a sor- és oszlopelválasztó. Hagyd az alapértéket, ha a fájlod megfelel neki. |
| **First Row Contains Headers** | CSV-nél a fájl első sora a tulajdonságok nevei. Kapcsold ki, ha a fájlnak nincs fejlécsora; ilyenkor az első sort nem használja nevekként. |
| **Sheet** | XLSX-nél a munkalap neve. Üresen az első munkalapot használja. |
| **Header Row** | XLSX-nél az oszlopneveket tartalmazó sor száma (alapérték 1). |
| **Items Per Page** | Hány sort ad vissza oldalanként. A **0** minden sort visszaad lapozás nélkül. |
| **ID Column** | Opcionális tulajdonság, amely a sor stabil azonosítóját tartalmazza (JSON, CSV, XLSX). |
| **Order By Property** | Opcionális tulajdonság, amely szerint rendez. |
| **Rendelés** | A rendezés iránya: növekvő vagy csökkenő. |
| **Property Filters** | A beolvasott sorok szűrése tulajdonságértékek szerint. Az **Új hozzáadása** gomb feltételt, az **Új csoport hozzáadása** gomb feltételcsoportot vesz fel (**Property Key**, **Compare**, **Value**, **Type**). Az összehasonlítások és típusok a közös feltételblokk szerintiek: lásd az [összehasonlító műveletekről és adattípusokról szóló fejezetet](https://hub.hellowp.io/hu/plugins/jet-engine/query-builder-operatorok-es-tipusok/). |

![A JSON adattípus beállításai](./kepek/query-builder-fajl-json.webp)

*A JSON adattípus beállításai* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-engine-query&query_action=add)

A képen a **File Query** blokk JSON adattípusnál: beviteli mód, forrásszöveg, rekordok útvonala, oldalankénti darabszám, azonosítóoszlop, rendezés és a tulajdonságszűrők.

A **Property Filters** feltételeit az **Új csoport hozzáadása** gombbal csoportokba rendezheted. A csoportok között a kapcsolat **ÉS** (a kapcsolódó csoportok mindegyik feltételének teljesülnie kell) vagy **VAGY** (legalább az egyik csoportnak teljesülnie kell) lehet. A csoport osztályai külön gombbal szerkeszthetők: ennek menetét a [Csoportos feltételek a lekérdezési argumentumokban](https://hub.hellowp.io/hu/plugins/jet-engine/query-builder-csoportos-feltetelek/) fejezet írja le. A lekérdezés közzétételéhez kattints a **Lekérdezés hozzáadása** gombra.

A beolvasott adatot a **Cache Expires** (gyorsítótár lejárata másodpercben, 0: nincs lejárat) is érinti, az általános beállításokban; ez főleg külső objektum-gyorsítótárnál (Redis, Memcached) számít.

## Közös menet: lekérdezés, sablon, rács

Mindhárom példa ugyanígy halad:

1. **Lekérdezés**: a **JetEngine → Lekérdezéskészítő** oldalon **Új hozzáadása**, név, **File Query** típus, az adattípus és a beviteli mód beállítása, majd **Lekérdezés hozzáadása**.
2. **Listing sablon**: a **JetEngine → Listings/Components** oldalon **Új elem hozzáadása**. Forrásnak **Posts**, bejegyzéstípusnak **Posts**, szerkesztőnek például Elementor. A sablonban Dynamic Field elemeket helyezel el. A forrás marad **Post/Term/User/Object Data**, az **Object Field** listában a lekérdezés neve alatt találod a fájl tulajdonságait. A szerkesztőben az adatok nem látszanak, csak ott, ahol a Listing Grid-et elhelyezted.
3. **Megjelenítés**: a kívánt oldalra Listing Grid kerül, a **Listing item** listában a sablon, majd a **Custom Query** blokkban a **Use Custom Query** kapcsoló bekapcsolása és a lekérdezés kiválasztása. Az oldal közzététele után az előoldalon látszik az eredmény.

## CSV-fájl példa

Könyvadatokat tartalmazó CSV-ből jelenítünk meg néhány tulajdonságot.

1. A lekérdezésben az **Adattípus** CSV, az **Input Mode** a **Media Upload**: töltsd fel a CSV-t a Médiatárba. (Ha inkább beillesztenéd, válaszd a **Szövegmező** módot, és használd a **Source Text** mezőt.)
2. Hagyd az alapértelmezett sor- és oszlopelválasztót, ha megfelelnek a fájlodnak. Kapcsold be a **First Row Contains Headers** kapcsolót, mert az első sorban a tulajdonságnevek vannak. Az **Items Per Page** maradjon 0.
3. A sablonban három Dynamic Field elem a `book_name`, a `category` és a `price` tulajdonságot jeleníti meg. Az árat a **Field Format** mezőben megadott `$%s` formátummal pénznemjellel látod el.
4. A Listing Grid a CSV összes könyvét kiírja a kiválasztott tulajdonságokkal.

## JSON-fájl példa

Könyvadatokat tartalmazó JSON-t szűrünk 4,5 feletti értékelésre.

1. A lekérdezésben az **Adattípus** JSON. Az **Input Mode**: **Szövegmező**, és a **Source Text** mezőbe illeszd be a JSON-t, vagy válaszd a **Media Upload** módot és a Médiatárból a fájlt. A JSON egy tömb, elemei például:

```json
[
  { "title": "A néma beteg", "author": "Minta Szerző", "genre": "Thriller", "year": 2019, "rating": 4.6, "price": 14.99 },
  { "title": "Eltűnt lány", "author": "Példa Írónő", "genre": "Thriller", "year": 2012, "rating": 4.4, "price": 12.99 }
]
```

2. A **Property Filters** blokkban kattints az **Új hozzáadása** gombra. A **Property Key** `rating`, a **Compare** „Nagyobb, mint”, a **Value** `4.5`, a **Type** **Numeric**.
3. A sablonban Dynamic Field elemek a `title`, `author`, `genre`, `rating` és `price` tulajdonságokhoz.
4. A rács csak a 4,5-nél jobb értékelésű könyveket mutatja.

## XLSX-fájl példa

1. A lekérdezésben az **Adattípus** XLSX. A **Source File** mezőben válaszd ki a táblázatot a Médiatárból.
2. Ha az adat az első munkalapon van, a **Sheet** maradhat üresen, különben írd be a munkalap nevét. A **Header Row** alapértéke 1, az **Items Per Page** 0.
3. A sablonban Dynamic Field elemek a `book_name`, `author`, `genre` és `price` tulajdonságokhoz.
4. A rács a táblázat könyveit mutatja.

## Gyakori kérdések

- **Használhatok JSON-adatot fájl feltöltése nélkül?** Igen: az **Input Mode** legyen **Szövegmező**, és illeszd be a JSON-t a **Source Text** mezőbe.
- **Szűrhetem a JSON, CSV vagy XLSX adatait?** Igen, a **Property Filters** blokkal.
- **Használhatok CSV-t fejléc nélkül?** Igen: kapcsold ki a **First Row Contains Headers** kapcsolót.
- **Választhatok munkalapot az XLSX-ből?** Igen: írd be a nevét a **Sheet** mezőbe. Üresen az első munkalapot használja.
