Visualizzazione risultati 1 fino 17 di 17

Discussione: Creare un template per il proprio sito web

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito Creare un template per il proprio sito web

    Buongiorno,
    stamani rivedendo un po' i miei siti ho notato che in ognuno di loro ho applicato un metodo diverso per la grafica e la riorganizzazione dei contenuti e solo in uno ho una specie di sistema di template modificabili ed applicabili un po' brutto...

    In pratica solo su MessenWorld (come potete vedere) ho fatto in modo che chiunque potesse scegliere il proprio template però rivedendo il codice ho pensato che non era dei più veloci e dei migliori...

    Ora vi chiedo...c'è qualcuno che mi vorrebbe spiegare come poter utilizzare un sistema di template per il proprio sito? Ho bisogno di qualche cosa modificando 1 pagina si modifichi la grafica di tutto il sito.

    Cercando su Google l'unica soluzione trovata è il master template DWT di Expression Web, ma testando questa cosa sul mio pc ho notato che comunque è un operazione lunga ed inutile.

    Attendo vostre risposte
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Cerca Smarty
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Perfetto ci siamo quasi...smarty mi può risultare utile...però non ho capito una cosa...e se io volessi inserire intero codice PHP nelle pagine!?
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    Guest

    Predefinito

    non avrebbe senso, il template engine ti serve proprio per separare codice PHP da quello HTML in modo da permettere ad eventuali designer di fare modifiche ai file template (di soldi appunto i .tpl).

    Puoi cercare RainTPL, Smarty oppure quello di phpbb2 che a mio parere è uno dei migliori (me lo sono modificato per aggiungere la funzione INCLUDE, il sistema cache e sto integrando le condizioni).

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Ma io ho bisogno di inserire intero codice PHP in parti dove c'è anche l'HTML. In pratica secondo questo esempio, dovrei mostrare tramite questa riga di codice il testo del body
    Codice PHP:
    $smarty->assign('body_text', 'BODY: Questo e\' il messaggio impostato con assign()');
    E se io nel body dovrei inserire uno script PHP? Come faccio? Questo voglio capire...
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    Guest

    Predefinito

    Non ho capito il tuo problema...

    Tu nel PHP assegni delle variabili, che poi verranno "cachate" con il contenuto di queste ultime.

    Nel file template che hai assegnato alla pagina, scrivi per esempio {body_text}, questo verrà sostituito con:
    Codice:
    BODY: Questo e' il messaggio impostato con assign()
    Puoi ovviamente utilizzare variabili per l'assegnazione e altro. Cerca un guida.

    Comunque se non devi fare cose pesanti evita smarty, è un bel malloppo che rischia di non ottimizzare il lavoro perchè pesantuccio.

    Qui ne trovi altri: http://www.raintpl.com/?page_id=benchmark

  7. #7
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Rain è più veloce, ma non gestisce oggeti a quanto ho capito.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  8. #8
    Guest

    Predefinito

    Cioè?

  9. #9
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Ferma un attimo...allora ammettiamo che io abbia:

    index.tpl
    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//IT" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html>
    <head>
       <title>{$title_text}</title>
       <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
       {$other}
    </head>
     
    <body>
     
    <p>{$body_text}</p>
     
    </body>
    </html>
    index.php
    Codice PHP:
    <?php
    define
    ('SMARTY_DIR', 'smarty-2.6.9/' );
    require_once(
    SMARTY_DIR . 'Smarty.class.php');

    $smarty = new Smarty();
    $smarty->template_dir = './templates/';
    $smarty->compile_dir = './templates/compile/';
    $smarty->cache_dir = './templates/cache/';
    $smarty->caching = false;
    $smarty->error_reporting = E_ALL; // LASCIA E_ALL DURANTE LO SVILUPPO

    $smarty->assign('title_text', 'TITOLO: Prova');
    $smarty->assign('other',"");
    $smarty->assign('body_text', 'Body in HTML, ora viene PHP --> <?php echo "Ciao"; ?>');

    $smarty->display('index.tpl');

    ?>
    Qui ho usato un semplice esempio...ma se io dovessi usare uno script molto più lungo e complesso pieno di apici ecc...come dovrei fare!? Dovrei mettere davanti ogni apice o doppia virgoletta uno slash quando poi potrebbe causare comunque problemi?

    Non c'è un modo migliore?
    Apprezzi l'aiuto? Offrimi un caffè!

  10. #10
    Guest

    Predefinito

    Ovvio che no, se te lo mette in cache e da errore prova ad usare una funzione che aggiunge un backslash ad ogni apice/virgoletta come addslashes()

  11. #11
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Ma dopo se ho una cosa del genere:

    Codice PHP:
    <?php

    echo 'Ciao, l\'acqua è fresca';

    ?>
    Diventa
    Codice PHP:
    <?php

    echo \'Ciao, l\'acqua è fresca\';

    ?>
    E si viene a creare una confusione...

    L'Alternativa è utilizzare le funzioni...così potrei fare:
    Codice PHP:
    $smarty->assign('body_text', 'Body in HTML, ora viene PHP --> <?php include("pagina.php"); Ciao() ?>');
    Codice PHP:
    <?php

    // pagina.php

    <div><img...><h1>

    function
    Ciao(){

    // CODICE PHP

    }
    Il problema che ho io è far restare solo una parte dell'HTML fisso, quella parte che riguarda la grafica...poi tutto il resto è dinamico perchè intreccio molto PHP e HTML io.

    La soluzione che ho scritto comunque darebbe errore per via della chiusura di PHP ?>
    Ultima modifica di miki92 : 08-09-2009 alle ore 19.05.02
    Apprezzi l'aiuto? Offrimi un caffè!

  12. #12
    Guest

    Predefinito

    Non uso smarty e non ti so dire come puoi fare, mentre con RainTPL non ho mai avuto problemi e sono riuscito benissimo a modificarlo in base alle mie esigenze guardando RainTPL.compile.class.php e il file generato della cache.

  13. #13
    Guest

    Predefinito

    Forse dico una cosa inutile, ma se vuoi modificare in un colpo solo la grafica di tutto il sito converrebbe creare una pagina contenitore (la index), e passare via get l'id della pagina che vuoi visualizzare. Negli altri files metterai solo il contenuto: la grafica rimane quella della index.
    Qualcosa tipo:
    Codice PHP:
    <html>
    <head>
    <title>Titolo</title>
    </head>
    <body>
    <?php
    if(isset($_GET['id'])) {
    switch(
    $_GET['id']){
    case
    "pagina1":
    include(
    "pagina1.php");
    break;
    //....
    }
    } else {
    ?>
    Contenuto della index
    <?php
    }
    ?>
    </body>
    </html>
    Ultima modifica di gabryhacker : 08-09-2009 alle ore 19.25.29

  14. #14
    Guest

    Predefinito

    Io ti consiglio di crearti un sistema da te molto semplice, una cosa del genere:
    Codice PHP:
    include("header.php");
    switch(
    $_GET["p"]) {
    if(empty(
    $_GET)) { include("pagin/home.php"); }
    else {
    if(
    file_exists("pagin/{$_GET["p"]}.php")) { include("pagin/{$_GET["p"]}.php"); }
    else { include(
    "pagin/home.php"); }
    }
    include(
    "footer.php");
    E poi lì hai carta bianca tra codice php e html..io lo uso e stilizzo tutto con 2 semplici tag:
    Codice:
    <h1>titolo pagina</h1>
    <p>il testo</p>
    <?php echo "altro codice php"; ?>
    Ciao.

  15. #15
    Guest

    Predefinito

    A cosa servirebbero allora i template engine se mischiamo tutto?

  16. #16
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Citazione Originalmente inviato da gabryhacker Visualizza messaggio
    Forse dico una cosa inutile, ma se vuoi modificare in un colpo solo la grafica di tutto il sito converrebbe creare una pagina contenitore (la index), e passare via get l'id della pagina che vuoi visualizzare. Negli altri files metterai solo il contenuto: la grafica rimane quella della index.
    Qualcosa tipo:
    Codice PHP:
    <html>
    <head>
    <title>Titolo</title>
    </head>
    <body>
    <?php
    if(isset($_GET['id'])) {
    switch(
    $_GET['id']){
    case
    "pagina1":
    include(
    "pagina1.php");
    break;
    //....
    }
    } else {
    ?>
    Contenuto della index
    <?php
    }
    ?>
    </body>
    </html>
    Citazione Originalmente inviato da sIM Visualizza messaggio
    Io ti consiglio di crearti un sistema da te molto semplice, una cosa del genere:
    Codice PHP:
    include("header.php");
    switch(
    $_GET["p"]) {
    if(empty(
    $_GET)) { include("pagin/home.php"); }
    else {
    if(
    file_exists("pagin/{$_GET["p"]}.php")) { include("pagin/{$_GET["p"]}.php"); }
    else { include(
    "pagin/home.php"); }
    }
    include(
    "footer.php");
    E poi lì hai carta bianca tra codice php e html..io lo uso e stilizzo tutto con 2 semplici tag:
    Codice:
    <h1>titolo pagina</h1>
    <p>il testo</p>
    <?php echo "altro codice php"; ?>
    Ciao.
    In verità, come potete vedere su MessenWorld, ho già pensato e realizzato una cosa simile...però credevo (oggi) che si potesse migliorare in qualche modo...ma vedo che per ciò che mi occorre la mia soluzione sembrerebbe essere la migliore.
    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    A cosa servirebbero allora i template engine se mischiamo tutto?
    Lo so capisco quanto tu dici, sembra una stupidata ma necessito di mescolare insieme HTML e PHP e solo parte dell'HTML deve rimanere fisso...come ho detto all'inizio ciò che chiedo lo fa la master page di Expression Web che crea un modello dinamico basato su una sola pagina...il problema e che (oltre al fatto di testare le pagine su server unix) devo aggiornata la master page devo, automaticamente con Expression web, aggiornare e ricaricare tutto il resto...quindi l'attuale soluzione sul mio sito sembra la migliore...bah!
    Apprezzi l'aiuto? Offrimi un caffè!

  17. #17
    Guest

    Predefinito

    leggiti tutto questo:
    http://www.devshed.com/c/a/PHP/Build...-PHP-Part-I/1/
    Codice PHP:
    class templateParser {

    var
    $output;

    function
    templateParser($templateFile='default_template.htm'){

    (
    file_exists($templateFile))?$this-
    >
    output=file_get_contents($templateFile):die
    (
    'Error:Template file '.$templateFile.' not found');

    }

    function
    parseTemplate($tags=array()){

    if(
    count($tags)>0){

    foreach(
    $tags as $tag=>$data){

    $data=(file_exists($data))?$this-
    >
    parseFile($data):$data;

    $this->output=str_replace
    ('{'.$tag.'}',$data,$this->output);

    }

    }

    else {

    die(
    'Error: No tags were provided for replacement');

    }

    }

    function
    parseFile($file){

    ob_start();

    include(
    $file);

    $content=ob_get_contents();

    ob_end_clean();

    return
    $content;

    }

    function
    display(){

    return
    $this->output;

    }

    }
    (puoi semplificarlo molto e renderlo più adatto ai tuoi scopi, ma è una buona base)
    penso possa fare al caso tuo.... ciaoo..

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •