Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Vaihtuva kuva taustakuvaksi

Sivun loppuun

Tontttu [07.09.2006 20:26:50]

#

Moro!

Mulla on nyt tiedosto random.php, johon saan vaihtuvan kuvan/pelkästään kuvan nimem, mitä vaan... Nyt mun pitäs saaha se kuva laitettua taustakuvaks. Noh, helppohan se olis laittaa randomiin pelkkä kuvan nimi ja koodiin näin: background="<?php include("random.php") ?>".
Mutta sivu, mille koodi tulee, ei ole .php tiedosto. Kyseessä on phpbb:n tyylitiedostot, niiden .tpl tiedostomuotoa ei saa vaihdettua .php:ksi. Miten saan siis taustakuvaksi php tiedostossa lukevan kuvan nimen?

arcatan [07.09.2006 21:14:59]

#

Pitäisin mahdollisena, että phpBB:n tyylitiedostoista voi ajaa PHP:ta jollakin tavalla, mutta en jaksa nyt tutustua asiaan. Muistelen kuitenkin, että joku phpBB:n versio käytti Smartya.

Varmasti onnistuva ratkaisu on CSS. PHP:lla tulostetaan CSS-pätkä, johon linkitetään phpBB:n tyylitiedostosta.

PHP-tiedosto menisi jotenkin näin:

<?php
  $kuvat = array("majava.jpg", "sorsa.jpg", "spiraali.png");

  echo "body { background-image: url('" . $kuvat[array_rand($kuvat)] . "'); }";
?>

phpBB:n tyylitiedostoon taas tulisi jotain tälläistä:

<html>
  <head>
    ...
    <link rel="stylesheet" href="random.php" type="text/css" />
  </head>
  <body>
    ...jne.
  </body>
</html>

Head-tagien sisään tulee siis <link>-tagi, joka linkkaa tuohon CSS:ää tuottavaan PHP-tiedostoon.

Tontttu [08.09.2006 15:08:38]

#

Ei onnistunu... Kokeilin laittaa random.php:n tyylitiedostoks @importilla ja <link>:illä. Random.php:ssä mulla oli siis tablen tyylit:

random{
     background-repeat: no-repeat;
     width: 795;
     height: 259;
     background: <?php

$kuvat = array();
$kuvat[] = "kuva1.jpg;";
$kuvat[] = "kuva2.jpg;";

$n = array_rand($kuvat);
$z = explode(";", $kuvat[$n]);
echo('  '.$z[0].'    ');

?>;
}

Ja koodiin laitoin td class="random", mutta taustakuvaa ei tule. Missä vika?

Tontttu [09.09.2006 10:50:26]

#

Äskeisessä koodipätkässäni oli pari virhettä, eikä enään pääse muokkaamaan. Nyt on taustakuvan näyttö oikeessa muodossa.

Tontttu [10.09.2006 16:45:19]

#

Löytyykö apuja?

Olga [10.09.2006 16:50:16]

#

Miltä näyttää kyseisen koodirimpsun tuloste? Jos koodi on oikein eikä taustakuva siltikään vaihdu, kannattaa kokeilla laittaa tyylitiedoston nimen perään joku randomi rimpsu vaikkapa time-funktiolla tyyliin @import url(style.css?<?php print time();?>); jolloin selain ei hae tyylitiedostoa välimuistista vaan joka kerta hakee tuoreen version.

Tontttu [10.09.2006 17:44:22]

#

Tuloste kyllä näyttää iha oikeelta:
td.random{
background-image: url("tausta.jpg");
background-repeat: no-repeat;
width: 795;
height: 259; }

Sivulla, jolle tyylitiedosto liitetään ei toimi php.

Tontttu [18.09.2006 14:24:15]

#

Ei toimi vieläkään... :/

Lebe80 [18.09.2006 15:51:58]

#

Tontttu kirjoitti:

Ei toimi vieläkään... :/

Tehdäänpäs ainakin väliaikaisesti niin, että rasitetaan hieman palvelinta:

td.random{
background-image: url(tausta.php);
background-repeat: no-repeat;
width: 795;
height: 259; }

Laita esim. images-kansioon taustakuvat (tausta1.jpg, tausta2.jpg, tausta3.jpg ja tausta4.jpg)


tausta.php:

<?php
header("Content-type: image/jpeg");
$src = "images/tausta".rand(1,4).".jpg";
$im = imagecreatefromJPEG($src);
imageJPEG($im,'',70);
imageDestroy($im);
?>

saattaa sisältää virheitä, pistin ulkomuistista.

miiro [19.09.2006 16:28:26]

#

Pöh, mitä järkeä, eikö fiksumpi (/nopeampi) tausta.php olisi

<?php
print file_get_contents("images/tausta".rand(1,4).".jpg";
?>

Tontttu [19.09.2006 20:31:08]

#

Eipä vieläkään onnistunu..

td.random{
background-image: url("random.php");
background-repeat: no-repeat;
width: 795;
height: 259; }

random.php:

<?php
$kuvat = array();
$kuvat[] = "ekakuva.jpg;";
$kuvat[] = "tokakuva.jpg;";

$n = array_rand($kuvat);
$z = explode(";", $kuvat[$n]);
echo("$z[0]");
?>

Edellinen tulostaa siis kuvan nimen.

Teuvo Töhvelö [19.09.2006 23:42:36]

#

Niin, tuossa Lebe80:n koodissahan oli siis ideana vissiinkin se, että php-tiedosto ei tulosta mitään HTML:ää tai CSS:ää, vaan ihan pelkkää kuvadataa. Viittaus random.php:hen toimii siis täsmälleen samoin kuin viittaus kuva.jpg:hen, paitsi että random.php heittää joka kerralla eri kuvan.

Tuo php-tiedosto on siis ajateltava kuvatiedostona, jolloin varmaankin koodin idea hahmottuu. Juuri siksi tuossa alussa lähetetään tuo Content-type -otsake.

Sinun koodisi siis tulostaa kuvan nimen, vaikka pitäisi tulostaa itse kuva. Toivottavasti tajusit, vaikka tämä asia onkin mielestäni aluksi hieman hankala ymmärtää.

Tontttu [20.09.2006 15:46:16]

#

Noniiin, nyt toimii. :) Kiitos!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta