Webboard

Pełna wersja: Zmieniające się tło forum
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Cześć.
Na pierwszym forumowym stylu tło strony zmieniało się co wejście.
Doszedłem do tego, że ogólnie za tło odpowiada ta linia w body
background: #005a8f url(bg.php)  top center no-repeat;
idąc za ścieżką wskazaną przez url doszedłem do takiego pliku:
<?php


   $folder = 'slider';


   $extList = array();
   $extList['gif'] = 'image/gif';
   $extList['jpg'] = 'image/jpeg';
   $extList['jpeg'] = 'image/jpeg';
   $extList['png'] = 'image/png';


$img = null;


if (substr($folder,-1) != '/') {
   $folder = $folder.'/';
}


if (isset($_GET['img'])) {
   $imageInfo = pathinfo($_GET['img']);
   if (
       isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) &&
       file_exists( $folder.$imageInfo['basename'] )
) {
   $img = $folder.$imageInfo['basename'];
}
} else {
   $fileList = array();
   $handle = opendir($folder);
   while ( false !== ( $file = readdir($handle) ) ) {
       $file_info = pathinfo($file);
       if (
           isset( $extList[ strtolower( $file_info['extension'] ) ] )
) {
           $fileList[] = $file;
       }
   }
   closedir($handle);


   if (count($fileList) > 0) {
       $imageNumber = time() % count($fileList);
       $img = $folder.$fileList[$imageNumber];
   }
}
if ($img!=null) {
   $imageInfo = pathinfo($img);
   $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
   header ($contentType);
   readfile($img);
} else {
   if ( function_exists('imagecreate') ) {
       header ("Content-type: image/png");
       $im = (100, 100)
           or die ("Cannot initialize new GD image stream");
       $background_color = imagecolorallocate ($im, 255, 255, 255);
       $text_color = imagecolorallocate ($im, 0,0,0);
       imagestring ($im, 2, 5, 5, "IMAGE ERROR", $text_color);
       imagepng ($im);
       imagedestroy($im);
   }
}
?>

a w folderze images znalazłem pięć plików png (1,2(...),5) z obrazkami z tła strony.

Jednak po usunięciu trzech obrazków nie stało się nic. ctrl + f5 nie zadziałało, odczekanie z dobrej godziny również. Zamykanie i włączanie przeglądarki razem z wykorzystaniem innej to samo - zero efektów. Nawet podmiana obrazka 1.png na jakiś inny o tej samej nazwie nic nie zrobiła.

A więc mam parę pytań.
 Przede wszystkim czemu zmiana obrazków/wykasowanie ich nic nie zdziałało oraz co zrobić by je zmienić?
 Czy jeżeli zostawię np. 3 obrazki z tych pięciu to ten kod będzie działał? Czy wywali puste tło? :E W sumie właśnie to chciałem sprawdzić ale  albo moja przeglądarka odmówiła posłuszeństwa albo strona :E


I taka mała prośba, mógłby mi ktoś wyjaśnić jak ten kod w ogóle działa? Bo jakoś nie mogę dojść nawet do tego skąd bierze te obrazki 1,2,3,4,5.png


Może jest inny sposób na tło zmieniające się co wejście na stronę? (na razie wszystko co znalazłem to tło zmieniające się co x sekund)

Zaznaczę jeszcze raz że zmieniające się tło jest na starym stylu.
Dobra, mniejsza z tym... Próbowałem z paru stron kody php przerabiać ale nic z tego... A więc po prostu zapytam..
Zna ktoś jakiś prosty (albo i nie) kod który losował by jeden z np. 3 obrazków które wrzucę na serwer a potem żeby były ustawiane jako banner?
Wolałbym rozwiązanie z php (które też jest mi trochę obce) niż z JS którego w ogóle nie ogarniam :E
W każdym razie co mam zrobić z tym kodem php? Zrobić plik php i wrzucić to na serwer? Tylko wtedy by css nie za bardzo pasował. (chyba :E)

Sorry że takie głupie pytania ale akurat tych kwestii jeszcze nie ogarniam :E
Z tego co mi się wydaje jak dasz
body{
background: url(images/<?php echo $selectedBg; ?>) no-repeat;
}
To w css
a to w plikach

Kod PHP:
<?php
  $bg 
= array('bg-01.jpg''bg-02.jpg''bg-03.jpg''bg-04.jpg''bg-05.jpg''bg-06.jpg''bg-07.jpg' ); // array of filenames

 
 $i rand(0count($bg)-1); // generate random number size of the array
 
 $selectedBg "$bg[$i]"// set variable equal to which random filename was chosen
?>
To i tak powinno działać, chyba. (Nie mam akurat jak sprawdzić)

A jak nie to usuń tło z plików css i zrób jak w tutorialu.
No to o ile dobrze zrozumiałem to zrobiłem tak:

w global.css mam tak:
#logo {
background: #d5eaff url(<?php echo $selectedBg; ?>) no-repeat 0% 5%;
background-size: cover;
-webkit-background-size: cover;
-moz-background-size: cover;
padding: 10px 400px 12.725em 0px;
}

a do public html wrzuciłem plik "banner.php" i?
Jakżeby inaczej, nie działa :E

Próbowałem również tak:
#logo {
background: #d5eaff url(banner.php) no-repeat 0% 5%;
background-size: cover;
-webkit-background-size: cover;
-moz-background-size: cover;
padding: 10px 400px 12.725em 0px;
}

i również nic.
W css usuń całe #logo

W hederze przed </head> daj
<style type="text/css">
<!--
#logo{
background: url(images/<?php echo $selectedBg; ?>) no-repeat;
}
-->
</style>

a za </head> daj

Kod:
<?php
 $bg = array('bg-01.jpg', 'bg-02.jpg', 'bg-03.jpg', 'bg-04.jpg', 'bg-05.jpg', 'bg-06.jpg', 'bg-07.jpg' ); // array of filenames

 $i = rand(0, count($bg)-1); // generate random number size of the array
 $selectedBg = "$bg[$i]"; // set variable equal to which random filename was chosen
?>

U mnie z tłem działa, z logiem nie próbowałem.
Czyli w index robię coś takiego?
<html>
<head>
<title>{$mybb->settings['bbname']}</title>
{$headerinclude}
<script type="text/javascript">
<!--
   lang.no_new_posts = "{$lang->no_new_posts}";
   lang.click_mark_read = "{$lang->click_mark_read}";
// -->
</script>
<style type="text/css">
<!--
#logo{
background: url(<?php echo $selectedBg; ?>) no-repeat;
}
-->
</style>
</head>
<?php
 $bg = array('1.png', '2.png', '3.png'); // array of filenames

 $i = rand(0, count($bg)-1); // generate random number size of the array
 $selectedBg = "$bg[$i]"; // set variable equal to which random filename was chosen
?>
<body>

Jeżeli tak, to dalej nie działa
Zeby uzyc kodu PHP w szablonie musisz posiadać wtyczkę PHP in teamplates
Posiadam :)
Wywołujesz zmienną przed stworzeniem jej. Przenieś kod php wyżej.
Dzięki, wygląda na to że działa :)