Lehetséges régiók szerint egyedi teplate fájlok létrehozása?
Például, ha mondjuk készítek egy régiót, amelybe menüket szánok, de szeretném őket máshogy formázni, mint ahogy a menu.html.twig fájlban van.
Viszont ez csak az adott régió menüire érvényesüljön máshol maradjon az alapértelmezett formázás.
Van erre lehetőség drupal8-ban?
Drupal verzió:
Fórum:
régiónkénti block template nem támogatott már
8.x drupalból kikerült ez a funkció. lásd:
https://www.drupal.org/node/2011434
az alaprendszerben elérhető template elnevezési szabályokat itt találod:
https://www.drupal.org/docs/8/theming/twig/twig-template-naming-conventions
mit értesz pontosan az alatt, hogy "szeretném őket máshogy formázni"? lehet, hogy nem is kell neked a régiónkénti block template, hanem máshogyan kell megoldani azt. ha mindenképpen per-régió template suggestion kell mégis, akkor én a hook_theme_suggestions_HOOK_alter() -el próbálkoznék először.
-
clear: both;
na végülis csak nem bírtam ki
és kipróbáltam.
a sminked .theme filejában:
mentés után törölni kell minden gyorstárat és utána lesz a blokkjaidnak régió alapján template suggestionje, például ha a sidebar-first nevű régióban van a blokk, akkor block--region-sidebar-first.html.twig templatere ugrani fog.
-
clear: both;
A blokkoknál, már sikerült, de a menüknél nem.
Pont ezzel próbálkoztam.
A menüknél nem tudtam a régió nevét átadni csak attribútumként az alábbiak szerint:
Nekem viszont ez a megoldás nem szimpatikus, mert nem szeretnék a html kódban fölös tulajdonságot az elemhez fűzni.
Nem akart működni, amikor sima változót próbáltam a menühöz rendelni.
Van esetleg erre valamilyen működő megoldás, hogy ne attribútumként, hanem mondjuk egy menu_block nevű változóként tudnék a menükhöz fűzni?
Így a suggestions_menu_alter-nél fel tudnám használni a menu_block változót a blokk régiójának lekéréséhez, de a html kódba így nem kerülne bele.
de miért a menut alterezed?
még mindig nem tudni, hogy pontosan mire is kell neked ez, továbbra is fenntartom, hogy könnyen lehet, hogy egyátalán nincs szükséged új css osztályra. konkrétan változtatni akarsz a markupon? vagy mit szeretnél csinálni pontosan?
ha a _blokkhoz_ akarsz új templatet, ne a menüt alterezzed. minden menü egy blokkba jelenik meg. a menüt akkor kéne alterezned és csak akkor, ha mondjuk a menü faszerkezetének a markupját akarod változtatni. jól lenne tudni, hogy mit szeretnél pontosan elérni. (pl: azt akarom, hogy minden menü ami a bal oldalsávba van, legyen zöld hátterű. vagy ilyesmi leírásra gondolok, gyereknyelven.)
-
clear: both;
Igen a blokkoknál sikerült megoldanom, de a menünél nem.
Szeretnék egy teljesen egyedi template-et kialakítani, minél kevesebb kompromisszummal.
Mivel egyes régiókban egyes blokkok megjelenése is egyedi ezért hasznos, ha saját twig-et rendelhetek egyes blokktípusok megjelenéséhez az adott régiókban.
A menük alapértelmezett generálása ul, li listaként generálódik. Jó lenne, ha egyes régiókban ezt felülbírálhatnám és magát a html kódot is testre szabhatnám css trükközés nélkül.
Ahhoz azonban, hogy a menüknél megállapíthassam a régiót. Kellett a menü blokkjának a neve, amit nem sikerült átadnom csak a menünek, hogy lekérhessem a régiót és így régiófüggő twig-et rendelhessek minden a régióban megjelenő menühöz, de csak azokhoz.
Mivel kismillió menü jelenik meg az adott régiókban a különféle lapoktól függően ezért nem jó, ha a menük neve alapján készítek hozzá fájlokat, ráadásul mindben ugyanaz lenne, így az hülyeségnek is tűnik.
A fenti megoldással sikerült a problémát orvosolnom, de jó lenne, ha a data-block="..." helyett olyan egyedi változót tudnék a menükhöz rendelni, ami alapján aztán a régiófüggő suggestions-t kivitelezhetném.
Vegyünk egy egyszerű példát az alapértelmezett menü esetén maga a menülista a következő lesz:
Viszont ha én egyes régiókban azt szeretném, hogy a fenti helyett a következőt kapjam, akkor régiófüggő template-fájlt kell a menükhöz rendelnem:
Szóval ilyen esetekben szeretném, ha a régiókban magam szabhatnám meg az egyes menük és blokkok kinézetét. Az adott régióban minden blokk, menü egységesen egyedi lenne ezért lenne logikus rájuk régiófüggő twig fájlt alkalmazni.
A legtöbb problémát sikerült megoldanom, de ebben az esetben nem találtam kompromisszummentes megoldást sajnos.
Remélem tudsz nekem ebben segíteni, aminek nagyon örülnék. Nemrég kezdtem el ismerkedni a drupal8-al mélyebben. Sok jó dolog van a rendszerben, de akadnak érdekes esetek, mint a fent említett is.
Szeretném alaposan kiismerni a rendszer lehetőségeit, aminek, még az elején tartok ezért kérnék segítséget a nálamnál rutinosabb drupal-osoktól.
Megszoktam, hogy egyedi fejlesztések esetén azt csinálok, amit akarok, de itt alkalmazkodni kell a drupal logikájához és szeretném megismerni, hogyan formálhatom a kedvem szerint a böngészőben megjelenő lapokat.
A fenti probléma kicsit kifogott rajtam, nem egészen értem, mért nem ajánlja fel alapból a drupal8 a régió alapú templétek készítését, de sebaj, ha ezt el tudnám érni, annak örülnék. A menü blokkokban a faszerkezet igen fontos és ezt szeretném -ahogy kérdezted -testre szabni, de ahogy írtam csak némi megkerülő megoldással sikerült. Biztos én vagyok, még ügyetlen, de kitartóan próbálkozom, hogy alaposan kiismerjem a drupal 8 lehetőségeit.
értem, így már minden világos
hétvégén lesz időm kipróbálni, hogy hogyan lenne ez a lehető legelegánsabb. kitartás, sokszor van, hogy ami elsőre nagyon logikátlannak tűnik (pl miért nincs alapból template suggestion régiónként) később majd kiviláglik és teljesen logikus lesz.
-
clear: both;
Köszönöm, minden ötletnek örülök!
Köszönöm a segítséget, pláne, ha sikerül elegáns megoldást találnod.
Ha nem az se baj. Minden ötletnek örülök. Volt, már úgy, hogy egy másik megoldás egy teljesen más problémára adott ötletet a sajátom megoldására.
Közben én is tovább fejlesztettem az eddigit. Sikerült kitörölnöm a kérdéses kényszerként felvett attribútumot egy unset-tel, így a generált html kódba, már nem került be :).
Persze szerintem nem biztos, hogy ez a legelegánsabb megoldás.
Egyébként valóban nincs minden esetben és minden régióban szükség a suggestion-ra és gondolom nem akarták ezzel lassítani a rendszert, de az is lehet, hogy rosszul gondolom. A core belső működését, még ennyire nem boncolgattam.
Szimpatikusnak tűnik a drupal 8, habár mintha kicsit pazarlóbban bánna a hellyel, mint a 7, de nem akarok elhamarkodottan nyilatkozni, míg nem jutok a végére a portál építésnek. Igaz a hetessel nem foglalkoztam annyit anno, mint, most a 8-assal szeretnék.
Még egyszer nagyon köszönöm a segítséget. Kíváncsi vagyok, miként a legdrupalosabb a probléma megoldása :).
(pici off: jut eszembe, ha magyar fordítást csinálok egy modulnak azt is a sites mappába érdemes tenni? Még nem csináltam ilyet, de gondolkodom rajta, hogy csinálok párhoz magyar fordítást.)