Terve vaan.
Minä Vanhus rupesin tekemään nettisivuja ja huomasin että framien ja tablejen aika on näköjään auttamatta ohi. Opettelin CSS:ää sen verran jotta sain tehtyä halutunlaisen ulkoasun, eli perus valikot vasemmassa laidassa ja logo ylhäällä jne. Nyt ongelma on se että miten vasemmassa laidassa olevat linkit saadaan aukaistuksi keskimmäiseen ruutuun? Nyt linkit aukeavat uuteen ikkunaan. Ei vissiin ankkureita enää käytetä... Eli jos pientä periaatetta miten php:llä tehdään sivuja. Kiitos jos joku jaksaa auttaa.
ps. olen lukenut putkan php-oppaan.
Haet PHP:llä jokaiseen oikeaan sivuun ylä- ja alaosan erillisistä tiedoistoista. Pilko layoutisi niin että kaikki alusta siihen kohtaan missä sisältö alkaa tulee tiedostoon top.php, ja kaikki sisällön loppumisesta tulee bottom.php:hen. Sitten tee index.php jossa on sisältö, näin:
Tapoja on pari, mutta esitän nyt mielestäni paremman. Jaa ulkoasu kahteen tiedostoon, yla.php ja ala.php. Katkaise ulkoasu siitä kohti, mistä sisältölaatikko alkaa. "yla.php" voisi siis loppua vaikka näin:
<div="sisalto">
ja ala.php alkaa taas näin:
</div>
Nyt sitten tehdään sisältösivu, "etusivu.php", joka näyttää suurinpiirtein tältä:
Alemman tiedoston sisällyttämisestä pääsee eroon komennolla register_shutdown_function().
EDIT: Hemmetin JTS >_<
Toinen tapa on välittää sivun nimi get-parametrinä, esim index.php?p=pelit:
<div class="sisalto"> <?php include($_GET['p'].'.php');?> </div>
Juicen esimerkki ei hyvä:
index.php?p=http://oma.kone.jossa.ei.php.tulkkia/badscript
ja tuonne php-koodia joka vaikka muuttaa kaikki img-tagit osoittamaan khoa tse-kuviin... Että aina tarkistukset tuollaisissa.
Muutenkin tuommoinen parametripelleily aiheuttaa vain päänvaivaa. URLitkin näyttävät asiallisemmilta, kun jokainen sivu on oma tiedostonsa.
Ei tuollainen hyvin toteutettuna IMO ole ollenkaan huono ratkaisu. URLitkin saa ihan siistiksi MOD REWRITEn avulla.
Tietenkin tuossa ratkaisussa pitää huolehtia tietoturvasta. Pistetään nyt teidän mieliksi:
Kiitti jo näistä. Eli laitoin siten että linkit sijaitsevat top.php ja sitten tein myös tollasen bottom.php ja includella sitten. Ongelma on vieläki se etten tajua miten linkit saa aukeamaan sen index.php tilalle. Nyt saa vain aukaistuksi uuden ikkunan. Jotai pientä on mutta en vain tajua että miten. Linkit ovat siis ihan perus <a href... pitää esim. target komentoa käyttää vai..?
Linkit tähän tyyliin:
<a href="?p=pelit">
Tällöin esim. Juicen esimerkkiä käyttäen diviin "sisältö" avautuu samassa kansiossa kuin index.php, oleva pelit.php.
Parse error: parse error, unexpected T_INCLUDE in /var/www/test/index.php on line 4
Ja koodi on tuo Juicen esimerkki :o Meikäläisellä ei kyllä onnistu enää mikään :D
Joo, näköjään iffin sulku jäi pois. Koska muokkausaika on ummessa, tässä toimiva (?) koodi:
Hoppsan! Kiitos Juice paljon! Minä tota kyyläsin oikein urakalla mutta en hoksannut :$
Edit: Vielä kun saisi tuon vanhan tiedon aina katoamaan.. Ilmeisesti tuo register_shutdown_function() on oikea, mutta fi.php.net ei lataudu ja lontoo ei taivu.
Ei ole helppoa elämä ei. :)
almost666 kirjoitti:
Nyt ongelma on se että miten vasemmassa laidassa olevat linkit saadaan aukaistuksi keskimmäiseen ruutuun? Nyt linkit aukeavat uuteen ikkunaan. Ei vissiin ankkureita enää käytetä...
HTML-koodin pitäisi siis näyttää valmiina jokseenkin tältä:
<div id="dokumentti"> <h1>Minun sivut</h1> <div id="valikko"> <ul> <li><a href="/">Etusivu</a></li> <li><a href="/linkit.php">Linkit</a></li> <li><a href="/muusivu.php">Muu sivu</a></li> </ul> </div> <div id="sisalto"> <!-- header päättyy --> <h1>Varsinainen sisältö</h1> <p>Jesh.</p> <!-- footer alkaa --> </div> </div>
Eli ei targettia, ellet sitten käytä IFRAMEa (joka tosin ei ole paljoa sen parempi kuin ne perinteisetkään kehykset).
Mitä ankkureihin tulee, niin kyllä niille on käyttöä edelleen siinä missä ennenkin.
Sitten... tuossa perinteistyylisessä header ja footer -jutussa ongelmana on se, että sillä ei pääse helposti vaihtamaan titleä ja muita sivun tietoja (harvempi näyttää myöskään välittävän asiasta). Ulkoasun säätäminen kahdesta erillisestä tiedostosta tuntuu myös hieman epämielekkäältä. Itse olenkin päätynyt yhden tiedoston templaattiratkaisuun, jossa tässä yksinkertaistettu versio:
<?php $encoding = 'UTF-8'; $language = 'fi'; $meta = array(); $title = ''; function generate_header() { global $encoding, $language, $meta, $title; if ($title == '') { $title = 'Sivuston nimi'; } echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$language.'"> <head> <meta http-equiv="content-type" content="application/xml+xhtml; charset='.$encoding.'" /> <title>'.$title.'</title>'; for ($i = 0, $maxi = count($meta); $i < $maxi; $i++) { echo ' <meta name="' . $meta[$i][0] . '" content="' . $meta[$i][1] . '" />'; } echo ' </head> <body>'; } function generate_footer() { echo ' </body> </html>'; } ?>
Käyttö olisi sitten tyyliin:
<?php require_once('template.php'); $title = 'Etusivu'; $meta[] = array('author', 'Oma Nimi'); $meta[] = array('description', 'Tämä on kotisivujeni etusivu.'); $meta[] = array('robots', 'noindex,follow'); generate_header(); ?> <h1>Tässä on sivun varsinainen sisältö</h1> <p>Laalaalaa!</p> <?php generate_footer(); ?>
Tällä tavalla merkittävin etu on siis se, että suurin osa sivun sisällöstä on nimenomaan sitä pelkkää sisältöä. Lisäksi olennaisten metatietojen lisääminen on aika helppoa.
Merri on kyllä oikeassa, lisäksi tuota on yksinkertainen jatkaa, jos sisältöä aletaan jatkossa hakemaan esim. kannasta, jolloin "Tässä on sivn varsinainen sisältö" vaihdetaan omaksi funktioksi, joka rakentaa sisällön urlin mukana tulleiden parametrien mukaan (index.php?sivu=yhteystiedot), yms.
Ulkoasua on myös helppo muokata, kun muutettavia tiedostoja on vähän. Muutokset vaikuttavat heti muihinkin sivuille.
Aihe on jo aika vanha, joten et voi enää vastata siihen.