Listázási sablon Timber/Twig nézettel
Listázási sablon készítése HTML-lel, CSS-sel és Twig-jelölőkkel, dinamikus adatok, szűrők, feltételes címkék, és kész elrendezések átvétele.
A Timber egy WordPress-bővítmény, amellyel HTML-t írhatsz a Twig sablonmotorral, a PHP-fájloktól elkülönítve. A JetEngine Timber/Twig nézetében HTML-lel és CSS-sel készíthetsz gyors listázási sablont, amelyet előbeállítások, dinamikus adat gombok, szűrők és feltételes címkék segítenek. A sablon forrása lehet bejegyzés, felhasználó, kifejezés, kapcsolat, beállítóoldal adata, Lekérdezéskészítő, ismétlő mező, egyéni tartalomtípus vagy REST API végpont.
Előfeltétel: a Timber bővítmény telepítve és aktiválva, az aktív JetEngine.
Előkészítés
Szekció neve “Előkészítés”- Nyisd meg a JetEngine → JetEngine → Teljesítmény fület, kapcsold be a Timber/Twig nézetek kapcsolót, telepítsd a javasolt Timber bővítményt, és kattints a beállítások mentésére.
- Ezután a JetEngine → Listázások/komponensek oldalon az Új elem hozzáadása gomb ablakában a Listázási nézet listában megjelenik a Timber/Twig.

