field group modul, vagy content|without és egyéni sablon?

HF leon képe

Melyik a jobb megoldás?
Kedves régi "motorosok"! Szerintetek, melyik a jobb megoldás arra, ha mezőket szeretnék egyedi elrendezésbe formázni?

A mezők egyazon tartalomtípusban vannak.

Használhatnék teljesen egyedi sablont a mezők értékeinek egyedi bekérésével a content-ből. Ekkor minden mezőt egyedileg kéne elhelyeznem és egy új mező hozzáadásánál az addig nem jelenne meg, míg nem frissítem a sminket.

Tehát csak egy bizonyos mennyiségű mezőt kéne egyedileg elrendeznem. Ehhez létezik egy field group modul, ahol különféle blokkokba szervezhetem a mezőket.

Ugyanakkor úgy vélem, talán jobb megoldás lenne a content|without szűrővel kivennem azt a négy-öt mezőt, amit szeretnék a content-ből. Így a maradék content a hagyományos módon kerülne megjelenítésre. A kiszűrt mezőket pedig kedvem szerint jeleníthetném meg az adott tartalomtípus sminkjében.

Szóval szerintetek, melyik a jobb megoldás? Esetleg van olyan, amire nem gondoltam?

Drupal verzió: 
segi képe

hogy nézd meg a display suite modul-t. https://www.drupal.org/project/ds
Itt sokkal flexibilisebb layout kezelést is eltudsz érni és akár egymás mellé is tudod rendezni a tartalmakat.

1
0

Drupal developer at Cheppers

HF leon képe

A display suite remek eszköz, bár, még nem ismertem ki minden lehetőségét. Van, még mit tanulnom, hogy miket is lehet megvalósítani vele.

Esetemben a kiszűrt mezőket kellene, listába, vagy táblázatba rendezni. A rendezés egyik esete egy kétoszlopos táblázat. A th elemek adottak, azt a drupal fordító rendszerén át is megoldhatom. A második oszlopban az első sor egy mezőt, míg a második három mezőt (vesszővel elválasztva) az utolsó pedig egy mezőt tartalmaz.

Az egyedi részek mindig a tartalom elején vannak ezért tűnt jó ötletnek a szűrős megoldás. Így, ha a tartalom további mezőkkel bővül, akkor a sminket nem kell változtatni, míg magát a kiemelt részt nem érinti a változás.

Kérdés:
Amikor elkezdtem foglalkozni a drupal 8-cal, akkor feltűnt, hogy a mezők twig kódjában nem lehet rész html elemeket elhelyezni. Akkoriban arra gondoltam, ha úgy is tudom a mezők sorrendjét, akkor egy táblázatot úgy is elkészíthetnék, hogy a megfelelő html részelemeket a megfelelő mezők twig sminkjébe írnám.
Amikor egy táblázat összes alkotóeleme benne van egy twig fájlban, akkor kirajzolódik, ám, ha a táblázat csak egy része szerepel, akkor egyszerűen törődnek a tr, th, td elemek és sima szövegként jelenik meg a közéjük írt érték.

Miért van ez így? Illetve ki lehet ezt iktatni, vagy nem?

Ugyebár, ha nem tiltaná a részelemeket a drupal 8, akkor, ahogy megjelenítődnek a mezők a teljes struktúra is kialakulna és létrejönne például a táblázat. Mivel van lehetőség tartalomtípushoz

0
0
segi képe

ezt a "rész html elemeket elhelyezni" ? Én mindképp a táblázat teljes html vázát egy twig fájlba tenném és csak az egyes mezők kimenetét bíznám field twig fájlokra.
De ha ilyen komplex a layout, akkor esetleg átgondolnám magát az adattárolást is(a vesszővel alválasztott mezők mért külön field-ek?).
Álltalában az ilyen komplex stuktúráknál a különböző megjelenítési szinteket kombinálva kell használni(field formatter - field display, group és display suite).

A legnagyobb flexibilitást amúgy a panels + panelizer + mini panel megoldás adja, de azért ennek használata és átlátása időt és gyakorlást igényel. (nehezebb mint a display suite).

0
0

Drupal developer at Cheppers

HF leon képe

Amikor a content a node.html.twig-ben kirajzolódik, akkor ott a drupal a beállítások alapján a content-et maga generálja ki. Itt hozzáférhető minden mező. A mezők twig fájljánál csak az adott mezőbe bekerülő változók érhetők el a teljes tartalom nem (kivéve persze, ha a .theme fájlon át be nem fűzőm őket az adott mező változói közé).

Viszont tudom milyen sorrendben generálódik ki a content. Ekkor, ha több mezőből egy táblázatot szeretnék, akkor az egyes mezőkhöz hozzáfűzhetem a táblázatot alkotó html elemeket, de nyilván nem mindet, hisz a táblázatot az adott táblázatba tartozó mezők fogják kirajzolni.

Példa:

Van 6 mező. Legyen ez egy két soros, három oszlopos táblázat. (A fent említett esetek nem ilyenek, de jól érzékelteti, hogy mire gondoltam rész html esetén.)

Tehát az első mezőbe bekerül mondjuk a táblázat fejléce és az első mező értéke, mint tartalom. Így az alábbi html elemeket tartalmazza (az egyszerűség kedvéért a thead, tbody most lényegtelen):

Első mező twig-jében szereplő html elemek:
table
tr
th-/th, th-/th, th-/th
/tr
tr
td (ide jön at első mező értéke) /td

Második mező:
td (második mező értéke) /td

Harmadik mező:
td (harmadik mező értéke) /td
/tr

Negyedik mező:
tr
td (negyedik mező értéke) /td

Ötödik mező:
td (ötödik mező értéke) /td

Hatodik mező:
td (hatodik mező értéke) /td
/tr
/table

Ilyenkor, mivel az első mező twig fájljában nincs befejezve a táblázat, ezért minden a táblázathoz kapcsolódó html elemet töröl a drupal és a megjelenítésnél, már nem lesznek ott. Ugyanígy jár a többi mező is, mivel hiányos html elemeket tartalmaz, ezért azok nem jelenítődnek meg. Ez olyannyira így van, hogy, ha a table - /table elem hiányzik, akkor is törlődik minden tr, th és td elem. Nyilván tudja a drupal, vagy inkább a twig, hogy ezek csak egy table elemen belül működnének ezért kiveszi őket. Azt sajnos, már nem tudja, hogy ha a hat mezőt egymás után a rész html elemekkel kigenerálná, akkor a végeredményben, már ott lenne a hibátlan teljes táblázat.

Lehet butaság volt ez az elgondolás, de elsőre logikusnak tűnt.

(A vesszővel elválasztott mezők eredetileg külön kategóriákba tartoznak, de az oldaleleji összefoglalóban egy táblázat sorba kerülnek a rokon kategóriák.)

Panels-t, még nem használtam eddig. Nézegettem, már, de komolyabban, még nem alkalmaztam. A drupal igazi mélységeivel, most a 8-as verzióban kezdtem el ismerkedni. A 7-es kapcsán sokan dicsérték a panels és a köré épülő modulok funkcióit, de sajnos, még nem ismerkedtem meg vele komolyabban.

0
0