Automatikusan írjon a body classba?

csontom képe

Sziasztok!

A Kérdésem az lenne, hogy létezik-e olyan modul, hogy a drupal automatikusan egy adott időpontban írjon az adott oldal body classába?

Pl: Reggel 8-kor: yellow
Délben: Blue
3 óra körül: Orange
Este: Black
Éjszaka: Gray
És ezt csak a főoldalon csinálja, a többin ne.
Nekem így vannak a hátterek beállítva az oldalon. Magyarul a háttér változna. Ezt meg lehet oldani, hogy magától csinálja egy adott időpontban?

weboldal: http://phghd.hu
Láthatjátok is, hogy a különböző oldalakon különböző színű a háttér.
Na most azt kéne megoldani, hogy csak a főoldalon időpontokra változzon.

Drupal verzió: 
Fórum: 
ipeto képe

Hogy modul van-e, azt nem tudom, de úgy gondolom, a smink enyhe piszkálásával megoldható a dolog. Kell hozzá egy kevés PHP-tudás is.

  1. A body class-ok a smink template.php-jában, a sminkneve_preprocess_html(&$vars) függvénnyel módosíthatók
  2. Az időpont pedig a PHP date() függvényével kezelhető. Vagy eseleg így: http://stackoverflow.com/questions/18233794/php-time-intervals
0
0
csontom képe

Köszönöm a segítséget, de nem teljesen értek még ennyire a PHP-hez. Egy kicsit bővebben, és részletesebben le tudnád írni nekem?

Sminkem: zen

0
0
szt képe

ipeto nyomdokain elindulva ez lehet egy megoldás. Az alábbi két függvényt be kell másolnod a sminked template.php fájljába. A "SMINKEDNEVE" részt cseréld le a sminked nevére :)
(Lehet, hogy már van ilyen nevű függvényed: ebben az esetben a függvény végére másold be értelemszerűen a második function-t)

  1. /**
  2.  * Range tester function
  3.  */
  4. function test_range($int, $min, $max) {
  5. return ($min <= $int && $int <= $max);
  6. }
  7.  
  8.  
  9. /**
  10.  * Implements template_preprocess_html().
  11.  */
  12. function SMINKEDNEVE_preprocess_html(&$variables) {
  13. if (drupal_is_front_page()) {
  14. $hour = date('G');
  15. $hourclass = (test_range($hour, 0, 7) ? 'gray' : '');
  16. $hourclass = (test_range($hour, 8, 11) ? 'yellow' : $hourclass);
  17. $hourclass = (test_range($hour, 12, 15) ? 'blue' : $hourclass);
  18. $hourclass = (test_range($hour, 16, 19) ? 'orange' : $hourclass);
  19. $hourclass = (test_range($hour, 20, 22) ? 'black' : $hourclass);
  20. $hourclass = (test_range($hour, 23, 23) ? 'gray' : $hourclass);
  21. $variables['classes_array'][] = $hourclass;
  22. }
  23. }

Mentés után ne felejtsd el üríteni a cache-t!

2
0
csontom képe

Megcsináltam, de sajnos nem működik. Semmit nem ír a body classba a főoldalon.
Csatoltam egy képet, hogy hogy csináltam.
http://kepfeltoltes.hu/150504/666034774N_vtelen_www.kepfeltoltes.hu_.png

0
0
csontom képe

Már megoldottam :)

0
0
szantog képe

'Mentés után ne felejtsd el üríteni a cache-t!' - Meg minden nap 8-kor, délben, 16-kor, stb, ha be van kapcsolva a page cache.

Ezt inkább js-sel kéne csinálni hasonlóképpen váltogatva a body classt.

2
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.

csontom képe

Egy napja használom ezt a megoldást, azóta nem ürítettem cache-t, de működik, váltogatja a háttérszíneket. :)

A Főoldalon: http://phghd.hu

0
0
szt képe

Amit én írtam, az a cache ürítés azért kellett, mert új függvények kerültek a sminkfájlba.
Amit szantog ír, az egy olyan eset, amikor cache-eljük az egész oldalt, hogy ne gyártsa le újra a drupal, hanem cache-ből menjen, azaz sokkal gyorsabb legyen. Te ezt a "gyorsítást" nem használod, ezért működik a cucc.

0
0
szt képe

Akkor ez lehet egy cache-es jQuery-s megoldás, ha el nem rontom:

template.php-ba:

  1. function SMINKEDNEVE_preprocess_html(&$variables) {
  2. if (drupal_is_front_page()) {
  3. drupal_add_js(drupal_get_path('theme', 'SMINKEDNEVE') .'/script.js', array('cache' => FALSE));
  4. }
  5. }

És kell maga a script fájl, amit ebben az esetben közvetlenül a smink könyvtárába kell tenni, és ez legyen benne (ez fapados lett, mert most nem szórakoztam a range segédfüggvénnyel):

script.js

  1. (function ($) {
  2. Drupal.behaviors.classChanger = {
  3. attach: function (context, settings) {
  4. var c = "";
  5. switch (new Date().getHours()) {
  6. case 0:
  7. c = "grey"; break;
  8. case 1:
  9. c = "grey"; break;
  10. case 2:
  11. c = "grey"; break;
  12. case 3:
  13. c = "grey"; break;
  14. case 4:
  15. c = "grey"; break;
  16. case 5:
  17. c = "grey"; break;
  18. case 6:
  19. c = "grey"; break;
  20. case 7:
  21. c = "grey"; break;
  22. case 8:
  23. c = "yellow"; break;
  24. case 9:
  25. c = "yellow"; break;
  26. case 10:
  27. c = "yellow"; break;
  28. case 11:
  29. c = "yellow"; break;
  30. case 12:
  31. c = "blue"; break;
  32. case 13:
  33. c = "blue"; break;
  34. case 14:
  35. c = "blue"; break;
  36. case 15:
  37. c = "blue"; break;
  38. case 16:
  39. c = "orange"; break;
  40. case 17:
  41. c = "orange"; break;
  42. case 18:
  43. c = "orange"; break;
  44. case 19:
  45. c = "orange"; break;
  46. case 20:
  47. c = "black"; break;
  48. case 21:
  49. c = "black"; break;
  50. case 22:
  51. c = "black"; break;
  52. case 23:
  53. c = "gray"; break;
  54. }
  55. $("body").addClass(c);
  56. }
  57. }
  58. })(jQuery);
0
0
csontom képe

Nekem be van kapcsolva a gyorsítótárazás, mégis működik. :)
Azért köszi! :)

0
0
szantog képe

Nézd meg az oldalt anonymusként. :)
Jelen pillanatban pl orange, holott az a 16h-s szín.

0
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.