Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1

    [PILLOLA] template dinamici(?)

    Avevo intenzione di ristrutturare il mio vecchio e disordinato sito fatto 3-4 mesi.

    Ma quando ci ho messo le mani, nn capivo più niente perchè era tutto disordinato: codice di qua, stringhe di là, html al centro, alla fine, variabili alla cavolo... beh... La situazione era veramente disastrosa.

    Fino a quando non decido di imparare finalmente a programmare con i template.

    Mi informo un pò: leggo l'articolo su freephp.html.it e cerco un pò nel forum i vecchi 3d.

    Dopo problemi iniziali, finalmente mi illumino: è proprio facile


    Il fatto è che l'articolo del sommo GM andava perfettamente per dei template statici.

    Ma se io avessi per esempio voluto creare una pagina con un sistema di news?
    dove c'è:[list=1][*]una prima parte statica[*]una seconda parte dinamica (l'elenco delle news)[*]una terza parte statica[/list=1]


    Beh... Mi sono chiuso dentro il mio laboratorio delle ricerche e ne sono uscito vincitore!
    Finalmente avevo la soluzione in mano!

    Vi provo a spiegare il tutto! (Ma chiedo venia, perchè è anche la mia prima pillola )



    Allora, sappiamo che con il metodo dei template possiamo dividere completamente il codice HTML dal codice PHP su due file diversi.

    Qundi creiamo due nuovi file:

    index.php e index.tpl*

    (*) dove per .tpl ci sta qualsiasi estensione! tanto il formato è sempre testo


    Fin qui ci siete?
    Bene, iniziamo a buttare giù due righe per il file index.tpl:
    Codice PHP:
    <html>
    <
    head>
    <
    title>{title}</title>
    </
    head>
    <
    body>
    Questa è una prova di news!



    Fine della prima parte!




    <
    hr-tpl>

    News numero {news_id} - {news_title}




    <
    hr-tpl>



    Questa è la fine della pagina!

    by {autore}!
    </
    body>
    </
    html
    Beh.. è tutto codice html eccezion fatta per due o tre simboli che con l'html non centrano proprio 'na mazza

    Vi spiego la loro utilità:
    {stringa} <-- queste sono stringhe che daranno posto alle variabili una volta elaborato con il php
    <hr-tpl> <-- questa, come da nome, è un interruzione di template

    Credo che stiate capendo ciò che voglio fare, vero?

    Ma continuiamo!


    Buttiamo giù il codice php da mettere nel file index.php (prima parte):
    Codice PHP:
    // 1- iniziamo con il prendere il testo dal file template con il fido implode()
    $input=implode("",file("index.tpl"));

    // 2- dividiamo in 3 parti con il sommo explode()
    $temp=explode("<hr-tpl>",$input);

    // 3- attribuiamo questo array a diverse variabili
    $tpl_alto=$temp["0"];
    $tpl_news_temp=$temp["1"];
    $tpl_basso=$temp["2"]; 
    Spiegiamo questa prima parte:
    nel primo passo abbiamo imploso in una variabile tutto il contenuto del file index.tpl;
    nel secondo passo abbiamo invece diviso in tre parti (visto che le interruzioni di template <hr-tpl> erano due) il file;
    nel terzo passo abbiamo attribuito queste tre parti a 3 diverse (la prima statica, la seconda dinamica e la terza statica) variabili.

    Buttiamo giù il codice php da mettere nel file index.php (seconda parte):
    Codice PHP:
    // Settiamo la prima parte della pagina
    $title="Creazione di template dinamici! - by eX-Arus";
    $tpl_alto=str_replace("{title}"$title$tpl_alto);

    // Settiamo la seconda parte della pagina, la parte dinamica
    $tpl_news="";
    /*
    eventuale query al db mysql
    $action=mysql_query("SELECT * FROM db")
    */
    while ($array=mysql_fetch_array($action))
    {
            
    //attribuiamo alla varibile news la seconda parte di testo
            
    $news=$tpl_news_temp;
            
    //trasformiamo gli array
            
    $news_id=$array["news_id"]
            
    $news_titolo=$array["news_titolo"]
            
    //cambiamo le stringhe del template con le varibili
            
    $news=str_replace("{news_id}"$news_id$news);
            
    $news=str_replace("{news_title}"$news_title$news);
            
    //aggiungiamo questa parte di testo alla variabile finale
            
    $tpl_news.=$news;
    }

    // Settiamo la terza parte della pagina
    $autore="eX-Arus";
    $tpl_basso=str_replace("{autore}"$autore$tpl_basso); 
    Spieghiamo la seconda parte:
    ho semplicemente cambiato le stringhe del template ({stringa}) con delle varbili grazie alla funzione str_replace()

    Buttiamo giù il codice php da mettere nel file index.php (ultima parte):
    Codice PHP:
    // Output dei dati della pagina. Operazione finale
    $output="";
    $output.=$tpl_alto;
    $output.=$tpl_news;
    $output.=$tpl_basso;
    echo 
    $output
    Ho semplicemente creato una nuova variabile e ho aggiunto in ordine i valori delle 3 parti.

    ----------------------------------------------------------------------

    Riepilogo di tutto il codice php:
    Codice PHP:
    // iniziamo con il prendere il testo dal file template con il fido implode()
    $input=implode("",file("index.tpl"));

    // dividiamo in 3 parti con il sommo explode()
    $temp=explode("<hr-tpl>",$input);

    // attribuiamo questo array a diverse variabili
    $tpl_alto=$temp["0"];
    $tpl_news_temp=$temp["1"];
    $tpl_basso=$temp["2"];

    // Settiamo la prima parte della pagina
    $title="Creazione di template dinamici! - by eX-Arus";
    $tpl_alto=str_replace("{title}"$title$tpl_alto);

    // Settiamo la seconda parte della pagina, la parte dinamica
    $tpl_news="";
    /*
    eventuale query al db mysql
    $action=mysql_query("SELECT * FROM db")
    */
    while ($array=mysql_fetch_array($action))
    {
            
    //attribuiamo alla varibile news la seconda parte di testo
            
    $news=$tpl_news_temp;
            
    //trasformiamo gli array
            
    $news_id=$array["news_id"]
            
    $news_titolo=$array["news_titolo"]
            
    //cambiamo le stringhe del template con le varibili
            
    $news=str_replace("{news_id}"$news_id$news);
            
    $news=str_replace("{news_title}"$news_title$news);
            
    //aggiungiamo questa parte di testo alla variabile finale
            
    $tpl_news.=$news;
    }

    // Settiamo la terza parte della pagina
    $autore="eX-Arus";
    $tpl_basso=str_replace("{autore}"$autore$tpl_basso);

    // Output dei dati della pagina. Operazione finale
    $output="";
    $output.=$tpl_alto;
    $output.=$tpl_news;
    $output.=$tpl_basso;
    echo 
    $output
    Ok, ho finito, spero di non avervi annoiato e di aver spiegato una cosa nuova ed interessante ^_^

    Grazie a tutti per la lettura, e se avete consiglio siete ben accetti!


    Ciao

  2. #2
    Utente bannato
    Registrato dal
    Aug 2001
    Messaggi
    696
    La aggiungo:metallica

    Un piccolo suggerimento per chi la legge:
    Prima di questa pillola conviene leggere l'articolo a cui faceva riferimento eX-Arus (anche se sono tecniche differenti) che si trova quì clicca e godi!

  3. #3
    Ma... è possibile applicare il metodo al sistema eval()? Quello è comodo perchè non è necessario scrivere un str_replace (o un ciclo) per ogni var da sostituire...

  4. #4
    Ciao, ho letto un po' la tua soluzione... Ebbene, è una soluzione che rimane ugualmente statica... Cioè, per ogni template è necessario un file php che sappia distinguere le parti statiche da quelle dinamiche.

    Io sto affrontando seriamente il problema dei template. Per me un file di template è un documento HTML che utilizza delle variabili generate da un PHP. Siano esse variabili semplici, array o oggetti. Il più un template deve poter prendere delle decisioni riguardo alla visualizzazione del suo contenuto.

    Una cosa fondamentale di un template è che sia editabile mediante un editor visuale come dreamweaver.... diciamo la verità... a me il template serve perchè so progrmmare ma non so fare grafica! X cui il mio grafico che non sa programmare ma è bravo con la grafica ha bisogno di dreamweaver!

    La soluzione che sto raggiungendo la trovate su www.xblueproject.com . Non è dedicata ai template, ma ad un intero ambiente di sviluppo per applicazioni web based.

    Non so ancora se metterlo open source oppure no. Vorrei guadagnarci qualcosa sopra ma allo stesso tempo vorrei metterlo a disposizione della gente... intanto andate a leggervi il manuale che sto costruendo (sono tutti template fatti con dreamweaver!) e se qualcuno è interessato (ma veramente) posso spiegargli il codice per via traverse!

    Ciao!
    By Pegoraro Marco
    http://adessoweb.biz- AdessoWEB - Siti web professionali a prezzo accessibile!
    http://consulenza-web.com- Il mio blog!

  5. #5
    lodi al tuo lavoro, ma un tempalte per come lo vedo io deve contenere solo html e dei "segna posto" dove andranno posizionati i contenuti dinamici.

    Perchè complicarsi la vita con un altro parser di istruzioni condizionali poste nel template, oltre tutto credo si perda in prestazioni.

    Ps. ho dato un'occhiata la volo al tuo lavoro, "riprendimi" pure se ho toppato.

  6. #6
    X il complicarsi la vita hai pienamente ragione... ma la risposta è che così io posso pensare solo ai programmi che girano dietro ai miei lavori e il grafico può pensare solo alla grafica... Non andiamo a romperci le scatole a vicenda...

    X le prestazioni... allo stato attuale delle cose il mio sistema è in grado di fornire supporto di template con funzionalità di interpretazione variabili (anche di oggetti), condizionali (anche complessi), rieptitori di liste con funzionalità di multiselezione elementi, modularizzazione dell'interfaccia mediante possibilità di inclusioni, interpretazione di TAG server side... Supporto multiskin integrato (skin intercambiabili durante la navigazione, supporto multilingua integrato (lingua intercambiabile durante la navigazione e editing ultrasemplice dei files di lingua) il tutto ovviamente editabile mediante editor visuale!!!

    Servono solo 2 righe x caricare l'ambiente in uno script... La configurazione è la cosa + semblice dell'universo... Interpreta e gestisce autonomamente un numero indefinito di files di configurazione aggiuntivi scritti in xml... con possibilità di codifica ed validazione dei dati automatica (cioè non devi fare funzioni tu x modificare i file... è il sistema ke si arrangia a scriversi le funzioni... ti gli dici "questa var è di testo, la voglio codificata in base64 e dev'essere una data...." roba così!!!

    Ok non è pubblicità visto ke in vendita non c'è niente... comunque tutto questo si carica in circa 0.05 secondi (sul mio pentium3 a 700Mhz 196Mb ram con win2k e svariate applicazioni che vanno in continuo.) Su un server il tempo cala ancora di più.... metterò la visualizzazione del tempo di caricamento.... e tieni conto che è il tempo che passa da quando viene eseguita la 4° riga di codice fino a quando lo richiami (solitamente in fondo al template)....

    Non sto dicendo tutto questo per bullarmi o altro... ho sviluppato sta cosa x vedre "se riuscivo a metterci meno tempo per iniziare un'applicazione"... adesso sta diventando un qualcosa di molto serio (Ah, dimenticavo il supporto database ovviamente! E' espandibile... praticamente si possono scrivere i driver x qualsiasi database).... E sinceramente non sarei neanche + capace di mettermi a scrivere dell'HTML in mezzo a del codice PHP!!!!

    Io scrivo i miei oggetti (Ah si, si programma tutto ad oggetti ovviamente) e il sistema li mette insieme....

    www.sin-italia.com (x quanto sia ancora scarno) è realizzato con la prima versione di xBlue... Adesso sto scrivendo xBlueII... www.xblueproject.com e sta diventanto molto + elastico e veloce. E' per questo che vorrei distribuire i sorgenti... solo che non vorrei farlo grati x tutti! Se qualcuno lo vuole per la sua community mi sta bene... ma se lo usa x fare un sito dove ci guadagna o direttamente x vendere un sito vorrei prenderci qualcosa!

    Anzi, vi prego di scrivermi x darmi consigli su come sarebbe meglio afforontare la cosa! Ho letto dei compilatori x php... ma non sarebbe + codice aperto!

    ThePeg.
    By Pegoraro Marco
    http://adessoweb.biz- AdessoWEB - Siti web professionali a prezzo accessibile!
    http://consulenza-web.com- Il mio blog!

  7. #7
    mi accodo alla tua richiesta di trovare una soluzione per un codice aperto, solo per chi lo usa per scopi non commerciali. Sono felice che qualcuno possa imparare dal mio lavoro, ma non guadagnarci. Sarò "antico"?!

    voglio sviluppare un pò di codice per la gestione di un sito personale, con quelle 5 o 6 classiche paginette, con le news e altre piccole utiliy. Naturalmente l'idea era quella di poter cambiare template al volo...ecco perche tanto interessamento.

    ciao

  8. #8
    In un articolo su freephp (forse proprio quello citato) ho letto che già esistono motori di rendering per la grafica delle pagine. Perchè lo stai rifacendo? Cosa ha in più questo rispetto ad altri?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  9. #9
    Perchè rifarlo?

    Beh, prima di tutto x sentirsi DIO del proprio lavoro.... E questa è la cosa ke penso spinga a spaccarsi le dita... Come seconda risposta: "perchè voglio vedere cosa riesco a fare". Terza risposta: "perchè ho delle esigenze specifiche"...

    E la quarta risposta è ke non lo sapevo e che non ho mai cercato!

    Me lo linki x favore?

    Grazie, ciao!
    By Pegoraro Marco
    http://adessoweb.biz- AdessoWEB - Siti web professionali a prezzo accessibile!
    http://consulenza-web.com- Il mio blog!

  10. #10
    Eccolo, alla fine ci sono i vari engine.

    freephp
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.