Body background css property változtatása eseményre

Kocsis Kata képe

Szeretném, ha egy menüpontra kattintáskor, vagy éppen egy kitüntetett oldal betöltésekor megváltozna a body background property-je.

Nem az adott oldalon található elemek css-ét szeretném megváltoztatni, hanem az őt befoglaló body valamely tulajdonságát (az egyszerűség kedvéért írtam a háttérképet).

Hogyan csináljam ezt Drupalban?

Drupal verzió: 
csakiistvan képe

egy normális sminkben a body kap egy csomó class-t, pl

<body class="html not-front logged-in one-sidebar sidebar-first page-node page-node- page-node-18210 node-type-forum" >

Ez neked nincs?
2
-1

Drupal full-stack developer at Wunderman Thompson Budapest

Kocsis Kata képe

Persze, de az én problémám az, hogy alapban a body class-ok között nem jelenik meg mondjuk a node-azonosító, pedig én azt szeretném, hogy egy bizonyos oldal betöltődésekor történjen meg a background image átállítása (vagy bármi más).

Tehát, hogyan lehet pluszban megkülönböztető class-t adni a body-hoz?

0
0
szantog képe

Sminkedbe html preprocess:

function MYTHEME_preprocess_html(&$variables) {
  if ($node = menu_get_object()) {
    $variables['classes_array'] = "node-{$node->nid}";    
  }
}
3
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

eager képe

Hát ha bizonyos oldalak háttérszínét szeretnéd elváltoztatni, akkor arra valóban elég lehet a már meglévő body classokat figyelni és írni rájuk specifikus css-t:

  1. body {
  2. background: white;
  3. }
  4.  
  5. body.page-taxonomy-term {
  6. background: green;
  7. }

Ha az egyedi körülmények nem tettenérhetők a már meglévő body classok között, akkor lehet próbálni hozzáadni újakat, vagy a template.php-ban a sminkneve_preprocess_html()-ben lehet, vagy ha kattintós megoldás kellene, akkor megismerkedni a Context modullal szerintem, ő alkalmas egyedi body classok kiosztására néhány feltétel figyeltetése alapján.

-----

Illetve, nem volt egyértelmű a kérdés, hogy ha olyat is szeretnél, hogy megnyomnak valamit, de az oldalon szeretnél maradni, és az oldalon maradva elváltoztatni a háttérszínt, akkor az meg js/jQuery irány. A sminkedben legyen egy megfelelő js file, amibe egy ilyesmit tehetsz:

  1. (function ($) {
  2. Drupal.behaviors.myThemeHelpers = {
  3. attach:function (context, settings) {
  4.  
  5. // Adding a body class if #mybutton gets clicked.
  6. $('#mybutton', context).click(function() {
  7. $('body').addClass('my-class');
  8. });
  9.  
  10. }
  11. };
  12. })(jQuery);

és utána a cssbe, hogy

  1. body.my-class {
  2. background: green;
  3. }
2
0
szantol képe

Próbáld ezt, ha még aktuális:
https://www.drupal.org/project/cpn

0
0