Mező érték szerinti megjelenítése

eki képe

Sziasztok!

Van egy egyedi tartalomtípusom, aminek van egy Multifiled-je, több al-mezővel. Van egy Link, egy Megjegyzés al-mező, és egy Választólista, ahol aktívnak, illetve inaktívnak lehet jelölni ezt a multi-mezőt. Maga a Multifield több értéket vehet fel.

Field formatter css class modul használatával szerettem volna úgy megjeleníteni a node oldalon, hogy az inaktívként jelöltek halvány szürkén látszanak.

A probléma az, hogy nem az egyes egységekre (Link, Megjegyzés, Választó mező)érvényesül a css formázás, hanem magára a Multifield-re, és mindenre, ami az alá tartozik.

Van esetleg valakinek ötlete, miként lehet ilyen megjelenítést létrehozni, vagy valahogy áthidalni a fenti problémát valami más megoldással?

Köszi előre is.
eki

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Phoere képe

Ha nem akarsz diretktben css fájlban definiálni megjelenítést (pl. a sminked custom.css-ében, ha van, vagy egy alsmink létrehozásával annak css fájlában), akkor a CSS injector modul segíthet.

https://www.drupal.org/project/css_injector

Nem tudom, pontosan milyen class azonosítók vannak a Multifieldben, de szinte biztos, hogy van egy magának csoportnak, (külön, ha aktív és külön, ha inaktív), illetve van minden egyes mezőnek (sőt azon belül a labelnek és az input/checkbox stb. elemeknek).

Tehát valami ilyesmi módon tudod szabályozni:

.multifield-inactiv .field1 {
background-color: lightgray;

}

Hogy pontosan milyen azonosítók vannak, azt az oldal forrásából kiderítheted. Íly módon a legmélyebb szintig tudsz egyedileg megjelenítést beállítani.

1
0

Csökönyi Ferenc

Nagy Gusztáv képe

Én ezt a modult nem javaslom.

0
0

Nagy Gusztáv

Phoere képe

Én sem, nem is használom, csak mint létező lehetőséget írtam le. Én biztos a css fájlban oldanám meg.

0
0

Csökönyi Ferenc

eki képe

Köszönöm a választ, és az óvatosságra intést is.

A Multifield, illetve a Field formatter css class használata után így épül fel a kód:

  1. <div class="field field-name-field-linkek field-type-multifield field-label-above aktiv">
  2.  
  3. <div class="field-label">
  4.  
  5. Linkek:
  6.  
  7. </div>
  8. <div class="field-items">
  9. <div class="field-item even">
  10. <div class="field field-name-field-link field-type-link-field field-label-inline clearfix">
  11. <div class="field-label">
  12.  
  13. Link:
  14.  
  15. </div>
  16. <div class="field-items">
  17. <div class="field-item even">
  18. <a target="_blank" href="http://www.valami.hu">
  19.  
  20. http://www.valami.hu
  21.  
  22. </a>
  23. </div>
  24. </div>
  25. ::after
  26. </div>
  27. <div class="field field-name-field-megjegyz-s field-type-text field-label-inline clearfix">
  28. <div class="field-label">
  29.  
  30. Megjegyzés:
  31.  
  32. </div>
  33. <div class="field-items">
  34. <div class="field-item even">
  35.  
  36. megjegyzek valamit
  37.  
  38. </div>
  39. </div>
  40. ::after
  41. </div>
  42. </div>
  43. </div>
  44.  
  45. </div>

Ebben a példában egy aktívként megjelenő Multifield-et jelenít meg, az egyedi azonosítót (aktiv) viszont nem a megfelelő helyre teszi, pl. a field-items classhoz, hanem a legfelsőhöz, vagyis magához a Multifieldhez.

0
0
Phoere képe

Teljesen jó helyen van az "aktiv", hiszen a Multifield-et szabályozod. Gondolom az inaktív esetében "inaktiv" szerepel, így ezt alkalmaztam a mintában..

A CSS-ben így tudsz rá hivatkozni (fontos, hogy hol van szóköz a pont előtt és hol nincs!):

Ha minden mezőt szürkévé akarsz tenni:

  1. .field-type-multifield.inaktiv .field-item {
  2. background-color: lightgray;
  3. }

Ha egy-egy önálló mezőt, akkor pl. link mezőre:

  1. .field-type-multifield.inaktiv .field-name-field-link {
  2. background-color: lightgray;
  3. }

Ha csak a link mező beviteli részére (a cimkére nem - értelme nem sok van, de gyakorlásnak jó):

  1. .field-type-multifield.inaktiv .field-name-field-link .field-item {
  2. background-color: lightgray;
  3. }
1
0

Csökönyi Ferenc

eki képe

Köszönöm, és egyben elnézésed is kérem, mert nem írtam le az előző részbe, amit a legelején, hogy ez mindaddig működik így, amíg egy ilyen Link-megjegyzés-státusz hármast viszek fel.

Ha felteszek egy inaktívat is, akkor azt összekapcsolja, és így jeleníti meg a kezdő classt:

  1. <div class="field field-name-field-linkek field-type-multifield field-label-above aktiv inaktiv">

Az lenne a jó, ha az egyes egységekre, és nem a teljes Multifield-re. érvényesülne a beállítás.

Hapl lehetne Multifield alá még egy Multifield-et tenni, akkor bár nyakatekerten, de megoldódna a probléma, csak akkor a legfelső szintet lehetne többszörös értékkel felvinni. De sajnos nem lehet.

0
0
Phoere képe

És ez most egy aktív vagy inaktiv multifield csoportban van?

Tegyél be egy teljes kódrészletet, ami tartalmaz egy aktív és egy inaktív multifield csoportot.

0
0

Csökönyi Ferenc

Phoere képe

És ez most egy aktív vagy inaktiv multifield csoportban van?

Tegyél be egy teljes kódrészletet, ami tartalmaz egy aktív és egy inaktív multifield csoportot.

1
0

Csökönyi Ferenc

Phoere képe

Tegnap este e-mailban folytattuk az egyeztetést, így végül sikerült megértenem a problémát.

Nos, a Multifield mdult én nem tudtam a Field Formatter CSS class modullal összehozni, nem találtam olyan beállítást a megjelenítésben, ami az egyes mezőcsoportokra eredményezte volna az osztályazonosító beszúrását.

Viszont a Field collection modullal gyönyörűen működött, ott a megjelenítésnél a Field collection item -re kell beállítani és így minden egyes csoport div-je megkapja az adott csoportban beállított class értéket.

Vagy nem kompatibilis a Multifield és a Field formatter modul egymással, vagy tovább kell próbálkozni, míg a megfelelő beállítást megtaláljuk.

1
0

Csökönyi Ferenc

eki képe

Igen, ez a megoldás valóban működik, köszönöm még egyszer a segítséget.

Valamiért ugyan a szerkesztő felületen nem menti el kitöltött a mezőket, viszont a kész tartalom megjelenítésénél van van lehetőség hozzáadni, szerkeszteni ezt a mezőcsoportot, így el is menti, meg is jeleníti, css-el könnyen szétválaszthatók az aktív, inaktív részek.

0
0