Itse aloitan sillain, että teen yhteen tiedostoon normaalisti ulkoasun. Kun ulkoasu on valmis, pilkon sen kahteen osaan, yla.php ja ala.php. Tämän lisäksi teen vielä mysql.php:n (mysql kirjautumiset, taulut jne.) ja mahdollisen info.php (asetukset sivustolle). Includaan info.php:n ja mysql.php:n tuohon yla.php:hen. Sitte vain jokaisella alasivulla includaan yla.php:n ja ala.php:n, ja siihen väliin sitten alasivuun liittyvän koodin.
Minulla on kaikilla sivuilla sama ulkoasu ja valmiina pohja.htm, johon aloitan uuden sivun koostamisen. JVM
Yleensä olen vaan niin laiska, että teen ?sivu=*omasivu* tyylillä (lähes) kaikki sivut.
Jormi ja short voisi vähän tarkentaa. Includaatko sen oman sivun sinne tyylisivun keskelle tuolla getistä otetun nimen perusteella? Jormi: voisitko vähän tarkentaa ,niinkuin tuossa minun tekstissäni.
Minulla asia riippuu siitä, mitä olen tekemässä. Toisaalta on myös mukava kokeilla asioiden tekoa eri tavoilla... pistetään koostetta.
ACMS - oma pieni CMS-systeemi, joka ei ole missään jaossa, mutta jolla pyörittelen useampaakin sivustoa. Loistava yksinkertaisuudessaan, ei tarvitse pohtia muuta kuin ulkoasun värkkääminen jos jollekulle helposti päivitettävät sivut tekee.
Blogit pyörii yleensä WordPressillä, olkoonkin että sen lokalisointi / i18n on ihan sitä ruskeaa itseään. En omaan blogiini ole jaksanut vielä edes tehdä ulkoasuakaan, vaan se on englanninkielellä oletusasullaan.
Sivustoa työskentelen yleensä vähän ristiin ulkoasun ja sisällön suhteen, mutta ainahan se jompikumpi täytyy tehdä ensin. Joskus aloitan HTML:stä ja CSS:stä ja sisällöstä, joskus suunnittelen ja toteutan ulkoasun ensin PSP7:llä ja sitten alan värkätä sille leiskaa. Leiskan suunnittelen ensin erilliseksi HTML-tiedostoksi, josta sitten tarpeiden mukaan leikkelen osaset siihen järjestelmään mihin ne ovat menossa käyttöön.
Jos sen yleistää... index.html -> templaattitiedosto(t) -> sisältö - nykyään on sitten oikeastaan aina jokin enemmän tai vähemmän valmis softa, eli en tee erillisiä HTML-sisältösivuja, vaan tietokannan kautta kulkee.
Merri kirjoitti:
Minulla asia riippuu siitä, mitä olen tekemässä.
Jooh, mulla(kaan) ei oo mitään rutiinia, tapaukset on yksilöllisiä.
punppis kirjoitti:
Jormi ja short voisi vähän tarkentaa. Includaatko sen oman sivun sinne tyylisivun keskelle tuolla getistä otetun nimen perusteella? Jormi: voisitko vähän tarkentaa ,niinkuin tuossa minun tekstissäni.
En includaa ^^
Minulla pohja.htm kulkee aina mukana, vaikka siihen ei ole linkkiä etusivulta. tyylit.css on myös aina mukana ja määrää esimerkiksi pohjan värit. Linkit sivulla näyttää nyt olevan mitä sattuu. Katso lisää kotisivultani ja kysy lisää, jos asia ei selviä. JVM
http://pp.kpnet.fi/jvm/jvm/pohja.htm
Lisään tähän vielä, että teen sivuja Frontpage 2003:lla ja siellä on komento: 'Uusi sivu aiemmin luodusta sivusta'. Sovellan sitä pohja.htm sivuun.
JVM
includea käytän:
ja tuo $title-muuttuja echotetaan title-tagiin.
Täydennän vielä omaa vastaustani sillä, että sivun koodin seasta saattaa löytyä kommentteja, joissa on selostettu sivun rakennetta, kuvien tekotapaa ym. Olen tämmöisiä pannut itseäni varten muistiin. JVM
Tässä tyypillinen index.php
<?php DEFINE('INDEX_LOADED', true); ini_set('error_reporting', E_ALL); set_error_handler("errorlog"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); include('config.php'); include($idir.'functions.php'); include($idir.'db.php'); include($idir.'user.php'); $db = new database($db_config); unset($db_config); $user = new user(); $user->check_login(); if(get_magic_quotes_gpc()) { $_POST = array_map('stripslashes', $_POST); $_GET = array_map('stripslashes', $_GET); $_COOKIE = array_map('stripslashes', $_COOKIE); $_REQUEST = array_map('stripslashes', $_REQUEST); } $pages = array(); // Make the array of availible pages foreach(glob($pdir.'/*.php')as $page) $pages[] = substr(basename($page), 0, strrpos(basename($page), ".")); // Check if page is given and the page exists, otherwise set the default values $p = isset($_GET['p']) ? in_array(basename($_GET['p']), $pages) ? basename($_GET['p']) : 'sivuhukassa' : 'etusivu'; // include the requested page and let it handle all functionality include($pdir.$p.'.php'); $db->close(); ?>
Olisi kyllä aika siirtyä PHP5-aikakauteen, mutta jotenkin tämä webbipuolen koodaaminen on jäämässä varsinaisen ammatin jalkoihin :(
Töissä tuli tehtyä pienehkö cms, jossa "sisältö" rakennetaan on ensiksi ja tulostetaan puskuroidusti sisällön mukaan valittuun templateen.
Nohin "top.php" ja "bottom.php" -virityksiin haluaisin sanoa sen, että ylläpidettävyys on mielestäni paljon selkeämpää, kun sulkee kaikki -tagit aina samassa tiedostossa, missä aukaiseekin ne. Kun container-divejä yms. alkaa tulemaan rutkasti, voi tägien kanssa mennä laskut sekaisin ja lopputulos on räjähtänyt leiska. Mielestäni on paljon helpompi laskea yhden tiedoston sisällä olevat tägit, kuin miettiä missä tiedostossa on nyt se yksi sulkematon tägi.
Tietenkin Firebug ja validaattori ovat kullan arvoisia apuvälineitä myös eri työvaiheissa.
Onko teillä jotain vinkkejä tuollaisen oman CMS:n tekoon? Sen verran tulee näitä sivuja tehtyä, ja aika monessa on sama uutissysteemi, niin olis kiva vaan nopsaa heittää se, kun copypastenkin kanssa tarvii yleensä säätää.
yla.php:ssa on mm. viittaus css-tiedostoon, html-, head-, ja body-tagien aloitus, myös headin loppu, myös mahdolliset sivuboksit yms. Sitten ala.php:ssä on hassu alaboksi missä mainitaan vaikka "Sivut (C) moptim 1985-2001", body- ja html-tagien lopetukset.
Jeah, ittelläni on aika lailla samanlainen tyyli ku moptimilla ja aloittajalla, eli teen ensin sivun ulkoasun valmiiksi, splittaan sen header.php ja footer.php:ksi ja includaan ne sivun alkuun ja loppuun. Toiminu mulla ihan riittävästi ku en kauheen isoja projekteja tee.
Tuo Duden ${title}jutska on käynyt usein mielessä, mutta en ole sitten koskaan tuota toteuttanu. Sais titleenki otsikon.
Itelläni taas on niin, että ensiksi pähkäillään urlin mukaan mikä sisältösivu pitää ladata, tämän sivun tuloste puskuroidaan ja saadaan mahdolliset muutokset head-tägiin: title, ylimääräiset ladattavat tiedostot (esim. javascript), meta description yms. Tämän jälkeen tulostetaan sisällölle kuuluva template, jossa tulostetaan sisältö oikeaan kohtaan.
Kokeilen aina sillon tällön erilaisia ratkaisuja. Pikkusissa jutuissa monesti ihan layoutin header ja footer pistetään joka sivulle, näin lähinnä just jossain 1-3 sivun jutuissa.
Usein käytän sit kans ihan erillistä layout tiedostoa joka on jotain tällasta:
<html> <head> <title>{TITLE}</title> </head> <body> <div>{NAVIGATION}</div> <div> {CONTENT} </div> <div>{FOOTER}</div> </body> </html>
Ja sitten tungen siihen sisällön sen mukaan mitä siinä halutaan näyttää. Eli korvataan noi {NAVIGATION} navigaatiolla, {CONTENT} sisällöllä jne.. Suoraan pastea yhdestä index.php:stäni:
<?php require("functions.php"); require("secure/settings.php"); require("lib/mysql.php"); session_start(); $db = new MySQL($db['host'], $db['user'], $db['pass'], $db['name']); $pg = $_GET['pg']; $logged = is_logged_in(); $pages = array('' => 'pages/index.php', 'join' => 'pages/register.php', 'activate' => 'pages/activate.php', 'profile' => 'pages/profile.php', ); $page = null; foreach($pages as $key=>$val){ if($pg == $key){ $page = get_page($val); break; } } if($page == null){ $page = get_page($pages['']); } $login = get_page('pages/login.php'); $content = array( 'TITLE' => 'Otsikko', 'HEAD' => '<script type="text/javascript" src="script.js"></script>', 'LOGIN' => $login, 'CONTENT' => $page, 'FOOTER' => 'footer' ); if(!$db->link()){ $content['CONTENT'] = '<h1>Virhe</h1><p>Tietokantaan yhdistäminen epäonnistui.</p>'; $content['LOGIN'] = '<p>Kirjautuminen on poissa käytöstä.</p>'; } //Tulostetaan sivu print_layout($content); ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.