• User

    Template di un portale

    Allora vediamo se riesco a spiegarmi con poche parole ! Mettiamo di avere una pagina con Header centro e footer, io vorrei che l'header e il footer rimanesse sempre uguale mentre il centro cambiasse in base a ciò che l'utente clicca sul menù, ossia se l'utente clicca sulla voce download al centro dovrebbe apparire l'inclusione del file Download che si trova nella cartella Moduli/Download/index.php oppure se l'utente clicca sul menù nella voce news dovrebbe apparire al centro l'inclusione di Moduli/News/index.php ; ecco come posso includere al centro il modulo che viene richiesto, un po come phpnuke che al centro viene visualizzato il modulo richiesto ! UN Grazie a chiunque abbia capito cosa voglio e mi rispondesse


  • User Attivo

    Ciao

    puoi farlo facilmente con smarty che e' un template engine.
    http://php.html.it/articoli/leggi/909/template-engine-separare-programmazione-e-design/


  • User

    Ciao grazie della risposta ma come funzionerebbe ??


  • User Attivo

    @r3dd3vil said:

    Ciao grazie della risposta ma come funzionerebbe ??

    Ciao io farei cosi':
    creo ad esempio
    -download.php
    -home.php
    -altro.php

    Questi file sono fatti cosi': (esempio per download.php.Per gli altri cambiano soli i parametri)..
    <?php
    $parametro = "download";
    $titolopagina="dowload files"
    include $_SERVER['DOCUMENT_ROOT']."/php/template.php";
    ?>

    template.php e' fatto cosi':

    ? echo "<?xml version="1.0" encoding="iso-8859-1"?>\n" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <title><?php
    echo $titolopagina;
    ?> </title>
    <meta http-equiv="Content-Type" content="text/html;
    charset=iso-8859-1" />
    <meta content="bla_bla_bla" />
    <style type="text/css">@import url(style.css);</style>
    </head>
    <body>
    <div id="pagina">

     <? include "top.inc.php" ?>
    
     <? include "sx.inc.php" ?>
    
     <? include "dx.inc.php" ?>
    
     <div id="corpo">
    
        <p>svilippa la logica</p>
    
     </div>
    
     <? include "foo.inc.php" ?>
    

    </div>

    </body>
    </html>

    Nel div id="corpo" sviluppi la logica a seconda della pagina che carichi nel template
    if ($parametro=="download)
    {
    richiama script download
    }
    else if ($parametro=="home")
    {
    richiama script home
    }

    Volendo la logica puo' essere inglobata in un altro file php..
    IN questo modo tieni separata la logica dalla grafica..
    Per modificare la grafica modifichi il file css, footer.php, header php..etc..
    ma tutte le pagine che caricano il template saranno modificate di conseguenza..


  • User Attivo

    Ringrazio anch'io luic77 per l'ottima risposta.


  • User Attivo

    Io invece vado controcorrente e faccio un file di funzioni (esempio funzioni.php) in cui metto 2 funzioni:

    
    function testata($titolo, $altro)
    {
    echo "qui metto tutto l'html della testata";
    echo "<h1>$titolo</h1\n";
    }
     
    function piede()
    {
    echo "qui metto tutto l'html del piede";
    }
    
    

    Poi nelle pagine includo il file funzioni.php all'inizio e quando devo scrivere la testata faccio:

    testata("Titolo");

    e quando voglio chiudere la pagina faccio:

    piede();