A képen a Timber/Twig nézetek kapcsoló a Teljesítmény fülön látható.
A sablon létrehozása
Szekció neve “A sablon létrehozása”- Kattints az Új elem hozzáadása gombra.
- Válaszd ki a forrást (például Bejegyzések) és a bejegyzéstípust. A példában a „Doktorok” egyéni bejegyzéstípus elemei szerepelnek: a cím a doktor neve, a tartalom a bemutatkozása, a kiemelt kép a fotója, a metamezők pedig a szakterület, a gyakorlat éveinek száma és az e-mail-cím.
- Add meg a Listázási elem nevét (nem kötelező), a Listázási nézet legyen Timber/Twig, és kattints a Listázási elem létrehozása gombra.
- Megnyílik a Timber/Twig szerkesztő a HTML- és a CSS-területtel és az előnézettel.
Dinamikus és alapadatok
Szekció neve “Dinamikus és alapadatok”A Dynamic data gombbal illeszthetsz be adatot.
- Post: a bejegyzés alapadatai. Válaszd ki például a Post Title elemet, és kattints az Insert gombra: a
{{ post.title }}jelölő kerül be. Kézzel is begépelheted. - Dynamic Data: válaszd a Meta Data forrást és a metamezőt (például a „Szakterület” szöveg mezőt). Ez ilyen jelölőt ad:
{{ jet_engine_data(args={source:'meta',meta_key:'_specialty'}) }}. A jelölő után saját szöveget is írhatsz, például „év gyakorlat”.
Az elemeket <div> elemekkel tagold, hogy a jelölők külön sorba kerüljenek.
Szűrők az eredményre
Szekció neve “Szűrők az eredményre”Az Add filter to result gombbal a dinamikus adatot átalakíthatod vagy a kívánt formában jelenítheted meg.
A hosszú bejegyzéstartalom rövidítéséhez:
- Válaszd a Post → Post Content adatot, majd az Add filter to result gombot.
- Válaszd a JetEngine Callback lehetőséget, és a Callback function listából a Trim string by charts or words visszahívást. Ez a lehetőség csak akkor jelenik meg, ha a JetEngine → JetEngine → Modulok → Külső modulok fülön bekapcsoltad a Trim String visszahívás modult.
- A Trimmed Type lehet Words vagy karakterek; a String length a hossz (például 5).
- Insert.
Eredmény: {{ post.content|jet_engine_callback(args={cb:'jet_engine_trim_string_callback',jet_trim_cb_type:'words',jet_trim_cb_length:'5'}) }}. A szöveg a Timber Trim text by words és Trim text by chars szűrőivel is rövidíthető.
A kiemelt kép beillesztése:
- Dynamic data → Dynamic Data, forrás Meta Data, a Custom Field Key értéke
_thumbnail_id. - Add filter to result → JetEngine Callback, a visszahívás Get image by ID, itt a kép méretét is kiválaszthatod.
- Insert. Eredmény:
{{ jet_engine_data(args={source:'meta',custom_key:'_thumbnail_id'})|jet_engine_callback(args={cb:'wp_get_attachment_image'}) }}
Feltételes címkék
Szekció neve “Feltételes címkék”A Conditional Tags gomb a JetEngine Dinamikus láthatóság funkciójához hasonlóan működik: az elemet csak a feltétel teljesülésekor jeleníti meg. A JetEngine kibővített feltételeihez kapcsold be a Dinamikus láthatóság modult. A Twig általános szerkezete:
{% if feltetel %}<!-- ide jön a HTML -->{% endif %}Példa: egy címke csak akkor jelenik meg, ha a „Gyakorlat évei” szám nagyobb 10-nél.
- Kattints a Conditional Tags gombra.
- Válaszd a Greater than feltételt, a Field a mező neve, az Value 10, a Context Current listing item object, a Data type Numeric.
- Insert. A beszúrt szerkezet:
{% if jet_engine_show_if(args={"jedv_condition":"greater-than","jedv_field":"_practice-experience","jedv_value":"10","jedv_context":"current_listing","jedv_data_type":"numeric"}) %}<!-- ide jön a HTML -->{% endif %}A megjegyzés helyére írd be: „Több mint 10 év tapasztalat!”. A Reload preview gomb az előnézetet frissíti, de az előnézetben csak az alap bejegyzésadatok látszanak. A JetEngine-adatokat a Listing Grid oldalán vagy a frontenden ellenőrizheted.
A stílusokat a CSS-területbe írd. Az osztály a HTML-ben:
<a class="doctor-name">{{ post.title }}</a>A CSS-ben a szelektor elé tedd a selector kulcsszót, hogy a szabály csak erre a listázásra vonatkozzon:
selector .doctor-name { font-size: 18px;}A feltételes címkék a stílusoknál is használhatók. Például egy szegélyt kaphat a kép, ha az elem helyzete páros:
- A Conditional Tags gombbal válaszd az Is odd item feltételt, és illeszd be:
{% if jet_engine_show_if(args={"jedv_condition":"listing-odd"}) %}. A megjegyzés helyére másold be a kép jelölőjét. - Válaszd az Is even item feltételt (
"jedv_condition":"listing-even"), és ide a kép jelölőjét tedd, egyeven-itemosztályú<a>elembe. - A CSS-be:
selector .even-item { display: flex; border: 1px solid; padding: 5px;}Mentsd a változásokat a Mentés gombbal.
A sablon a Listing Gridben
Szekció neve “A sablon a Listing Gridben”Hozz létre oldalt a blokkszerkesztővel, Elementorral vagy Bricksszel. A blokkszerkesztőben az Oldalak → Új oldal oldalon add hozzá a Listing Grid blokkot, és válaszd ki a sablont. A rács a metamezők értékeit mutatja, a CSS-stílusok a címeken és a páros elemek képein érvényesek.
Kész elrendezések használata
Szekció neve “Kész elrendezések használata”Ha nem akarsz mindent a nulláról felépíteni, kész kártyaelrendezést is átvehetsz (például egy webes CSS-kártya gyűjteményből), de a bemásolt kódot gondosan át kell nézni. A példában ezek történtek:
- A HTML-ből csak az első kártyát tartottuk meg, az információs szalagot, a burkoló elemet és a számozást töröltük, mert a sablon egyetlen elem elrendezése.
- A CSS-ből töröltük a törölt elemekre vonatkozó szabályokat (
.info,.cards-wrapper), valamint abody,a,@mediaés@importszabályokat a stílusok elszigetelése, az ütközések és a felesleges terhelés elkerülése érdekében. - A betűcsaládokat a sablon témájához igazítottuk. Érdemes a WordPress-témába integrált betűtípust használni.
- A HTML-ben a szóközöket tabulátorra cseréltük a hibák elkerülésére.
- Minden CSS-szelektor elé beírtuk a
selectorszót, a kettős szelektoroknál mindkettő elé:
selector .card:before, selector .card:after {- A
.cardszabályban awidth: 15em;értéketwidth: 100%;értékre cseréltük (vagy törölhető), hogy az átméretezés ne okozzon gondot.
A statikus adat cseréje dinamikusra
Szekció neve “A statikus adat cseréje dinamikusra”- A hivatkozás és a háttérkép: az
hrefattribútum URL-jét töröltük, a Dynamic data → Dynamic URL lehetőséggel a Permalink forrást illesztettük be ({{ jet_engine_url(args={}) }}). A--bg-imgváltozó URL-je helyére a Dynamic URL Thumbnail URL forrása került. Eredmény:
<a class="card" href="{{ jet_engine_url(args={}) }}" style="--bg-img: url({{ jet_engine_url(args={source:'_thumbnail_url'}) }})">- A cím: az
<h1>elemet<div>elemre cseréltük, hogy ne zavarja az oldal szemantikus hierarchiáját,titleosztállyal, a szöveg helyére a Post → Post Title került (<div class="title">{{ post.title }}</div>). A CSS-ben aselector .card h1 {sortselector .card .title {sorra írtuk át. - A szöveg: a Post → Post Content adat, az Add filter to result gombbal a Trim text by words szűrő, 20 szó, a More string mezőben „…”. Eredmény:
<p>{{ post.content|excerpt('20','...') }}</p>. - A dátum: Post → Post Date, szűrőként a JetEngine Callback Format date visszahívása. Eredmény:
<div class="date">{{ post.post_date|jet_engine_callback(args={cb:'jet_engine_date'}) }}</div>. - A címke: a bejegyzéstípushoz rendelt egyéni taxonómia kifejezésének neve: Post → Post Terms, szűrőként a Get term name visszahívás. Eredmény:
<div class="tag">{{ post.terms|jet_engine_callback(args={cb:'jet_get_term_name'}) }}</div>.
A Reload preview gomb után a kép kivételével minden látszik, mert a JetEngine dinamikus adatai csak a Listing Grid oldalon vagy a frontenden ellenőrizhetők. A Listing Grid blokkot az oldalon kiválasztva a rács a bejegyzések képét, címét, szövegét, dátumát és kifejezését mutatja, a frontenden pedig a hover hatás is működik.
Készült: