2013-01-11 17 views
6

Umieściłem kalendarz Google wyświetlający wiele kalendarzy w mojej witrynie, ale chcę, aby kalendarze były wyświetlane w kolorach innych niż domyślne.Umieszczanie kalendarza Google w niestandardowych kolorach kalendarza

Adres URL żądania zawiera parametr koloru dla każdego kalendarza, ale nie akceptuje kolorów innych niż domyślne. (Odwzorowane kolory również nie wydają się być takie same)

Patrząc na źródło; kolory każdego zdarzenia są definiowane za pomocą wbudowanego CSS i nie mają atrybutów klasy ani identyfikatora, które mogłyby zostać użyte do ich stylu za pomocą pliku CSS.

Próbowałem użyć PHP, aby uzyskać kod HTML kalendarza, a następnie użyć ciągu zastępczego do zmiany kolorów (w oparciu o this answer), który działa, ale nie zmienia kolorów Plik PHP, którego używam :

<?php 

$content = file_get_contents('https://www.google.com/calendar/embed?showTitle=0&showPrint=0&showTabs=0&showTz=0&height=750&wkst=2&bgcolor=%23FFFFFF&src=1.keswickscouts.org_5d750s21fh55t45nsh4i49co5g%40group.calendar.google.com&color=%23691426&src=1.keswickscouts.org_k8ai784s6meu1eh71fk21etseg%40group.calendar.google.com&color=%23182C57&src=1.keswickscouts.org_4omjhqh48ud1lkigino18dmid0%40group.calendar.google.com&color=%232F6309&src=06illa48gj7en6896jv32cm93c%40group.calendar.google.com&color=%23125A12&src=1.keswickscouts.org_m6mb8idejtptmfkve9gm6latd8%40group.calendar.google.com&color=%236B3304&src=1.keswickscouts.org_5uaafulf65hrc4b64j3bfa6660%40group.calendar.google.com&color=%235229A3&src=1.keswickscouts.org_qudhcb0ii68u6b5mgs2ase200o%40group.calendar.google.com&color=%23B1365F&ctz=Europe%2FLondon'); 

$content = str_replace('</title>','</title><base href="https://www.google.com/calendar/" />',$content); 

$content = str_replace('B5515D','CC9966', $content); //ASU 
$content = str_replace('536CA6','099FF', $content); //Beavers 
$content = str_replace('7EC225','33CC00', $content); //Cubs 
$content = str_replace('125A12','006990', $content); //Eden 
$content = str_replace('194D14','999966', $content); //Explorers 
$content = str_replace('8C66D9','4D2177', $content); //Group 
$content = str_replace('E67399','006666', $content); //Scouts 

echo $content; 

?> 

Wszelkie sugestie? Prościej byłoby lepiej

+0

Kod PHP służy do generowania kalendarza tutaj http://keswickscouts.org/test-page –

Odpowiedz

0

mogę zaproponować Ci użyciu dwóch tablic jest tylko jeden str_replace:

$search = array('B5515D', '536CA6', '7EC225'); 
$replace = array('CC9966', '099FF', '33CC00'); 

$content = str_replace($search, $replace, $content); 

Znacznie bardziej skomplikowana radą byłoby użyć google calendar API.

+0

Jest zauważalnie szybszy (dzięki), ale niestety nadal nie działa. –

2

Jest to trudne, ponieważ kalendarz Google, który łączysz, ładuje jego elementy dynamicznie za pomocą javascript, więc nic nie może być zmienione przez potencjalne rozwiązanie, które publikujesz.

Wersja kalendarza tylko w wersji HTML nie ma różnych kolorów, których szukasz, więc to też nie zadziała.

Kolejne komplikacje powstają, ponieważ javascript odbudowuje ciało kalendarza, gdy użytkownik zmienia rozmiar lub przemieszcza się między miesiącami. Więc nawet jeśli uzyskasz kolorystykę odpowiednią do załadowania strony, może nie pozostać tak, jak chcesz.

Jednym z rozwiązań jest kontynuacja importowania kalendarza na stronę lokalną, aby uniknąć ograniczeń między witrynami, a następnie poprawić sytuację po załadowaniu strony i walczyć, aby utrzymać ją w ten sposób przez ciągłe sprawdzanie zmian. Nie jestem pewien, czy istnieje bardziej wydajnym sposobem:

LOCAL stronie kalendarza: cal.php

<?php 
    $content=file_get_contents("https://www.google.com/calendar/embed?showTitle=0&showPrint=0&showTabs=0&showTz=0&height=750&wkst=2&bgcolor=%23FFFFFF&src=1.keswickscouts.org_5d750s21fh55t45nsh4i49co5g%40group.calendar.google.com&color=%23691426&src=1.keswickscouts.org_k8ai784s6meu1eh71fk21etseg%40group.calendar.google.com&color=%23182C57&src=1.keswickscouts.org_4omjhqh48ud1lkigino18dmid0%40group.calendar.google.com&color=%232F6309&src=06illa48gj7en6896jv32cm93c%40group.calendar.google.com&color=%23125A12&src=1.keswickscouts.org_m6mb8idejtptmfkve9gm6latd8%40group.calendar.google.com&color=%236B3304&src=1.keswickscouts.org_5uaafulf65hrc4b64j3bfa6660%40group.calendar.google.com&color=%235229A3&src=1.keswickscouts.org_qudhcb0ii68u6b5mgs2ase200o%40group.calendar.google.com&color=%23B1365F&ctz=Europe%2FLondon"); 
    $content = str_replace('</title>','</title><base href="https://www.google.com/calendar/" />',$content); 
    print $content; 
?> 

Kalendarz Page

<html> 
<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script language='javascript'> 
    var oldhtml; 

    function swapcolors(oldcolor, newcolor){ 
     console.log("Searching for " + oldcolor); 
     $('iframe#gcal').contents().find('.rb-n').filter(
     function() { 
      console.log(this); 
      console.log($(this).css('background-color')); 
      console.log($(this).css('background-color')==oldcolor); 
      return $(this).css('background-color')==oldcolor; 
     } 
    ).css({'background-color': newcolor}); 
    } 

    function recolor(){ 
     swapcolors('rgb(83, 108, 166)', '#099FF'); //Beavers 
     swapcolors('rgb(126, 194, 37)', '#000000'); //Cubs 33CC00 
     swapcolors('rgb(181, 81, 93)', '#CC9966'); //ASU 
     swapcolors('rgb(18, 90, 18)', '#006990'); //Eden 
     swapcolors('rgb(25, 77, 20)', '#999966'); //Explorers 
     swapcolors('rgb(140, 102, 217)', '#4D2177'); //Group 
     swapcolors('rgb(230, 115, 153)', '#006666'); //Scouts 
    } 

    function keepcolored(){ 
     if($('iframe#gcal').contents()!=oldhtml){ 
     recolor(); 
     oldhtml=$('iframe#gcal').contents(); 
     } 
    } 

    $(document).ready(
     function() { 
     $('iframe#gcal').load(recolor); 
     oldhtml=$('iframe#gcal').contents(); 
     window.setInterval(keepcolored, 700); 
     } 
    ); 
    </script> 
</head> 
<body> 

    <iframe id="gcal" style="width:100%;height:100%" src="cal.php"> 
    </iframe> 
</body> 
</html> 

find('.rb-n') Zauważ, że może zaistnieć potrzeba do dostosowania i kolory tła są konwertowane na wartości RGB (ala rgb(230, 115, 153)), zanim zostaną zwrócone.

Powiązane problemy